From 6d309d710c068a00e4e5c48b52f73c9f3b45fd8f Mon Sep 17 00:00:00 2001 From: wakemeup Date: Tue, 13 Oct 2026 22:02:22 +0200 Subject: [PATCH 1/4] fix(go): preserve S1764 operand diagnostic locations --- crates/hoonarqube-go/src/lib.rs | 167 ++++++++++++++++++++++++++++++-- 1 file changed, 158 insertions(+), 9 deletions(-) diff --git a/crates/hoonarqube-go/src/lib.rs b/crates/hoonarqube-go/src/lib.rs index f861adc4..d93b72c3 100644 --- a/crates/hoonarqube-go/src/lib.rs +++ b/crates/hoonarqube-go/src/lib.rs @@ -3398,15 +3398,23 @@ fn check_identical_operands( if matches!(operator, "+" | "*" | "<<") { return; } - let left = skip_parentheses(left); - let right = skip_parentheses(right); - if canonical_code(left, source) == canonical_code(right, source) { - issues.push(node_issue( - "go:S1764", - "Correct one of the identical sub-expressions on both sides of this operator.", - right, - source, - )); + // Normalize for equivalence, while the diagnostic retains both complete + // source operands, including their outer parentheses. + let comparable_left = skip_parentheses(left); + let comparable_right = skip_parentheses(right); + if canonical_code(comparable_left, source) == canonical_code(comparable_right, source) { + issues.push( + node_issue( + "go:S1764", + "Correct one of the identical sub-expressions on both sides of this operator.", + right, + source, + ) + .with_flow(vec![FlowLocation::in_primary_file( + "", + node_range(left, source), + )]), + ); } } @@ -5960,6 +5968,147 @@ mod tests { ); } + #[test] + fn s1764_matches_parenthesized_reference_primary_and_supporting_locations() { + let source = concat!( + "// Hoonarqube oracle fixture: go:S1764 bad\n", + "package oracle\n", + "\n", + "func main() {\n", + " v1 := (true && false) && (true && false) // Noncompliant\n", + "}\n", + ); + let report = analyze( + PathBuf::from("fixture.go"), + source, + &AnalyzerOptions::default(), + ); + let issues: Vec<_> = report + .issues + .iter() + .filter(|issue| issue.rule_key == "go:S1764") + .collect(); + assert_eq!(issues.len(), 1); + assert_eq!( + issues[0].message, + "Correct one of the identical sub-expressions on both sides of this operator." + ); + assert_eq!( + issues[0].range, + Range { + start: Pos { + line: 5, + column: 27 + }, + end: Pos { + line: 5, + column: 42 + }, + } + ); + assert_eq!( + issues[0].flows, + vec![hoonarqube_ir::IssueFlow { + locations: vec![FlowLocation::in_primary_file( + "", + Range { + start: Pos { line: 5, column: 8 }, + end: Pos { + line: 5, + column: 23 + }, + } + )], + }] + ); + assert!(issues[0].fix.is_none()); + assert!(issues[0].alternatives.is_empty()); + } + + #[test] + fn s1764_retains_outer_operand_ranges_for_nested_and_multiline_parentheses() { + for (expression, left_end, right_start, right_end_line, right_end_column) in [ + ("a == a", 9, 13, 3, 14), + ("a == (a)", 9, 13, 3, 16), + ("(a) == a", 11, 15, 3, 16), + ("((a)) == (((a)))", 13, 17, 3, 24), + ("( a ) == (( a ))", 13, 17, 3, 24), + ("a == (\n a)", 9, 13, 4, 4), + ("(a) == (\n ((a)))", 11, 15, 4, 8), + ] { + let source = format!("package p\nfunc f(a int) bool {{\n return {expression}\n}}\n"); + let report = analyze( + PathBuf::from("fixture.go"), + &source, + &AnalyzerOptions::default(), + ); + assert!( + report + .issues + .iter() + .all(|issue| issue.rule_key != "go:S2260"), + "comparison control must parse: {expression}" + ); + let issues: Vec<_> = report + .issues + .iter() + .filter(|issue| issue.rule_key == "go:S1764") + .collect(); + assert_eq!(issues.len(), 1, "{expression}"); + let expected = Issue::new( + "go:S1764", + "Correct one of the identical sub-expressions on both sides of this operator.", + Range { + start: Pos { + line: 3, + column: right_start, + }, + end: Pos { + line: right_end_line, + column: right_end_column, + }, + }, + ) + .with_flow(vec![FlowLocation::in_primary_file( + "", + Range { + start: Pos { line: 3, column: 8 }, + end: Pos { + line: 3, + column: left_end, + }, + }, + )]); + assert_eq!(*issues[0], expected, "{expression}"); + } + } + + #[test] + fn s1764_different_parenthesized_operands_remain_clean() { + for expression in [ + "a == (b)", + "((a)) != ((b))", + "((a + 1)) == (a + 2)", + "((a)) + (a)", + "(a) * ((a))", + "((a)) << ((a))", + ] { + let source = format!("package p\nfunc f(a, b int) {{\n _ = {expression}\n}}\n"); + let report = analyze( + PathBuf::from("fixture.go"), + &source, + &AnalyzerOptions::default(), + ); + assert!( + report + .issues + .iter() + .all(|issue| issue.rule_key != "go:S1764"), + "{expression}" + ); + } + } + #[test] fn s1764_exempts_idiomatic_operators() { let found = keys(concat!( From 40bcec74c65e8a31874551fcfefcd1d150d33432 Mon Sep 17 00:00:00 2001 From: wakemeup Date: Tue, 13 Oct 2026 22:36:32 +0200 Subject: [PATCH 2/4] test(go): expose independent S126 chains and terminal branch parity --- crates/hoonarqube-go/src/lib.rs | 7 +- crates/hoonarqube-go/src/s126_tests.rs | 196 +++++++++++++++++++++++++ 2 files changed, 201 insertions(+), 2 deletions(-) create mode 100644 crates/hoonarqube-go/src/s126_tests.rs diff --git a/crates/hoonarqube-go/src/lib.rs b/crates/hoonarqube-go/src/lib.rs index f861adc4..67e10459 100644 --- a/crates/hoonarqube-go/src/lib.rs +++ b/crates/hoonarqube-go/src/lib.rs @@ -4604,6 +4604,9 @@ fn relative_issue( ) } +#[cfg(test)] +mod s126_tests; + #[cfg(test)] mod tests { use super::*; @@ -6006,7 +6009,7 @@ mod tests { } #[test] - fn s126_reports_only_the_outermost_missing_else_chain() { + fn s126_reports_outer_chain_and_exempts_nested_return_chain() { let found = keys(concat!( "package p\n", "func pick(a, b, c bool) int {\n", @@ -6033,7 +6036,7 @@ mod tests { assert_eq!( found.iter().filter(|key| key.as_str() == "go:S126").count(), 2, - "outer chain and standalone chain fire; the nested chain does not: {found:?}" + "outer and standalone chains fire; all nested branches end in return: {found:?}" ); } diff --git a/crates/hoonarqube-go/src/s126_tests.rs b/crates/hoonarqube-go/src/s126_tests.rs new file mode 100644 index 00000000..5c6f418f --- /dev/null +++ b/crates/hoonarqube-go/src/s126_tests.rs @@ -0,0 +1,196 @@ +use super::{AnalyzerOptions, analyze}; +use std::path::PathBuf; + +const NESTED_IN_IF: &str = r#"package p +func nested(enabled bool, c rune) { + if enabled { + count := 0 + for { + if c == '{' { + count++ + } else if c == '}' { + count-- + if count == 0 { + break + } + } + } + } +} +"#; + +const NESTED_IN_BRANCHES: &str = r#"package p +func branches(a, b, c bool) { + if a { + if b { println(1) } else if c { println(2) } + } else { + if b { println(3) } else if c { println(4) } + } +} +"#; + +const NESTED_IN_INCOMPLETE_CHAIN: &str = r#"package p +func chains(a, b, c bool) { + if a { + println(1) + } else if b { + if c { println(2) } else if a { println(3) } + } +} +"#; + +const TERMINATING_BRANCHES: &str = r#"package p +func returning(a, b bool) int { + if a { return 1 } else if b { return 2; /* trailing comment */ } + return 0 +} +func jumping(a, b bool) { +outer: + for { + if a { break outer } else if b { continue outer } + break + } +} +func panicking(a, b bool) { + if a { panic("first") } else if b { panic("second"); /* trailing comment */ } +} +func mixed(a, b bool) { + for { + if a { return } else if b { panic("second") } else if !a { break } + break + } +} +"#; + +const NONTERMINATING_BRANCHES: &str = r#"package p +import "log" +func mixed(a, b bool) { + if a { return } else if b { println(1) } +} +func deferred(a, b bool) { + if a { defer panic("first") } else if b { defer panic("second") } +} +func qualified(a, b bool) { + if a { log.Panic("first") } else if b { log.Panic("second") } +} +func early(a, b bool) { + if a { return; println(1) } else if b { return } +} +func nestedReturn(a, b, c bool) { + if a { if c { return } else { return } } else if b { return } +} +func jumping(a, b bool) { + if a { goto done } else if b { goto done } +done: + println(1) +} +"#; + +const COMPLETE_CHAINS: &str = r#"package p +func complete(a, b, c bool) { + if a { + if b { println(1) } else if c { println(2) } else { /* no action */ } + } else if b { + println(3) + } else { /* no action */ } + if c { println(4) } +} +"#; + +fn findings(path: &str, source: &str) -> Vec { + let report = analyze(PathBuf::from(path), source, &AnalyzerOptions::default()); + assert!( + !report + .issues + .iter() + .any(|issue| issue.rule_key == "go:S2260"), + "S126 control must parse: {report:?}" + ); + report + .issues + .into_iter() + .filter(|issue| issue.rule_key == "go:S126") + .collect() +} + +#[test] +fn reports_chain_nested_in_standalone_if_at_last_else_if() { + let found = findings("nested.go", NESTED_IN_IF); + assert_eq!(found.len(), 1, "independent nested chain: {found:?}"); + assert_eq!(found[0].message, "Add the missing \"else\" clause."); + assert_eq!( + (found[0].range.start.line, found[0].range.start.column), + (8, 14) + ); + assert_eq!( + (found[0].range.end.line, found[0].range.end.column), + (8, 21) + ); +} + +#[test] +fn reports_independent_chains_in_both_branches() { + let found = findings("branches.go", NESTED_IN_BRANCHES); + assert_eq!(found.len(), 2, "both nested chains must report: {found:?}"); + assert_eq!( + found + .iter() + .map(|issue| issue.range.start.line) + .collect::>(), + [4, 6] + ); +} + +#[test] +fn reports_outer_and_independent_nested_incomplete_chains_once() { + let found = findings("chains.go", NESTED_IN_INCOMPLETE_CHAIN); + assert_eq!( + found.len(), + 2, + "each independent chain reports once: {found:?}" + ); + assert_eq!( + found + .iter() + .map(|issue| issue.range.start.line) + .collect::>(), + [5, 6] + ); +} + +#[test] +fn exempts_only_chains_with_a_terminal_statement_in_every_branch() { + let found = findings("terminating.go", TERMINATING_BRANCHES); + assert!( + found.is_empty(), + "return, break, continue and direct panic chains: {found:?}" + ); +} + +#[test] +fn preserves_nonterminal_and_nested_statement_boundaries() { + let found = findings("nonterminating.go", NONTERMINATING_BRANCHES); + assert_eq!( + found.len(), + 6, + "only the final direct statement can exempt a branch: {found:?}" + ); + assert_eq!( + found + .iter() + .map(|issue| issue.range.start.line) + .collect::>(), + [4, 7, 10, 13, 16, 19] + ); +} + +#[test] +fn permits_final_else_comments_and_single_if_statements() { + assert!(findings("complete.go", COMPLETE_CHAINS).is_empty()); +} + +#[test] +fn evaluates_independent_chains_in_test_sources() { + let found = findings("nested_test.go", NESTED_IN_IF); + assert_eq!(found.len(), 1, "S126 declares ALL scope: {found:?}"); +} From a68cebb6bf8aef88f1ee79427c7e294f06ba2047 Mon Sep 17 00:00:00 2001 From: wakemeup Date: Tue, 13 Oct 2026 22:56:17 +0200 Subject: [PATCH 3/4] fix(go): check independent S126 chains and terminal branches --- crates/hoonarqube-go/src/lib.rs | 49 +++++++++++++++++++------- crates/hoonarqube-go/src/s126_tests.rs | 16 ++++----- 2 files changed, 45 insertions(+), 20 deletions(-) diff --git a/crates/hoonarqube-go/src/lib.rs b/crates/hoonarqube-go/src/lib.rs index 67e10459..8c992a6a 100644 --- a/crates/hoonarqube-go/src/lib.rs +++ b/crates/hoonarqube-go/src/lib.rs @@ -3536,10 +3536,7 @@ fn check_if(node: Node<'_>, source: &str, issues: &mut Vec) { source, )); } - if node - .parent() - .is_some_and(|parent| parent.kind() == "if_statement") - { + if is_else_if(node) { return; } let chain = collect_if_chain(node, source, issues); @@ -3638,14 +3635,15 @@ fn report_if_chain_smells( source: &str, issues: &mut Vec, ) { - // SonarGo reports only the outermost if/else-if chain missing a final - // `else`; a chain head nested inside another if-chain's branch is not - // separately reported. Else-if members already returned in `check_if`, so - // any `if_statement` ancestor means this head sits inside a branch. - let nested_in_if_branch = ancestors(node) - .take_while(|ancestor| !is_function(*ancestor)) - .any(|ancestor| ancestor.kind() == "if_statement"); - if chain.condition_count > 1 && !chain.ends_with_else && !nested_in_if_branch { + // Each independent chain is checked, including chains inside another + // branch. Only actual else-if members are skipped by `check_if`. + // SonarGo exempts a chain when every branch's final direct statement is + // a return, break, continue, or an unqualified panic invocation. + let all_branches_terminate = chain + .branches + .iter() + .all(|(_, branch)| branch_ends_with_jump_or_panic(*branch, source)); + if chain.condition_count > 1 && !chain.ends_with_else && !all_branches_terminate { let range = nested_else_if_range(chain.last_if, source) .unwrap_or_else(|| node_range(chain.last_if, source)); issues.push(Issue::new( @@ -3678,6 +3676,33 @@ fn report_if_chain_smells( } } +fn branch_ends_with_jump_or_panic(branch: Node<'_>, source: &str) -> bool { + let Some(statements) = named_children(branch) + .into_iter() + .find(|child| child.kind() == "statement_list") + else { + return false; + }; + let Some(last) = named_children(statements) + .into_iter() + .rfind(|child| !matches!(child.kind(), "comment" | "empty_statement")) + else { + return false; + }; + match last.kind() { + "return_statement" | "break_statement" | "continue_statement" => true, + "expression_statement" => first_named(last).is_some_and(|expression| { + expression.kind() == "call_expression" + && expression + .child_by_field_name("function") + .is_some_and(|function| { + function.kind() == "identifier" && text(function, source) == "panic" + }) + }), + _ => false, + } +} + fn nested_else_if_range(last_if: Node<'_>, source: &str) -> Option { let parent = last_if.parent()?; if parent.kind() != "if_statement" diff --git a/crates/hoonarqube-go/src/s126_tests.rs b/crates/hoonarqube-go/src/s126_tests.rs index 5c6f418f..44c0f8a1 100644 --- a/crates/hoonarqube-go/src/s126_tests.rs +++ b/crates/hoonarqube-go/src/s126_tests.rs @@ -1,7 +1,7 @@ use super::{AnalyzerOptions, analyze}; use std::path::PathBuf; -const NESTED_IN_IF: &str = r#"package p +const NESTED_IN_IF: &str = r"package p func nested(enabled bool, c rune) { if enabled { count := 0 @@ -17,9 +17,9 @@ func nested(enabled bool, c rune) { } } } -"#; +"; -const NESTED_IN_BRANCHES: &str = r#"package p +const NESTED_IN_BRANCHES: &str = r"package p func branches(a, b, c bool) { if a { if b { println(1) } else if c { println(2) } @@ -27,9 +27,9 @@ func branches(a, b, c bool) { if b { println(3) } else if c { println(4) } } } -"#; +"; -const NESTED_IN_INCOMPLETE_CHAIN: &str = r#"package p +const NESTED_IN_INCOMPLETE_CHAIN: &str = r"package p func chains(a, b, c bool) { if a { println(1) @@ -37,7 +37,7 @@ func chains(a, b, c bool) { if c { println(2) } else if a { println(3) } } } -"#; +"; const TERMINATING_BRANCHES: &str = r#"package p func returning(a, b bool) int { @@ -86,7 +86,7 @@ done: } "#; -const COMPLETE_CHAINS: &str = r#"package p +const COMPLETE_CHAINS: &str = r"package p func complete(a, b, c bool) { if a { if b { println(1) } else if c { println(2) } else { /* no action */ } @@ -95,7 +95,7 @@ func complete(a, b, c bool) { } else { /* no action */ } if c { println(4) } } -"#; +"; fn findings(path: &str, source: &str) -> Vec { let report = analyze(PathBuf::from(path), source, &AnalyzerOptions::default()); From c130ad71f2fc9e0578726a6444186441bb941e14 Mon Sep 17 00:00:00 2001 From: wakemeup Date: Thu, 15 Oct 2026 21:17:32 +0200 Subject: [PATCH 4/4] test(go): compose inherited S126 boundary report expectations --- crates/hoonarqube-cli/tests/go_s134_supporting_locations.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/hoonarqube-cli/tests/go_s134_supporting_locations.rs b/crates/hoonarqube-cli/tests/go_s134_supporting_locations.rs index 8699168c..539aadfe 100644 --- a/crates/hoonarqube-cli/tests/go_s134_supporting_locations.rs +++ b/crates/hoonarqube-cli/tests/go_s134_supporting_locations.rs @@ -335,5 +335,5 @@ func NativeOptionsShallow(enabled bool, value int) { ), ]; -const EXPECTED_NATIVE: &str = r#"{"schema_version":1,"files":[{"path":"./01-mixed-ancestors/case.go","language":"go","issues":[{"rule_key":"go:S1151","message":"Reduce this case clause number of lines from 9 to at most 6, for example by extracting code into methods.","range":{"start":{"line":7,"column":3},"end":{"line":7,"column":10}}},{"rule_key":"go:S1821","message":"Refactor the code to eliminate this nested \"switch\".","range":{"start":{"line":8,"column":4},"end":{"line":8,"column":10}}},{"rule_key":"go:S134","message":"Refactor this code to not nest more than 4 control flow statements.","range":{"start":{"line":10,"column":5},"end":{"line":10,"column":7}},"flows":[{"locations":[{"message":"Nesting depth 1","range":{"start":{"line":4,"column":1},"end":{"line":4,"column":3}}}]},{"locations":[{"message":"Nesting depth 2","range":{"start":{"line":5,"column":2},"end":{"line":5,"column":5}}}]},{"locations":[{"message":"Nesting depth 3","range":{"start":{"line":6,"column":3},"end":{"line":6,"column":9}}}]},{"locations":[{"message":"Nesting depth 4","range":{"start":{"line":8,"column":4},"end":{"line":8,"column":10}}}]}]}],"metrics":{"lines":22,"code_lines":20,"comment_lines":0}},{"path":"./02-for-primary/case.go","language":"go","issues":[{"rule_key":"go:S1151","message":"Reduce this case clause number of lines from 8 to at most 6, for example by extracting code into methods.","range":{"start":{"line":6,"column":2},"end":{"line":6,"column":9}}},{"rule_key":"go:S134","message":"Refactor this code to not nest more than 4 control flow statements.","range":{"start":{"line":9,"column":5},"end":{"line":9,"column":8}},"flows":[{"locations":[{"message":"Nesting depth 1","range":{"start":{"line":4,"column":1},"end":{"line":4,"column":3}}}]},{"locations":[{"message":"Nesting depth 2","range":{"start":{"line":5,"column":2},"end":{"line":5,"column":8}}}]},{"locations":[{"message":"Nesting depth 3","range":{"start":{"line":7,"column":3},"end":{"line":7,"column":6}}}]},{"locations":[{"message":"Nesting depth 4","range":{"start":{"line":8,"column":4},"end":{"line":8,"column":6}}}]}]}],"metrics":{"lines":19,"code_lines":17,"comment_lines":0}},{"path":"./03-expression-switch-primary/case.go","language":"go","issues":[{"rule_key":"go:S134","message":"Refactor this code to not nest more than 4 control flow statements.","range":{"start":{"line":8,"column":5},"end":{"line":8,"column":11}},"flows":[{"locations":[{"message":"Nesting depth 1","range":{"start":{"line":4,"column":1},"end":{"line":4,"column":3}}}]},{"locations":[{"message":"Nesting depth 2","range":{"start":{"line":5,"column":2},"end":{"line":5,"column":4}}}]},{"locations":[{"message":"Nesting depth 3","range":{"start":{"line":6,"column":3},"end":{"line":6,"column":5}}}]},{"locations":[{"message":"Nesting depth 4","range":{"start":{"line":7,"column":4},"end":{"line":7,"column":6}}}]}]}],"metrics":{"lines":19,"code_lines":17,"comment_lines":0}},{"path":"./04-type-switch-primary/case.go","language":"go","issues":[{"rule_key":"go:S134","message":"Refactor this code to not nest more than 4 control flow statements.","range":{"start":{"line":8,"column":5},"end":{"line":8,"column":11}},"flows":[{"locations":[{"message":"Nesting depth 1","range":{"start":{"line":4,"column":1},"end":{"line":4,"column":3}}}]},{"locations":[{"message":"Nesting depth 2","range":{"start":{"line":5,"column":2},"end":{"line":5,"column":4}}}]},{"locations":[{"message":"Nesting depth 3","range":{"start":{"line":6,"column":3},"end":{"line":6,"column":5}}}]},{"locations":[{"message":"Nesting depth 4","range":{"start":{"line":7,"column":4},"end":{"line":7,"column":6}}}]}]}],"metrics":{"lines":19,"code_lines":17,"comment_lines":0}},{"path":"./05-effective-else-if/case.go","language":"go","issues":[{"rule_key":"go:S3776","message":"Refactor this method to reduce its Cognitive Complexity from 18 to the 15 allowed.","range":{"start":{"line":3,"column":5},"end":{"line":3,"column":20}},"flows":[{"locations":[{"message":"+1","range":{"start":{"line":4,"column":1},"end":{"line":4,"column":3}}}]},{"locations":[{"message":"+2 (incl 1 for nesting)","range":{"start":{"line":5,"column":2},"end":{"line":5,"column":5}}}]},{"locations":[{"message":"+3 (incl 2 for nesting)","range":{"start":{"line":6,"column":3},"end":{"line":6,"column":5}}}]},{"locations":[{"message":"+1","range":{"start":{"line":8,"column":5},"end":{"line":8,"column":9}}}]},{"locations":[{"message":"+1","range":{"start":{"line":16,"column":5},"end":{"line":16,"column":9}}}]},{"locations":[{"message":"+4 (incl 3 for nesting)","range":{"start":{"line":9,"column":4},"end":{"line":9,"column":6}}}]},{"locations":[{"message":"+1","range":{"start":{"line":11,"column":6},"end":{"line":11,"column":10}}}]},{"locations":[{"message":"+5 (incl 4 for nesting)","range":{"start":{"line":12,"column":5},"end":{"line":12,"column":7}}}]}]},{"rule_key":"go:S134","message":"Refactor this code to not nest more than 4 control flow statements.","range":{"start":{"line":12,"column":5},"end":{"line":12,"column":7}},"flows":[{"locations":[{"message":"Nesting depth 1","range":{"start":{"line":4,"column":1},"end":{"line":4,"column":3}}}]},{"locations":[{"message":"Nesting depth 2","range":{"start":{"line":5,"column":2},"end":{"line":5,"column":5}}}]},{"locations":[{"message":"Nesting depth 3","range":{"start":{"line":6,"column":3},"end":{"line":6,"column":5}}}]},{"locations":[{"message":"Nesting depth 4","range":{"start":{"line":9,"column":4},"end":{"line":9,"column":6}}}]}]}],"metrics":{"lines":22,"code_lines":20,"comment_lines":0}},{"path":"./06-transparent-literal/case.go","language":"go","issues":[{"rule_key":"go:S3776","message":"Refactor this method to reduce its Cognitive Complexity from 18 to the 15 allowed.","range":{"start":{"line":3,"column":5},"end":{"line":3,"column":23}},"flows":[{"locations":[{"message":"+1","range":{"start":{"line":4,"column":1},"end":{"line":4,"column":3}}}]},{"locations":[{"message":"+2 (incl 1 for nesting)","range":{"start":{"line":5,"column":2},"end":{"line":5,"column":5}}}]},{"locations":[{"message":"+4 (incl 3 for nesting)","range":{"start":{"line":7,"column":4},"end":{"line":7,"column":6}}}]},{"locations":[{"message":"+5 (incl 4 for nesting)","range":{"start":{"line":8,"column":5},"end":{"line":8,"column":7}}}]},{"locations":[{"message":"+6 (incl 5 for nesting)","range":{"start":{"line":9,"column":6},"end":{"line":9,"column":8}}}]}]},{"rule_key":"go:S134","message":"Refactor this code to not nest more than 4 control flow statements.","range":{"start":{"line":9,"column":6},"end":{"line":9,"column":8}},"flows":[{"locations":[{"message":"Nesting depth 1","range":{"start":{"line":4,"column":1},"end":{"line":4,"column":3}}}]},{"locations":[{"message":"Nesting depth 2","range":{"start":{"line":5,"column":2},"end":{"line":5,"column":5}}}]},{"locations":[{"message":"Nesting depth 3","range":{"start":{"line":7,"column":4},"end":{"line":7,"column":6}}}]},{"locations":[{"message":"Nesting depth 4","range":{"start":{"line":8,"column":5},"end":{"line":8,"column":7}}}]}]}],"metrics":{"lines":18,"code_lines":16,"comment_lines":0}},{"path":"./07-named-sibling-isolation/case.go","language":"go","issues":[{"rule_key":"go:S134","message":"Refactor this code to not nest more than 4 control flow statements.","range":{"start":{"line":8,"column":5},"end":{"line":8,"column":7}},"flows":[{"locations":[{"message":"Nesting depth 1","range":{"start":{"line":4,"column":1},"end":{"line":4,"column":3}}}]},{"locations":[{"message":"Nesting depth 2","range":{"start":{"line":5,"column":2},"end":{"line":5,"column":4}}}]},{"locations":[{"message":"Nesting depth 3","range":{"start":{"line":6,"column":3},"end":{"line":6,"column":5}}}]},{"locations":[{"message":"Nesting depth 4","range":{"start":{"line":7,"column":4},"end":{"line":7,"column":6}}}]}]}],"metrics":{"lines":44,"code_lines":39,"comment_lines":0}},{"path":"./08-threshold-and-deeper/case.go","language":"go","issues":[{"rule_key":"go:S134","message":"Refactor this code to not nest more than 4 control flow statements.","range":{"start":{"line":20,"column":5},"end":{"line":20,"column":7}},"flows":[{"locations":[{"message":"Nesting depth 1","range":{"start":{"line":16,"column":1},"end":{"line":16,"column":3}}}]},{"locations":[{"message":"Nesting depth 2","range":{"start":{"line":17,"column":2},"end":{"line":17,"column":4}}}]},{"locations":[{"message":"Nesting depth 3","range":{"start":{"line":18,"column":3},"end":{"line":18,"column":5}}}]},{"locations":[{"message":"Nesting depth 4","range":{"start":{"line":19,"column":4},"end":{"line":19,"column":6}}}]}]},{"rule_key":"go:S3776","message":"Refactor this method to reduce its Cognitive Complexity from 28 to the 15 allowed.","range":{"start":{"line":29,"column":5},"end":{"line":29,"column":16}},"flows":[{"locations":[{"message":"+1","range":{"start":{"line":30,"column":1},"end":{"line":30,"column":3}}}]},{"locations":[{"message":"+2 (incl 1 for nesting)","range":{"start":{"line":31,"column":2},"end":{"line":31,"column":4}}}]},{"locations":[{"message":"+3 (incl 2 for nesting)","range":{"start":{"line":32,"column":3},"end":{"line":32,"column":5}}}]},{"locations":[{"message":"+4 (incl 3 for nesting)","range":{"start":{"line":33,"column":4},"end":{"line":33,"column":6}}}]},{"locations":[{"message":"+5 (incl 4 for nesting)","range":{"start":{"line":34,"column":5},"end":{"line":34,"column":7}}}]},{"locations":[{"message":"+6 (incl 5 for nesting)","range":{"start":{"line":35,"column":6},"end":{"line":35,"column":8}}}]},{"locations":[{"message":"+7 (incl 6 for nesting)","range":{"start":{"line":36,"column":7},"end":{"line":36,"column":9}}}]}]},{"rule_key":"go:S134","message":"Refactor this code to not nest more than 4 control flow statements.","range":{"start":{"line":34,"column":5},"end":{"line":34,"column":7}},"flows":[{"locations":[{"message":"Nesting depth 1","range":{"start":{"line":30,"column":1},"end":{"line":30,"column":3}}}]},{"locations":[{"message":"Nesting depth 2","range":{"start":{"line":31,"column":2},"end":{"line":31,"column":4}}}]},{"locations":[{"message":"Nesting depth 3","range":{"start":{"line":32,"column":3},"end":{"line":32,"column":5}}}]},{"locations":[{"message":"Nesting depth 4","range":{"start":{"line":33,"column":4},"end":{"line":33,"column":6}}}]}]}],"metrics":{"lines":46,"code_lines":42,"comment_lines":0}},{"path":"./09-unicode-crlf/case.go","language":"go","issues":[{"rule_key":"go:S122","message":"Reformat the code to have only one statement per line.","range":{"start":{"line":4,"column":11},"end":{"line":4,"column":110}}},{"rule_key":"go:S134","message":"Refactor this code to not nest more than 4 control flow statements.","range":{"start":{"line":4,"column":71},"end":{"line":4,"column":73}},"flows":[{"locations":[{"message":"Nesting depth 1","range":{"start":{"line":4,"column":11},"end":{"line":4,"column":13}}}]},{"locations":[{"message":"Nesting depth 2","range":{"start":{"line":4,"column":26},"end":{"line":4,"column":28}}}]},{"locations":[{"message":"Nesting depth 3","range":{"start":{"line":4,"column":41},"end":{"line":4,"column":43}}}]},{"locations":[{"message":"Nesting depth 4","range":{"start":{"line":4,"column":56},"end":{"line":4,"column":58}}}]}]}],"metrics":{"lines":6,"code_lines":4,"comment_lines":0}},{"path":"./10-native-options-shallow/case.go","language":"go","issues":[],"metrics":{"lines":10,"code_lines":8,"comment_lines":0}}],"project":{"metrics":{"files":10,"lines":225,"code_lines":200,"comment_lines":0},"files":[{"path":"./01-mixed-ancestors/case.go","classification":"source","status":"complete","metrics":{"lines":22,"code_lines":20,"comment_lines":0},"duplication":{"duplicated_lines":0,"duplicated_blocks":0,"duplicated_files":0,"duplicated_lines_density":0.0},"reason":null},{"path":"./02-for-primary/case.go","classification":"source","status":"complete","metrics":{"lines":19,"code_lines":17,"comment_lines":0},"duplication":{"duplicated_lines":0,"duplicated_blocks":0,"duplicated_files":0,"duplicated_lines_density":0.0},"reason":null},{"path":"./03-expression-switch-primary/case.go","classification":"source","status":"complete","metrics":{"lines":19,"code_lines":17,"comment_lines":0},"duplication":{"duplicated_lines":0,"duplicated_blocks":0,"duplicated_files":0,"duplicated_lines_density":0.0},"reason":null},{"path":"./04-type-switch-primary/case.go","classification":"source","status":"complete","metrics":{"lines":19,"code_lines":17,"comment_lines":0},"duplication":{"duplicated_lines":0,"duplicated_blocks":0,"duplicated_files":0,"duplicated_lines_density":0.0},"reason":null},{"path":"./05-effective-else-if/case.go","classification":"source","status":"complete","metrics":{"lines":22,"code_lines":20,"comment_lines":0},"duplication":{"duplicated_lines":0,"duplicated_blocks":0,"duplicated_files":0,"duplicated_lines_density":0.0},"reason":null},{"path":"./06-transparent-literal/case.go","classification":"source","status":"complete","metrics":{"lines":18,"code_lines":16,"comment_lines":0},"duplication":{"duplicated_lines":0,"duplicated_blocks":0,"duplicated_files":0,"duplicated_lines_density":0.0},"reason":null},{"path":"./07-named-sibling-isolation/case.go","classification":"source","status":"complete","metrics":{"lines":44,"code_lines":39,"comment_lines":0},"duplication":{"duplicated_lines":0,"duplicated_blocks":0,"duplicated_files":0,"duplicated_lines_density":0.0},"reason":null},{"path":"./08-threshold-and-deeper/case.go","classification":"source","status":"complete","metrics":{"lines":46,"code_lines":42,"comment_lines":0},"duplication":{"duplicated_lines":0,"duplicated_blocks":0,"duplicated_files":0,"duplicated_lines_density":0.0},"reason":null},{"path":"./09-unicode-crlf/case.go","classification":"source","status":"complete","metrics":{"lines":6,"code_lines":4,"comment_lines":0},"duplication":{"duplicated_lines":0,"duplicated_blocks":0,"duplicated_files":0,"duplicated_lines_density":0.0},"reason":null},{"path":"./10-native-options-shallow/case.go","classification":"source","status":"complete","metrics":{"lines":10,"code_lines":8,"comment_lines":0},"duplication":{"duplicated_lines":0,"duplicated_blocks":0,"duplicated_files":0,"duplicated_lines_density":0.0},"reason":null}],"duplications":[],"duplication":{"duplicated_lines":0,"duplicated_blocks":0,"duplicated_files":0,"duplicated_lines_density":0.0},"complete":true,"warnings":[],"roots":["."]},"parity":{"reference":{"sonarqube_version":"2025.4.4.119049","profile":"sonar-parity","captured_at_utc":"2026-08-22T14:45:03.705491626Z","capture_sha256":"f423f0d8b8001af94dbf28bb8e3af368702447a9318b1200650cb3f9b3a332f0"},"active_rules":[{"key":"go:S100","parameters":[{"key":"formatForTests","default_value":"^(_|[a-zA-Z0-9_]+)$","parameter_type":"STRING"},{"key":"format","default_value":"^(_|[a-zA-Z0-9]+)$","parameter_type":"STRING"}],"fidelity":"community-base"},{"key":"go:S103","parameters":[{"key":"maximumLineLength","default_value":"120","parameter_type":"INTEGER"}],"fidelity":"community-base"},{"key":"go:S104","parameters":[{"key":"Max","default_value":"750","parameter_type":"INTEGER"}],"fidelity":"community-base"},{"key":"go:S1067","parameters":[{"key":"max","default_value":"3","parameter_type":"INTEGER"}],"fidelity":"community-base"},{"key":"go:S107","parameters":[{"key":"Max","default_value":"7","parameter_type":"INTEGER"}],"fidelity":"community-base"},{"key":"go:S108","parameters":[],"fidelity":"community-base"},{"key":"go:S1110","parameters":[],"fidelity":"community-base"},{"key":"go:S1125","parameters":[],"fidelity":"community-base"},{"key":"go:S1134","parameters":[],"fidelity":"community-base"},{"key":"go:S1135","parameters":[],"fidelity":"community-base"},{"key":"go:S1145","parameters":[],"fidelity":"community-base"},{"key":"go:S1151","parameters":[{"key":"max","default_value":"6","parameter_type":"INTEGER"}],"fidelity":"community-base"},{"key":"go:S117","parameters":[{"key":"format","default_value":"^(_|[a-zA-Z0-9]+)$","parameter_type":"STRING"}],"fidelity":"community-base"},{"key":"go:S1186","parameters":[],"fidelity":"community-base"},{"key":"go:S1192","parameters":[{"key":"threshold","default_value":"3","parameter_type":"INTEGER"}],"fidelity":"community-base"},{"key":"go:S122","parameters":[],"fidelity":"community-base"},{"key":"go:S126","parameters":[],"fidelity":"community-base"},{"key":"go:S131","parameters":[],"fidelity":"community-base"},{"key":"go:S1314","parameters":[],"fidelity":"community-base"},{"key":"go:S134","parameters":[{"key":"max","default_value":"4","parameter_type":"INTEGER"}],"fidelity":"community-base"},{"key":"go:S138","parameters":[{"key":"max","default_value":"120","parameter_type":"INTEGER"}],"fidelity":"community-base"},{"key":"go:S1451","parameters":[{"key":"headerFormat","parameter_type":"TEXT"},{"key":"isRegularExpression","default_value":"false","parameter_type":"BOOLEAN"}],"fidelity":"community-base"},{"key":"go:S1479","parameters":[{"key":"maximum","default_value":"30","parameter_type":"INTEGER"}],"fidelity":"community-base"},{"key":"go:S1656","parameters":[],"fidelity":"community-base"},{"key":"go:S1763","parameters":[],"fidelity":"community-base"},{"key":"go:S1764","parameters":[],"fidelity":"community-base"},{"key":"go:S1821","parameters":[],"fidelity":"community-base"},{"key":"go:S1862","parameters":[],"fidelity":"community-base"},{"key":"go:S1871","parameters":[],"fidelity":"community-base"},{"key":"go:S1940","parameters":[],"fidelity":"community-base"},{"key":"go:S2260","parameters":[],"fidelity":"community-base"},{"key":"go:S2757","parameters":[],"fidelity":"community-base"},{"key":"go:S3776","parameters":[{"key":"threshold","default_value":"15","parameter_type":"INTEGER"}],"fidelity":"community-base"},{"key":"go:S3923","parameters":[],"fidelity":"community-base"},{"key":"go:S4144","parameters":[],"fidelity":"community-base"},{"key":"go:S4663","parameters":[],"fidelity":"community-base"}],"scope":{"roots":["."],"test_include":[],"exclude":[],"generated_include":[],"vendor_include":[],"duplication_exclude":[],"file_counts":{"excluded":0,"generated":0,"source":10,"test":0,"vendor":0}},"semantic_context":{"typescript":"not_applicable","csharp":"not_applicable"},"completeness":"complete_native_analysis","rule_set_violations":[]}}"#; -const EXPECTED_GENERIC: &str = r#"{"issues":[{"primaryLocation":{"filePath":"./01-mixed-ancestors/case.go","message":"Reduce this case clause number of lines from 9 to at most 6, for example by extracting code into methods.","textRange":{"endColumn":10,"endLine":7,"startColumn":3,"startLine":7}},"ruleId":"go:S1151"},{"primaryLocation":{"filePath":"./01-mixed-ancestors/case.go","message":"Refactor the code to eliminate this nested \"switch\".","textRange":{"endColumn":10,"endLine":8,"startColumn":4,"startLine":8}},"ruleId":"go:S1821"},{"primaryLocation":{"filePath":"./01-mixed-ancestors/case.go","message":"Refactor this code to not nest more than 4 control flow statements.","textRange":{"endColumn":7,"endLine":10,"startColumn":5,"startLine":10}},"ruleId":"go:S134","secondaryLocations":[{"filePath":"./01-mixed-ancestors/case.go","message":"Nesting depth 1","textRange":{"startLine":4,"startColumn":1,"endLine":4,"endColumn":3}},{"filePath":"./01-mixed-ancestors/case.go","message":"Nesting depth 2","textRange":{"startLine":5,"startColumn":2,"endLine":5,"endColumn":5}},{"filePath":"./01-mixed-ancestors/case.go","message":"Nesting depth 3","textRange":{"startLine":6,"startColumn":3,"endLine":6,"endColumn":9}},{"filePath":"./01-mixed-ancestors/case.go","message":"Nesting depth 4","textRange":{"startLine":8,"startColumn":4,"endLine":8,"endColumn":10}}]},{"primaryLocation":{"filePath":"./02-for-primary/case.go","message":"Reduce this case clause number of lines from 8 to at most 6, for example by extracting code into methods.","textRange":{"endColumn":9,"endLine":6,"startColumn":2,"startLine":6}},"ruleId":"go:S1151"},{"primaryLocation":{"filePath":"./02-for-primary/case.go","message":"Refactor this code to not nest more than 4 control flow statements.","textRange":{"endColumn":8,"endLine":9,"startColumn":5,"startLine":9}},"ruleId":"go:S134","secondaryLocations":[{"filePath":"./02-for-primary/case.go","message":"Nesting depth 1","textRange":{"startLine":4,"startColumn":1,"endLine":4,"endColumn":3}},{"filePath":"./02-for-primary/case.go","message":"Nesting depth 2","textRange":{"startLine":5,"startColumn":2,"endLine":5,"endColumn":8}},{"filePath":"./02-for-primary/case.go","message":"Nesting depth 3","textRange":{"startLine":7,"startColumn":3,"endLine":7,"endColumn":6}},{"filePath":"./02-for-primary/case.go","message":"Nesting depth 4","textRange":{"startLine":8,"startColumn":4,"endLine":8,"endColumn":6}}]},{"primaryLocation":{"filePath":"./03-expression-switch-primary/case.go","message":"Refactor this code to not nest more than 4 control flow statements.","textRange":{"endColumn":11,"endLine":8,"startColumn":5,"startLine":8}},"ruleId":"go:S134","secondaryLocations":[{"filePath":"./03-expression-switch-primary/case.go","message":"Nesting depth 1","textRange":{"startLine":4,"startColumn":1,"endLine":4,"endColumn":3}},{"filePath":"./03-expression-switch-primary/case.go","message":"Nesting depth 2","textRange":{"startLine":5,"startColumn":2,"endLine":5,"endColumn":4}},{"filePath":"./03-expression-switch-primary/case.go","message":"Nesting depth 3","textRange":{"startLine":6,"startColumn":3,"endLine":6,"endColumn":5}},{"filePath":"./03-expression-switch-primary/case.go","message":"Nesting depth 4","textRange":{"startLine":7,"startColumn":4,"endLine":7,"endColumn":6}}]},{"primaryLocation":{"filePath":"./04-type-switch-primary/case.go","message":"Refactor this code to not nest more than 4 control flow statements.","textRange":{"endColumn":11,"endLine":8,"startColumn":5,"startLine":8}},"ruleId":"go:S134","secondaryLocations":[{"filePath":"./04-type-switch-primary/case.go","message":"Nesting depth 1","textRange":{"startLine":4,"startColumn":1,"endLine":4,"endColumn":3}},{"filePath":"./04-type-switch-primary/case.go","message":"Nesting depth 2","textRange":{"startLine":5,"startColumn":2,"endLine":5,"endColumn":4}},{"filePath":"./04-type-switch-primary/case.go","message":"Nesting depth 3","textRange":{"startLine":6,"startColumn":3,"endLine":6,"endColumn":5}},{"filePath":"./04-type-switch-primary/case.go","message":"Nesting depth 4","textRange":{"startLine":7,"startColumn":4,"endLine":7,"endColumn":6}}]},{"primaryLocation":{"filePath":"./05-effective-else-if/case.go","message":"Refactor this method to reduce its Cognitive Complexity from 18 to the 15 allowed.","textRange":{"endColumn":20,"endLine":3,"startColumn":5,"startLine":3}},"ruleId":"go:S3776","secondaryLocations":[{"filePath":"./05-effective-else-if/case.go","message":"+1","textRange":{"endColumn":3,"endLine":4,"startColumn":1,"startLine":4}},{"filePath":"./05-effective-else-if/case.go","message":"+2 (incl 1 for nesting)","textRange":{"endColumn":5,"endLine":5,"startColumn":2,"startLine":5}},{"filePath":"./05-effective-else-if/case.go","message":"+3 (incl 2 for nesting)","textRange":{"endColumn":5,"endLine":6,"startColumn":3,"startLine":6}},{"filePath":"./05-effective-else-if/case.go","message":"+1","textRange":{"endColumn":9,"endLine":8,"startColumn":5,"startLine":8}},{"filePath":"./05-effective-else-if/case.go","message":"+1","textRange":{"endColumn":9,"endLine":16,"startColumn":5,"startLine":16}},{"filePath":"./05-effective-else-if/case.go","message":"+4 (incl 3 for nesting)","textRange":{"endColumn":6,"endLine":9,"startColumn":4,"startLine":9}},{"filePath":"./05-effective-else-if/case.go","message":"+1","textRange":{"endColumn":10,"endLine":11,"startColumn":6,"startLine":11}},{"filePath":"./05-effective-else-if/case.go","message":"+5 (incl 4 for nesting)","textRange":{"endColumn":7,"endLine":12,"startColumn":5,"startLine":12}}]},{"primaryLocation":{"filePath":"./05-effective-else-if/case.go","message":"Refactor this code to not nest more than 4 control flow statements.","textRange":{"endColumn":7,"endLine":12,"startColumn":5,"startLine":12}},"ruleId":"go:S134","secondaryLocations":[{"filePath":"./05-effective-else-if/case.go","message":"Nesting depth 1","textRange":{"startLine":4,"startColumn":1,"endLine":4,"endColumn":3}},{"filePath":"./05-effective-else-if/case.go","message":"Nesting depth 2","textRange":{"startLine":5,"startColumn":2,"endLine":5,"endColumn":5}},{"filePath":"./05-effective-else-if/case.go","message":"Nesting depth 3","textRange":{"startLine":6,"startColumn":3,"endLine":6,"endColumn":5}},{"filePath":"./05-effective-else-if/case.go","message":"Nesting depth 4","textRange":{"startLine":9,"startColumn":4,"endLine":9,"endColumn":6}}]},{"primaryLocation":{"filePath":"./06-transparent-literal/case.go","message":"Refactor this method to reduce its Cognitive Complexity from 18 to the 15 allowed.","textRange":{"endColumn":23,"endLine":3,"startColumn":5,"startLine":3}},"ruleId":"go:S3776","secondaryLocations":[{"filePath":"./06-transparent-literal/case.go","message":"+1","textRange":{"endColumn":3,"endLine":4,"startColumn":1,"startLine":4}},{"filePath":"./06-transparent-literal/case.go","message":"+2 (incl 1 for nesting)","textRange":{"endColumn":5,"endLine":5,"startColumn":2,"startLine":5}},{"filePath":"./06-transparent-literal/case.go","message":"+4 (incl 3 for nesting)","textRange":{"endColumn":6,"endLine":7,"startColumn":4,"startLine":7}},{"filePath":"./06-transparent-literal/case.go","message":"+5 (incl 4 for nesting)","textRange":{"endColumn":7,"endLine":8,"startColumn":5,"startLine":8}},{"filePath":"./06-transparent-literal/case.go","message":"+6 (incl 5 for nesting)","textRange":{"endColumn":8,"endLine":9,"startColumn":6,"startLine":9}}]},{"primaryLocation":{"filePath":"./06-transparent-literal/case.go","message":"Refactor this code to not nest more than 4 control flow statements.","textRange":{"endColumn":8,"endLine":9,"startColumn":6,"startLine":9}},"ruleId":"go:S134","secondaryLocations":[{"filePath":"./06-transparent-literal/case.go","message":"Nesting depth 1","textRange":{"startLine":4,"startColumn":1,"endLine":4,"endColumn":3}},{"filePath":"./06-transparent-literal/case.go","message":"Nesting depth 2","textRange":{"startLine":5,"startColumn":2,"endLine":5,"endColumn":5}},{"filePath":"./06-transparent-literal/case.go","message":"Nesting depth 3","textRange":{"startLine":7,"startColumn":4,"endLine":7,"endColumn":6}},{"filePath":"./06-transparent-literal/case.go","message":"Nesting depth 4","textRange":{"startLine":8,"startColumn":5,"endLine":8,"endColumn":7}}]},{"primaryLocation":{"filePath":"./07-named-sibling-isolation/case.go","message":"Refactor this code to not nest more than 4 control flow statements.","textRange":{"endColumn":7,"endLine":8,"startColumn":5,"startLine":8}},"ruleId":"go:S134","secondaryLocations":[{"filePath":"./07-named-sibling-isolation/case.go","message":"Nesting depth 1","textRange":{"startLine":4,"startColumn":1,"endLine":4,"endColumn":3}},{"filePath":"./07-named-sibling-isolation/case.go","message":"Nesting depth 2","textRange":{"startLine":5,"startColumn":2,"endLine":5,"endColumn":4}},{"filePath":"./07-named-sibling-isolation/case.go","message":"Nesting depth 3","textRange":{"startLine":6,"startColumn":3,"endLine":6,"endColumn":5}},{"filePath":"./07-named-sibling-isolation/case.go","message":"Nesting depth 4","textRange":{"startLine":7,"startColumn":4,"endLine":7,"endColumn":6}}]},{"primaryLocation":{"filePath":"./08-threshold-and-deeper/case.go","message":"Refactor this code to not nest more than 4 control flow statements.","textRange":{"endColumn":7,"endLine":20,"startColumn":5,"startLine":20}},"ruleId":"go:S134","secondaryLocations":[{"filePath":"./08-threshold-and-deeper/case.go","message":"Nesting depth 1","textRange":{"startLine":16,"startColumn":1,"endLine":16,"endColumn":3}},{"filePath":"./08-threshold-and-deeper/case.go","message":"Nesting depth 2","textRange":{"startLine":17,"startColumn":2,"endLine":17,"endColumn":4}},{"filePath":"./08-threshold-and-deeper/case.go","message":"Nesting depth 3","textRange":{"startLine":18,"startColumn":3,"endLine":18,"endColumn":5}},{"filePath":"./08-threshold-and-deeper/case.go","message":"Nesting depth 4","textRange":{"startLine":19,"startColumn":4,"endLine":19,"endColumn":6}}]},{"primaryLocation":{"filePath":"./08-threshold-and-deeper/case.go","message":"Refactor this method to reduce its Cognitive Complexity from 28 to the 15 allowed.","textRange":{"endColumn":16,"endLine":29,"startColumn":5,"startLine":29}},"ruleId":"go:S3776","secondaryLocations":[{"filePath":"./08-threshold-and-deeper/case.go","message":"+1","textRange":{"endColumn":3,"endLine":30,"startColumn":1,"startLine":30}},{"filePath":"./08-threshold-and-deeper/case.go","message":"+2 (incl 1 for nesting)","textRange":{"endColumn":4,"endLine":31,"startColumn":2,"startLine":31}},{"filePath":"./08-threshold-and-deeper/case.go","message":"+3 (incl 2 for nesting)","textRange":{"endColumn":5,"endLine":32,"startColumn":3,"startLine":32}},{"filePath":"./08-threshold-and-deeper/case.go","message":"+4 (incl 3 for nesting)","textRange":{"endColumn":6,"endLine":33,"startColumn":4,"startLine":33}},{"filePath":"./08-threshold-and-deeper/case.go","message":"+5 (incl 4 for nesting)","textRange":{"endColumn":7,"endLine":34,"startColumn":5,"startLine":34}},{"filePath":"./08-threshold-and-deeper/case.go","message":"+6 (incl 5 for nesting)","textRange":{"endColumn":8,"endLine":35,"startColumn":6,"startLine":35}},{"filePath":"./08-threshold-and-deeper/case.go","message":"+7 (incl 6 for nesting)","textRange":{"endColumn":9,"endLine":36,"startColumn":7,"startLine":36}}]},{"primaryLocation":{"filePath":"./08-threshold-and-deeper/case.go","message":"Refactor this code to not nest more than 4 control flow statements.","textRange":{"endColumn":7,"endLine":34,"startColumn":5,"startLine":34}},"ruleId":"go:S134","secondaryLocations":[{"filePath":"./08-threshold-and-deeper/case.go","message":"Nesting depth 1","textRange":{"startLine":30,"startColumn":1,"endLine":30,"endColumn":3}},{"filePath":"./08-threshold-and-deeper/case.go","message":"Nesting depth 2","textRange":{"startLine":31,"startColumn":2,"endLine":31,"endColumn":4}},{"filePath":"./08-threshold-and-deeper/case.go","message":"Nesting depth 3","textRange":{"startLine":32,"startColumn":3,"endLine":32,"endColumn":5}},{"filePath":"./08-threshold-and-deeper/case.go","message":"Nesting depth 4","textRange":{"startLine":33,"startColumn":4,"endLine":33,"endColumn":6}}]},{"primaryLocation":{"filePath":"./09-unicode-crlf/case.go","message":"Reformat the code to have only one statement per line.","textRange":{"endColumn":111,"endLine":4,"startColumn":12,"startLine":4}},"ruleId":"go:S122"},{"primaryLocation":{"filePath":"./09-unicode-crlf/case.go","message":"Refactor this code to not nest more than 4 control flow statements.","textRange":{"endColumn":74,"endLine":4,"startColumn":72,"startLine":4}},"ruleId":"go:S134","secondaryLocations":[{"filePath":"./09-unicode-crlf/case.go","message":"Nesting depth 1","textRange":{"startLine":4,"startColumn":12,"endLine":4,"endColumn":14}},{"filePath":"./09-unicode-crlf/case.go","message":"Nesting depth 2","textRange":{"startLine":4,"startColumn":27,"endLine":4,"endColumn":29}},{"filePath":"./09-unicode-crlf/case.go","message":"Nesting depth 3","textRange":{"startLine":4,"startColumn":42,"endLine":4,"endColumn":44}},{"filePath":"./09-unicode-crlf/case.go","message":"Nesting depth 4","textRange":{"startLine":4,"startColumn":57,"endLine":4,"endColumn":59}}]}],"parity":{"active_rules":[{"fidelity":"community-base","key":"go:S100","parameters":[{"default_value":"^(_|[a-zA-Z0-9_]+)$","key":"formatForTests","parameter_type":"STRING"},{"default_value":"^(_|[a-zA-Z0-9]+)$","key":"format","parameter_type":"STRING"}]},{"fidelity":"community-base","key":"go:S103","parameters":[{"default_value":"120","key":"maximumLineLength","parameter_type":"INTEGER"}]},{"fidelity":"community-base","key":"go:S104","parameters":[{"default_value":"750","key":"Max","parameter_type":"INTEGER"}]},{"fidelity":"community-base","key":"go:S1067","parameters":[{"default_value":"3","key":"max","parameter_type":"INTEGER"}]},{"fidelity":"community-base","key":"go:S107","parameters":[{"default_value":"7","key":"Max","parameter_type":"INTEGER"}]},{"fidelity":"community-base","key":"go:S108","parameters":[]},{"fidelity":"community-base","key":"go:S1110","parameters":[]},{"fidelity":"community-base","key":"go:S1125","parameters":[]},{"fidelity":"community-base","key":"go:S1134","parameters":[]},{"fidelity":"community-base","key":"go:S1135","parameters":[]},{"fidelity":"community-base","key":"go:S1145","parameters":[]},{"fidelity":"community-base","key":"go:S1151","parameters":[{"default_value":"6","key":"max","parameter_type":"INTEGER"}]},{"fidelity":"community-base","key":"go:S117","parameters":[{"default_value":"^(_|[a-zA-Z0-9]+)$","key":"format","parameter_type":"STRING"}]},{"fidelity":"community-base","key":"go:S1186","parameters":[]},{"fidelity":"community-base","key":"go:S1192","parameters":[{"default_value":"3","key":"threshold","parameter_type":"INTEGER"}]},{"fidelity":"community-base","key":"go:S122","parameters":[]},{"fidelity":"community-base","key":"go:S126","parameters":[]},{"fidelity":"community-base","key":"go:S131","parameters":[]},{"fidelity":"community-base","key":"go:S1314","parameters":[]},{"fidelity":"community-base","key":"go:S134","parameters":[{"default_value":"4","key":"max","parameter_type":"INTEGER"}]},{"fidelity":"community-base","key":"go:S138","parameters":[{"default_value":"120","key":"max","parameter_type":"INTEGER"}]},{"fidelity":"community-base","key":"go:S1451","parameters":[{"key":"headerFormat","parameter_type":"TEXT"},{"default_value":"false","key":"isRegularExpression","parameter_type":"BOOLEAN"}]},{"fidelity":"community-base","key":"go:S1479","parameters":[{"default_value":"30","key":"maximum","parameter_type":"INTEGER"}]},{"fidelity":"community-base","key":"go:S1656","parameters":[]},{"fidelity":"community-base","key":"go:S1763","parameters":[]},{"fidelity":"community-base","key":"go:S1764","parameters":[]},{"fidelity":"community-base","key":"go:S1821","parameters":[]},{"fidelity":"community-base","key":"go:S1862","parameters":[]},{"fidelity":"community-base","key":"go:S1871","parameters":[]},{"fidelity":"community-base","key":"go:S1940","parameters":[]},{"fidelity":"community-base","key":"go:S2260","parameters":[]},{"fidelity":"community-base","key":"go:S2757","parameters":[]},{"fidelity":"community-base","key":"go:S3776","parameters":[{"default_value":"15","key":"threshold","parameter_type":"INTEGER"}]},{"fidelity":"community-base","key":"go:S3923","parameters":[]},{"fidelity":"community-base","key":"go:S4144","parameters":[]},{"fidelity":"community-base","key":"go:S4663","parameters":[]}],"completeness":"complete_native_analysis","reference":{"capture_sha256":"f423f0d8b8001af94dbf28bb8e3af368702447a9318b1200650cb3f9b3a332f0","captured_at_utc":"2026-08-22T14:45:03.705491626Z","profile":"sonar-parity","sonarqube_version":"2025.4.4.119049"},"rule_set_violations":[],"scope":{"duplication_exclude":[],"exclude":[],"file_counts":{"excluded":0,"generated":0,"source":10,"test":0,"vendor":0},"generated_include":[],"roots":["."],"test_include":[],"vendor_include":[]},"semantic_context":{"csharp":"not_applicable","typescript":"not_applicable"}},"rules":[{"cleanCodeAttribute":"FOCUSED","description":"Hoonarqube finding for `go:S1151`.","engineId":"hoonarqube","id":"go:S1151","impacts":[{"severity":"MEDIUM","softwareQuality":"MAINTAINABILITY"}],"name":"go:S1151","severity":"MAJOR","type":"CODE_SMELL"},{"cleanCodeAttribute":"FORMATTED","description":"Hoonarqube finding for `go:S122`.","engineId":"hoonarqube","id":"go:S122","impacts":[{"severity":"MEDIUM","softwareQuality":"MAINTAINABILITY"}],"name":"go:S122","severity":"MAJOR","type":"CODE_SMELL"},{"cleanCodeAttribute":"FOCUSED","description":"Hoonarqube finding for `go:S134`.","engineId":"hoonarqube","id":"go:S134","impacts":[{"severity":"HIGH","softwareQuality":"MAINTAINABILITY"}],"name":"go:S134","severity":"CRITICAL","type":"CODE_SMELL"},{"cleanCodeAttribute":"FOCUSED","description":"Hoonarqube finding for `go:S1821`.","engineId":"hoonarqube","id":"go:S1821","impacts":[{"severity":"HIGH","softwareQuality":"MAINTAINABILITY"}],"name":"go:S1821","severity":"CRITICAL","type":"CODE_SMELL"},{"cleanCodeAttribute":"FOCUSED","description":"Hoonarqube finding for `go:S3776`.","engineId":"hoonarqube","id":"go:S3776","impacts":[{"severity":"HIGH","softwareQuality":"MAINTAINABILITY"}],"name":"go:S3776","severity":"CRITICAL","type":"CODE_SMELL"}]}"#; +const EXPECTED_NATIVE: &str = r#"{"schema_version":1,"files":[{"path":"./01-mixed-ancestors/case.go","language":"go","issues":[{"rule_key":"go:S1151","message":"Reduce this case clause number of lines from 9 to at most 6, for example by extracting code into methods.","range":{"start":{"line":7,"column":3},"end":{"line":7,"column":10}}},{"rule_key":"go:S1821","message":"Refactor the code to eliminate this nested \"switch\".","range":{"start":{"line":8,"column":4},"end":{"line":8,"column":10}}},{"rule_key":"go:S134","message":"Refactor this code to not nest more than 4 control flow statements.","range":{"start":{"line":10,"column":5},"end":{"line":10,"column":7}},"flows":[{"locations":[{"message":"Nesting depth 1","range":{"start":{"line":4,"column":1},"end":{"line":4,"column":3}}}]},{"locations":[{"message":"Nesting depth 2","range":{"start":{"line":5,"column":2},"end":{"line":5,"column":5}}}]},{"locations":[{"message":"Nesting depth 3","range":{"start":{"line":6,"column":3},"end":{"line":6,"column":9}}}]},{"locations":[{"message":"Nesting depth 4","range":{"start":{"line":8,"column":4},"end":{"line":8,"column":10}}}]}]}],"metrics":{"lines":22,"code_lines":20,"comment_lines":0}},{"path":"./02-for-primary/case.go","language":"go","issues":[{"rule_key":"go:S1151","message":"Reduce this case clause number of lines from 8 to at most 6, for example by extracting code into methods.","range":{"start":{"line":6,"column":2},"end":{"line":6,"column":9}}},{"rule_key":"go:S134","message":"Refactor this code to not nest more than 4 control flow statements.","range":{"start":{"line":9,"column":5},"end":{"line":9,"column":8}},"flows":[{"locations":[{"message":"Nesting depth 1","range":{"start":{"line":4,"column":1},"end":{"line":4,"column":3}}}]},{"locations":[{"message":"Nesting depth 2","range":{"start":{"line":5,"column":2},"end":{"line":5,"column":8}}}]},{"locations":[{"message":"Nesting depth 3","range":{"start":{"line":7,"column":3},"end":{"line":7,"column":6}}}]},{"locations":[{"message":"Nesting depth 4","range":{"start":{"line":8,"column":4},"end":{"line":8,"column":6}}}]}]}],"metrics":{"lines":19,"code_lines":17,"comment_lines":0}},{"path":"./03-expression-switch-primary/case.go","language":"go","issues":[{"rule_key":"go:S134","message":"Refactor this code to not nest more than 4 control flow statements.","range":{"start":{"line":8,"column":5},"end":{"line":8,"column":11}},"flows":[{"locations":[{"message":"Nesting depth 1","range":{"start":{"line":4,"column":1},"end":{"line":4,"column":3}}}]},{"locations":[{"message":"Nesting depth 2","range":{"start":{"line":5,"column":2},"end":{"line":5,"column":4}}}]},{"locations":[{"message":"Nesting depth 3","range":{"start":{"line":6,"column":3},"end":{"line":6,"column":5}}}]},{"locations":[{"message":"Nesting depth 4","range":{"start":{"line":7,"column":4},"end":{"line":7,"column":6}}}]}]}],"metrics":{"lines":19,"code_lines":17,"comment_lines":0}},{"path":"./04-type-switch-primary/case.go","language":"go","issues":[{"rule_key":"go:S134","message":"Refactor this code to not nest more than 4 control flow statements.","range":{"start":{"line":8,"column":5},"end":{"line":8,"column":11}},"flows":[{"locations":[{"message":"Nesting depth 1","range":{"start":{"line":4,"column":1},"end":{"line":4,"column":3}}}]},{"locations":[{"message":"Nesting depth 2","range":{"start":{"line":5,"column":2},"end":{"line":5,"column":4}}}]},{"locations":[{"message":"Nesting depth 3","range":{"start":{"line":6,"column":3},"end":{"line":6,"column":5}}}]},{"locations":[{"message":"Nesting depth 4","range":{"start":{"line":7,"column":4},"end":{"line":7,"column":6}}}]}]}],"metrics":{"lines":19,"code_lines":17,"comment_lines":0}},{"path":"./05-effective-else-if/case.go","language":"go","issues":[{"rule_key":"go:S3776","message":"Refactor this method to reduce its Cognitive Complexity from 18 to the 15 allowed.","range":{"start":{"line":3,"column":5},"end":{"line":3,"column":20}},"flows":[{"locations":[{"message":"+1","range":{"start":{"line":4,"column":1},"end":{"line":4,"column":3}}}]},{"locations":[{"message":"+2 (incl 1 for nesting)","range":{"start":{"line":5,"column":2},"end":{"line":5,"column":5}}}]},{"locations":[{"message":"+3 (incl 2 for nesting)","range":{"start":{"line":6,"column":3},"end":{"line":6,"column":5}}}]},{"locations":[{"message":"+1","range":{"start":{"line":8,"column":5},"end":{"line":8,"column":9}}}]},{"locations":[{"message":"+1","range":{"start":{"line":16,"column":5},"end":{"line":16,"column":9}}}]},{"locations":[{"message":"+4 (incl 3 for nesting)","range":{"start":{"line":9,"column":4},"end":{"line":9,"column":6}}}]},{"locations":[{"message":"+1","range":{"start":{"line":11,"column":6},"end":{"line":11,"column":10}}}]},{"locations":[{"message":"+5 (incl 4 for nesting)","range":{"start":{"line":12,"column":5},"end":{"line":12,"column":7}}}]}]},{"rule_key":"go:S126","message":"Add the missing \"else\" clause.","range":{"start":{"line":11,"column":6},"end":{"line":11,"column":13}}},{"rule_key":"go:S134","message":"Refactor this code to not nest more than 4 control flow statements.","range":{"start":{"line":12,"column":5},"end":{"line":12,"column":7}},"flows":[{"locations":[{"message":"Nesting depth 1","range":{"start":{"line":4,"column":1},"end":{"line":4,"column":3}}}]},{"locations":[{"message":"Nesting depth 2","range":{"start":{"line":5,"column":2},"end":{"line":5,"column":5}}}]},{"locations":[{"message":"Nesting depth 3","range":{"start":{"line":6,"column":3},"end":{"line":6,"column":5}}}]},{"locations":[{"message":"Nesting depth 4","range":{"start":{"line":9,"column":4},"end":{"line":9,"column":6}}}]}]}],"metrics":{"lines":22,"code_lines":20,"comment_lines":0}},{"path":"./06-transparent-literal/case.go","language":"go","issues":[{"rule_key":"go:S3776","message":"Refactor this method to reduce its Cognitive Complexity from 18 to the 15 allowed.","range":{"start":{"line":3,"column":5},"end":{"line":3,"column":23}},"flows":[{"locations":[{"message":"+1","range":{"start":{"line":4,"column":1},"end":{"line":4,"column":3}}}]},{"locations":[{"message":"+2 (incl 1 for nesting)","range":{"start":{"line":5,"column":2},"end":{"line":5,"column":5}}}]},{"locations":[{"message":"+4 (incl 3 for nesting)","range":{"start":{"line":7,"column":4},"end":{"line":7,"column":6}}}]},{"locations":[{"message":"+5 (incl 4 for nesting)","range":{"start":{"line":8,"column":5},"end":{"line":8,"column":7}}}]},{"locations":[{"message":"+6 (incl 5 for nesting)","range":{"start":{"line":9,"column":6},"end":{"line":9,"column":8}}}]}]},{"rule_key":"go:S134","message":"Refactor this code to not nest more than 4 control flow statements.","range":{"start":{"line":9,"column":6},"end":{"line":9,"column":8}},"flows":[{"locations":[{"message":"Nesting depth 1","range":{"start":{"line":4,"column":1},"end":{"line":4,"column":3}}}]},{"locations":[{"message":"Nesting depth 2","range":{"start":{"line":5,"column":2},"end":{"line":5,"column":5}}}]},{"locations":[{"message":"Nesting depth 3","range":{"start":{"line":7,"column":4},"end":{"line":7,"column":6}}}]},{"locations":[{"message":"Nesting depth 4","range":{"start":{"line":8,"column":5},"end":{"line":8,"column":7}}}]}]}],"metrics":{"lines":18,"code_lines":16,"comment_lines":0}},{"path":"./07-named-sibling-isolation/case.go","language":"go","issues":[{"rule_key":"go:S134","message":"Refactor this code to not nest more than 4 control flow statements.","range":{"start":{"line":8,"column":5},"end":{"line":8,"column":7}},"flows":[{"locations":[{"message":"Nesting depth 1","range":{"start":{"line":4,"column":1},"end":{"line":4,"column":3}}}]},{"locations":[{"message":"Nesting depth 2","range":{"start":{"line":5,"column":2},"end":{"line":5,"column":4}}}]},{"locations":[{"message":"Nesting depth 3","range":{"start":{"line":6,"column":3},"end":{"line":6,"column":5}}}]},{"locations":[{"message":"Nesting depth 4","range":{"start":{"line":7,"column":4},"end":{"line":7,"column":6}}}]}]}],"metrics":{"lines":44,"code_lines":39,"comment_lines":0}},{"path":"./08-threshold-and-deeper/case.go","language":"go","issues":[{"rule_key":"go:S134","message":"Refactor this code to not nest more than 4 control flow statements.","range":{"start":{"line":20,"column":5},"end":{"line":20,"column":7}},"flows":[{"locations":[{"message":"Nesting depth 1","range":{"start":{"line":16,"column":1},"end":{"line":16,"column":3}}}]},{"locations":[{"message":"Nesting depth 2","range":{"start":{"line":17,"column":2},"end":{"line":17,"column":4}}}]},{"locations":[{"message":"Nesting depth 3","range":{"start":{"line":18,"column":3},"end":{"line":18,"column":5}}}]},{"locations":[{"message":"Nesting depth 4","range":{"start":{"line":19,"column":4},"end":{"line":19,"column":6}}}]}]},{"rule_key":"go:S3776","message":"Refactor this method to reduce its Cognitive Complexity from 28 to the 15 allowed.","range":{"start":{"line":29,"column":5},"end":{"line":29,"column":16}},"flows":[{"locations":[{"message":"+1","range":{"start":{"line":30,"column":1},"end":{"line":30,"column":3}}}]},{"locations":[{"message":"+2 (incl 1 for nesting)","range":{"start":{"line":31,"column":2},"end":{"line":31,"column":4}}}]},{"locations":[{"message":"+3 (incl 2 for nesting)","range":{"start":{"line":32,"column":3},"end":{"line":32,"column":5}}}]},{"locations":[{"message":"+4 (incl 3 for nesting)","range":{"start":{"line":33,"column":4},"end":{"line":33,"column":6}}}]},{"locations":[{"message":"+5 (incl 4 for nesting)","range":{"start":{"line":34,"column":5},"end":{"line":34,"column":7}}}]},{"locations":[{"message":"+6 (incl 5 for nesting)","range":{"start":{"line":35,"column":6},"end":{"line":35,"column":8}}}]},{"locations":[{"message":"+7 (incl 6 for nesting)","range":{"start":{"line":36,"column":7},"end":{"line":36,"column":9}}}]}]},{"rule_key":"go:S134","message":"Refactor this code to not nest more than 4 control flow statements.","range":{"start":{"line":34,"column":5},"end":{"line":34,"column":7}},"flows":[{"locations":[{"message":"Nesting depth 1","range":{"start":{"line":30,"column":1},"end":{"line":30,"column":3}}}]},{"locations":[{"message":"Nesting depth 2","range":{"start":{"line":31,"column":2},"end":{"line":31,"column":4}}}]},{"locations":[{"message":"Nesting depth 3","range":{"start":{"line":32,"column":3},"end":{"line":32,"column":5}}}]},{"locations":[{"message":"Nesting depth 4","range":{"start":{"line":33,"column":4},"end":{"line":33,"column":6}}}]}]}],"metrics":{"lines":46,"code_lines":42,"comment_lines":0}},{"path":"./09-unicode-crlf/case.go","language":"go","issues":[{"rule_key":"go:S122","message":"Reformat the code to have only one statement per line.","range":{"start":{"line":4,"column":11},"end":{"line":4,"column":110}}},{"rule_key":"go:S134","message":"Refactor this code to not nest more than 4 control flow statements.","range":{"start":{"line":4,"column":71},"end":{"line":4,"column":73}},"flows":[{"locations":[{"message":"Nesting depth 1","range":{"start":{"line":4,"column":11},"end":{"line":4,"column":13}}}]},{"locations":[{"message":"Nesting depth 2","range":{"start":{"line":4,"column":26},"end":{"line":4,"column":28}}}]},{"locations":[{"message":"Nesting depth 3","range":{"start":{"line":4,"column":41},"end":{"line":4,"column":43}}}]},{"locations":[{"message":"Nesting depth 4","range":{"start":{"line":4,"column":56},"end":{"line":4,"column":58}}}]}]}],"metrics":{"lines":6,"code_lines":4,"comment_lines":0}},{"path":"./10-native-options-shallow/case.go","language":"go","issues":[],"metrics":{"lines":10,"code_lines":8,"comment_lines":0}}],"project":{"metrics":{"files":10,"lines":225,"code_lines":200,"comment_lines":0},"files":[{"path":"./01-mixed-ancestors/case.go","classification":"source","status":"complete","metrics":{"lines":22,"code_lines":20,"comment_lines":0},"duplication":{"duplicated_lines":0,"duplicated_blocks":0,"duplicated_files":0,"duplicated_lines_density":0.0},"reason":null},{"path":"./02-for-primary/case.go","classification":"source","status":"complete","metrics":{"lines":19,"code_lines":17,"comment_lines":0},"duplication":{"duplicated_lines":0,"duplicated_blocks":0,"duplicated_files":0,"duplicated_lines_density":0.0},"reason":null},{"path":"./03-expression-switch-primary/case.go","classification":"source","status":"complete","metrics":{"lines":19,"code_lines":17,"comment_lines":0},"duplication":{"duplicated_lines":0,"duplicated_blocks":0,"duplicated_files":0,"duplicated_lines_density":0.0},"reason":null},{"path":"./04-type-switch-primary/case.go","classification":"source","status":"complete","metrics":{"lines":19,"code_lines":17,"comment_lines":0},"duplication":{"duplicated_lines":0,"duplicated_blocks":0,"duplicated_files":0,"duplicated_lines_density":0.0},"reason":null},{"path":"./05-effective-else-if/case.go","classification":"source","status":"complete","metrics":{"lines":22,"code_lines":20,"comment_lines":0},"duplication":{"duplicated_lines":0,"duplicated_blocks":0,"duplicated_files":0,"duplicated_lines_density":0.0},"reason":null},{"path":"./06-transparent-literal/case.go","classification":"source","status":"complete","metrics":{"lines":18,"code_lines":16,"comment_lines":0},"duplication":{"duplicated_lines":0,"duplicated_blocks":0,"duplicated_files":0,"duplicated_lines_density":0.0},"reason":null},{"path":"./07-named-sibling-isolation/case.go","classification":"source","status":"complete","metrics":{"lines":44,"code_lines":39,"comment_lines":0},"duplication":{"duplicated_lines":0,"duplicated_blocks":0,"duplicated_files":0,"duplicated_lines_density":0.0},"reason":null},{"path":"./08-threshold-and-deeper/case.go","classification":"source","status":"complete","metrics":{"lines":46,"code_lines":42,"comment_lines":0},"duplication":{"duplicated_lines":0,"duplicated_blocks":0,"duplicated_files":0,"duplicated_lines_density":0.0},"reason":null},{"path":"./09-unicode-crlf/case.go","classification":"source","status":"complete","metrics":{"lines":6,"code_lines":4,"comment_lines":0},"duplication":{"duplicated_lines":0,"duplicated_blocks":0,"duplicated_files":0,"duplicated_lines_density":0.0},"reason":null},{"path":"./10-native-options-shallow/case.go","classification":"source","status":"complete","metrics":{"lines":10,"code_lines":8,"comment_lines":0},"duplication":{"duplicated_lines":0,"duplicated_blocks":0,"duplicated_files":0,"duplicated_lines_density":0.0},"reason":null}],"duplications":[],"duplication":{"duplicated_lines":0,"duplicated_blocks":0,"duplicated_files":0,"duplicated_lines_density":0.0},"complete":true,"warnings":[],"roots":["."]},"parity":{"reference":{"sonarqube_version":"2025.4.4.119049","profile":"sonar-parity","captured_at_utc":"2026-08-22T14:45:03.705491626Z","capture_sha256":"f423f0d8b8001af94dbf28bb8e3af368702447a9318b1200650cb3f9b3a332f0"},"active_rules":[{"key":"go:S100","parameters":[{"key":"formatForTests","default_value":"^(_|[a-zA-Z0-9_]+)$","parameter_type":"STRING"},{"key":"format","default_value":"^(_|[a-zA-Z0-9]+)$","parameter_type":"STRING"}],"fidelity":"community-base"},{"key":"go:S103","parameters":[{"key":"maximumLineLength","default_value":"120","parameter_type":"INTEGER"}],"fidelity":"community-base"},{"key":"go:S104","parameters":[{"key":"Max","default_value":"750","parameter_type":"INTEGER"}],"fidelity":"community-base"},{"key":"go:S1067","parameters":[{"key":"max","default_value":"3","parameter_type":"INTEGER"}],"fidelity":"community-base"},{"key":"go:S107","parameters":[{"key":"Max","default_value":"7","parameter_type":"INTEGER"}],"fidelity":"community-base"},{"key":"go:S108","parameters":[],"fidelity":"community-base"},{"key":"go:S1110","parameters":[],"fidelity":"community-base"},{"key":"go:S1125","parameters":[],"fidelity":"community-base"},{"key":"go:S1134","parameters":[],"fidelity":"community-base"},{"key":"go:S1135","parameters":[],"fidelity":"community-base"},{"key":"go:S1145","parameters":[],"fidelity":"community-base"},{"key":"go:S1151","parameters":[{"key":"max","default_value":"6","parameter_type":"INTEGER"}],"fidelity":"community-base"},{"key":"go:S117","parameters":[{"key":"format","default_value":"^(_|[a-zA-Z0-9]+)$","parameter_type":"STRING"}],"fidelity":"community-base"},{"key":"go:S1186","parameters":[],"fidelity":"community-base"},{"key":"go:S1192","parameters":[{"key":"threshold","default_value":"3","parameter_type":"INTEGER"}],"fidelity":"community-base"},{"key":"go:S122","parameters":[],"fidelity":"community-base"},{"key":"go:S126","parameters":[],"fidelity":"community-base"},{"key":"go:S131","parameters":[],"fidelity":"community-base"},{"key":"go:S1314","parameters":[],"fidelity":"community-base"},{"key":"go:S134","parameters":[{"key":"max","default_value":"4","parameter_type":"INTEGER"}],"fidelity":"community-base"},{"key":"go:S138","parameters":[{"key":"max","default_value":"120","parameter_type":"INTEGER"}],"fidelity":"community-base"},{"key":"go:S1451","parameters":[{"key":"headerFormat","parameter_type":"TEXT"},{"key":"isRegularExpression","default_value":"false","parameter_type":"BOOLEAN"}],"fidelity":"community-base"},{"key":"go:S1479","parameters":[{"key":"maximum","default_value":"30","parameter_type":"INTEGER"}],"fidelity":"community-base"},{"key":"go:S1656","parameters":[],"fidelity":"community-base"},{"key":"go:S1763","parameters":[],"fidelity":"community-base"},{"key":"go:S1764","parameters":[],"fidelity":"community-base"},{"key":"go:S1821","parameters":[],"fidelity":"community-base"},{"key":"go:S1862","parameters":[],"fidelity":"community-base"},{"key":"go:S1871","parameters":[],"fidelity":"community-base"},{"key":"go:S1940","parameters":[],"fidelity":"community-base"},{"key":"go:S2260","parameters":[],"fidelity":"community-base"},{"key":"go:S2757","parameters":[],"fidelity":"community-base"},{"key":"go:S3776","parameters":[{"key":"threshold","default_value":"15","parameter_type":"INTEGER"}],"fidelity":"community-base"},{"key":"go:S3923","parameters":[],"fidelity":"community-base"},{"key":"go:S4144","parameters":[],"fidelity":"community-base"},{"key":"go:S4663","parameters":[],"fidelity":"community-base"}],"scope":{"roots":["."],"test_include":[],"exclude":[],"generated_include":[],"vendor_include":[],"duplication_exclude":[],"file_counts":{"excluded":0,"generated":0,"source":10,"test":0,"vendor":0}},"semantic_context":{"typescript":"not_applicable","csharp":"not_applicable"},"completeness":"complete_native_analysis","rule_set_violations":[]}}"#; +const EXPECTED_GENERIC: &str = r#"{"issues":[{"primaryLocation":{"filePath":"./01-mixed-ancestors/case.go","message":"Reduce this case clause number of lines from 9 to at most 6, for example by extracting code into methods.","textRange":{"endColumn":10,"endLine":7,"startColumn":3,"startLine":7}},"ruleId":"go:S1151"},{"primaryLocation":{"filePath":"./01-mixed-ancestors/case.go","message":"Refactor the code to eliminate this nested \"switch\".","textRange":{"endColumn":10,"endLine":8,"startColumn":4,"startLine":8}},"ruleId":"go:S1821"},{"primaryLocation":{"filePath":"./01-mixed-ancestors/case.go","message":"Refactor this code to not nest more than 4 control flow statements.","textRange":{"endColumn":7,"endLine":10,"startColumn":5,"startLine":10}},"ruleId":"go:S134","secondaryLocations":[{"filePath":"./01-mixed-ancestors/case.go","message":"Nesting depth 1","textRange":{"endColumn":3,"endLine":4,"startColumn":1,"startLine":4}},{"filePath":"./01-mixed-ancestors/case.go","message":"Nesting depth 2","textRange":{"endColumn":5,"endLine":5,"startColumn":2,"startLine":5}},{"filePath":"./01-mixed-ancestors/case.go","message":"Nesting depth 3","textRange":{"endColumn":9,"endLine":6,"startColumn":3,"startLine":6}},{"filePath":"./01-mixed-ancestors/case.go","message":"Nesting depth 4","textRange":{"endColumn":10,"endLine":8,"startColumn":4,"startLine":8}}]},{"primaryLocation":{"filePath":"./02-for-primary/case.go","message":"Reduce this case clause number of lines from 8 to at most 6, for example by extracting code into methods.","textRange":{"endColumn":9,"endLine":6,"startColumn":2,"startLine":6}},"ruleId":"go:S1151"},{"primaryLocation":{"filePath":"./02-for-primary/case.go","message":"Refactor this code to not nest more than 4 control flow statements.","textRange":{"endColumn":8,"endLine":9,"startColumn":5,"startLine":9}},"ruleId":"go:S134","secondaryLocations":[{"filePath":"./02-for-primary/case.go","message":"Nesting depth 1","textRange":{"endColumn":3,"endLine":4,"startColumn":1,"startLine":4}},{"filePath":"./02-for-primary/case.go","message":"Nesting depth 2","textRange":{"endColumn":8,"endLine":5,"startColumn":2,"startLine":5}},{"filePath":"./02-for-primary/case.go","message":"Nesting depth 3","textRange":{"endColumn":6,"endLine":7,"startColumn":3,"startLine":7}},{"filePath":"./02-for-primary/case.go","message":"Nesting depth 4","textRange":{"endColumn":6,"endLine":8,"startColumn":4,"startLine":8}}]},{"primaryLocation":{"filePath":"./03-expression-switch-primary/case.go","message":"Refactor this code to not nest more than 4 control flow statements.","textRange":{"endColumn":11,"endLine":8,"startColumn":5,"startLine":8}},"ruleId":"go:S134","secondaryLocations":[{"filePath":"./03-expression-switch-primary/case.go","message":"Nesting depth 1","textRange":{"endColumn":3,"endLine":4,"startColumn":1,"startLine":4}},{"filePath":"./03-expression-switch-primary/case.go","message":"Nesting depth 2","textRange":{"endColumn":4,"endLine":5,"startColumn":2,"startLine":5}},{"filePath":"./03-expression-switch-primary/case.go","message":"Nesting depth 3","textRange":{"endColumn":5,"endLine":6,"startColumn":3,"startLine":6}},{"filePath":"./03-expression-switch-primary/case.go","message":"Nesting depth 4","textRange":{"endColumn":6,"endLine":7,"startColumn":4,"startLine":7}}]},{"primaryLocation":{"filePath":"./04-type-switch-primary/case.go","message":"Refactor this code to not nest more than 4 control flow statements.","textRange":{"endColumn":11,"endLine":8,"startColumn":5,"startLine":8}},"ruleId":"go:S134","secondaryLocations":[{"filePath":"./04-type-switch-primary/case.go","message":"Nesting depth 1","textRange":{"endColumn":3,"endLine":4,"startColumn":1,"startLine":4}},{"filePath":"./04-type-switch-primary/case.go","message":"Nesting depth 2","textRange":{"endColumn":4,"endLine":5,"startColumn":2,"startLine":5}},{"filePath":"./04-type-switch-primary/case.go","message":"Nesting depth 3","textRange":{"endColumn":5,"endLine":6,"startColumn":3,"startLine":6}},{"filePath":"./04-type-switch-primary/case.go","message":"Nesting depth 4","textRange":{"endColumn":6,"endLine":7,"startColumn":4,"startLine":7}}]},{"primaryLocation":{"filePath":"./05-effective-else-if/case.go","message":"Refactor this method to reduce its Cognitive Complexity from 18 to the 15 allowed.","textRange":{"endColumn":20,"endLine":3,"startColumn":5,"startLine":3}},"ruleId":"go:S3776","secondaryLocations":[{"filePath":"./05-effective-else-if/case.go","message":"+1","textRange":{"endColumn":3,"endLine":4,"startColumn":1,"startLine":4}},{"filePath":"./05-effective-else-if/case.go","message":"+2 (incl 1 for nesting)","textRange":{"endColumn":5,"endLine":5,"startColumn":2,"startLine":5}},{"filePath":"./05-effective-else-if/case.go","message":"+3 (incl 2 for nesting)","textRange":{"endColumn":5,"endLine":6,"startColumn":3,"startLine":6}},{"filePath":"./05-effective-else-if/case.go","message":"+1","textRange":{"endColumn":9,"endLine":8,"startColumn":5,"startLine":8}},{"filePath":"./05-effective-else-if/case.go","message":"+1","textRange":{"endColumn":9,"endLine":16,"startColumn":5,"startLine":16}},{"filePath":"./05-effective-else-if/case.go","message":"+4 (incl 3 for nesting)","textRange":{"endColumn":6,"endLine":9,"startColumn":4,"startLine":9}},{"filePath":"./05-effective-else-if/case.go","message":"+1","textRange":{"endColumn":10,"endLine":11,"startColumn":6,"startLine":11}},{"filePath":"./05-effective-else-if/case.go","message":"+5 (incl 4 for nesting)","textRange":{"endColumn":7,"endLine":12,"startColumn":5,"startLine":12}}]},{"primaryLocation":{"filePath":"./05-effective-else-if/case.go","message":"Add the missing \"else\" clause.","textRange":{"endColumn":13,"endLine":11,"startColumn":6,"startLine":11}},"ruleId":"go:S126"},{"primaryLocation":{"filePath":"./05-effective-else-if/case.go","message":"Refactor this code to not nest more than 4 control flow statements.","textRange":{"endColumn":7,"endLine":12,"startColumn":5,"startLine":12}},"ruleId":"go:S134","secondaryLocations":[{"filePath":"./05-effective-else-if/case.go","message":"Nesting depth 1","textRange":{"endColumn":3,"endLine":4,"startColumn":1,"startLine":4}},{"filePath":"./05-effective-else-if/case.go","message":"Nesting depth 2","textRange":{"endColumn":5,"endLine":5,"startColumn":2,"startLine":5}},{"filePath":"./05-effective-else-if/case.go","message":"Nesting depth 3","textRange":{"endColumn":5,"endLine":6,"startColumn":3,"startLine":6}},{"filePath":"./05-effective-else-if/case.go","message":"Nesting depth 4","textRange":{"endColumn":6,"endLine":9,"startColumn":4,"startLine":9}}]},{"primaryLocation":{"filePath":"./06-transparent-literal/case.go","message":"Refactor this method to reduce its Cognitive Complexity from 18 to the 15 allowed.","textRange":{"endColumn":23,"endLine":3,"startColumn":5,"startLine":3}},"ruleId":"go:S3776","secondaryLocations":[{"filePath":"./06-transparent-literal/case.go","message":"+1","textRange":{"endColumn":3,"endLine":4,"startColumn":1,"startLine":4}},{"filePath":"./06-transparent-literal/case.go","message":"+2 (incl 1 for nesting)","textRange":{"endColumn":5,"endLine":5,"startColumn":2,"startLine":5}},{"filePath":"./06-transparent-literal/case.go","message":"+4 (incl 3 for nesting)","textRange":{"endColumn":6,"endLine":7,"startColumn":4,"startLine":7}},{"filePath":"./06-transparent-literal/case.go","message":"+5 (incl 4 for nesting)","textRange":{"endColumn":7,"endLine":8,"startColumn":5,"startLine":8}},{"filePath":"./06-transparent-literal/case.go","message":"+6 (incl 5 for nesting)","textRange":{"endColumn":8,"endLine":9,"startColumn":6,"startLine":9}}]},{"primaryLocation":{"filePath":"./06-transparent-literal/case.go","message":"Refactor this code to not nest more than 4 control flow statements.","textRange":{"endColumn":8,"endLine":9,"startColumn":6,"startLine":9}},"ruleId":"go:S134","secondaryLocations":[{"filePath":"./06-transparent-literal/case.go","message":"Nesting depth 1","textRange":{"endColumn":3,"endLine":4,"startColumn":1,"startLine":4}},{"filePath":"./06-transparent-literal/case.go","message":"Nesting depth 2","textRange":{"endColumn":5,"endLine":5,"startColumn":2,"startLine":5}},{"filePath":"./06-transparent-literal/case.go","message":"Nesting depth 3","textRange":{"endColumn":6,"endLine":7,"startColumn":4,"startLine":7}},{"filePath":"./06-transparent-literal/case.go","message":"Nesting depth 4","textRange":{"endColumn":7,"endLine":8,"startColumn":5,"startLine":8}}]},{"primaryLocation":{"filePath":"./07-named-sibling-isolation/case.go","message":"Refactor this code to not nest more than 4 control flow statements.","textRange":{"endColumn":7,"endLine":8,"startColumn":5,"startLine":8}},"ruleId":"go:S134","secondaryLocations":[{"filePath":"./07-named-sibling-isolation/case.go","message":"Nesting depth 1","textRange":{"endColumn":3,"endLine":4,"startColumn":1,"startLine":4}},{"filePath":"./07-named-sibling-isolation/case.go","message":"Nesting depth 2","textRange":{"endColumn":4,"endLine":5,"startColumn":2,"startLine":5}},{"filePath":"./07-named-sibling-isolation/case.go","message":"Nesting depth 3","textRange":{"endColumn":5,"endLine":6,"startColumn":3,"startLine":6}},{"filePath":"./07-named-sibling-isolation/case.go","message":"Nesting depth 4","textRange":{"endColumn":6,"endLine":7,"startColumn":4,"startLine":7}}]},{"primaryLocation":{"filePath":"./08-threshold-and-deeper/case.go","message":"Refactor this code to not nest more than 4 control flow statements.","textRange":{"endColumn":7,"endLine":20,"startColumn":5,"startLine":20}},"ruleId":"go:S134","secondaryLocations":[{"filePath":"./08-threshold-and-deeper/case.go","message":"Nesting depth 1","textRange":{"endColumn":3,"endLine":16,"startColumn":1,"startLine":16}},{"filePath":"./08-threshold-and-deeper/case.go","message":"Nesting depth 2","textRange":{"endColumn":4,"endLine":17,"startColumn":2,"startLine":17}},{"filePath":"./08-threshold-and-deeper/case.go","message":"Nesting depth 3","textRange":{"endColumn":5,"endLine":18,"startColumn":3,"startLine":18}},{"filePath":"./08-threshold-and-deeper/case.go","message":"Nesting depth 4","textRange":{"endColumn":6,"endLine":19,"startColumn":4,"startLine":19}}]},{"primaryLocation":{"filePath":"./08-threshold-and-deeper/case.go","message":"Refactor this method to reduce its Cognitive Complexity from 28 to the 15 allowed.","textRange":{"endColumn":16,"endLine":29,"startColumn":5,"startLine":29}},"ruleId":"go:S3776","secondaryLocations":[{"filePath":"./08-threshold-and-deeper/case.go","message":"+1","textRange":{"endColumn":3,"endLine":30,"startColumn":1,"startLine":30}},{"filePath":"./08-threshold-and-deeper/case.go","message":"+2 (incl 1 for nesting)","textRange":{"endColumn":4,"endLine":31,"startColumn":2,"startLine":31}},{"filePath":"./08-threshold-and-deeper/case.go","message":"+3 (incl 2 for nesting)","textRange":{"endColumn":5,"endLine":32,"startColumn":3,"startLine":32}},{"filePath":"./08-threshold-and-deeper/case.go","message":"+4 (incl 3 for nesting)","textRange":{"endColumn":6,"endLine":33,"startColumn":4,"startLine":33}},{"filePath":"./08-threshold-and-deeper/case.go","message":"+5 (incl 4 for nesting)","textRange":{"endColumn":7,"endLine":34,"startColumn":5,"startLine":34}},{"filePath":"./08-threshold-and-deeper/case.go","message":"+6 (incl 5 for nesting)","textRange":{"endColumn":8,"endLine":35,"startColumn":6,"startLine":35}},{"filePath":"./08-threshold-and-deeper/case.go","message":"+7 (incl 6 for nesting)","textRange":{"endColumn":9,"endLine":36,"startColumn":7,"startLine":36}}]},{"primaryLocation":{"filePath":"./08-threshold-and-deeper/case.go","message":"Refactor this code to not nest more than 4 control flow statements.","textRange":{"endColumn":7,"endLine":34,"startColumn":5,"startLine":34}},"ruleId":"go:S134","secondaryLocations":[{"filePath":"./08-threshold-and-deeper/case.go","message":"Nesting depth 1","textRange":{"endColumn":3,"endLine":30,"startColumn":1,"startLine":30}},{"filePath":"./08-threshold-and-deeper/case.go","message":"Nesting depth 2","textRange":{"endColumn":4,"endLine":31,"startColumn":2,"startLine":31}},{"filePath":"./08-threshold-and-deeper/case.go","message":"Nesting depth 3","textRange":{"endColumn":5,"endLine":32,"startColumn":3,"startLine":32}},{"filePath":"./08-threshold-and-deeper/case.go","message":"Nesting depth 4","textRange":{"endColumn":6,"endLine":33,"startColumn":4,"startLine":33}}]},{"primaryLocation":{"filePath":"./09-unicode-crlf/case.go","message":"Reformat the code to have only one statement per line.","textRange":{"endColumn":111,"endLine":4,"startColumn":12,"startLine":4}},"ruleId":"go:S122"},{"primaryLocation":{"filePath":"./09-unicode-crlf/case.go","message":"Refactor this code to not nest more than 4 control flow statements.","textRange":{"endColumn":74,"endLine":4,"startColumn":72,"startLine":4}},"ruleId":"go:S134","secondaryLocations":[{"filePath":"./09-unicode-crlf/case.go","message":"Nesting depth 1","textRange":{"endColumn":14,"endLine":4,"startColumn":12,"startLine":4}},{"filePath":"./09-unicode-crlf/case.go","message":"Nesting depth 2","textRange":{"endColumn":29,"endLine":4,"startColumn":27,"startLine":4}},{"filePath":"./09-unicode-crlf/case.go","message":"Nesting depth 3","textRange":{"endColumn":44,"endLine":4,"startColumn":42,"startLine":4}},{"filePath":"./09-unicode-crlf/case.go","message":"Nesting depth 4","textRange":{"endColumn":59,"endLine":4,"startColumn":57,"startLine":4}}]}],"parity":{"active_rules":[{"fidelity":"community-base","key":"go:S100","parameters":[{"default_value":"^(_|[a-zA-Z0-9_]+)$","key":"formatForTests","parameter_type":"STRING"},{"default_value":"^(_|[a-zA-Z0-9]+)$","key":"format","parameter_type":"STRING"}]},{"fidelity":"community-base","key":"go:S103","parameters":[{"default_value":"120","key":"maximumLineLength","parameter_type":"INTEGER"}]},{"fidelity":"community-base","key":"go:S104","parameters":[{"default_value":"750","key":"Max","parameter_type":"INTEGER"}]},{"fidelity":"community-base","key":"go:S1067","parameters":[{"default_value":"3","key":"max","parameter_type":"INTEGER"}]},{"fidelity":"community-base","key":"go:S107","parameters":[{"default_value":"7","key":"Max","parameter_type":"INTEGER"}]},{"fidelity":"community-base","key":"go:S108","parameters":[]},{"fidelity":"community-base","key":"go:S1110","parameters":[]},{"fidelity":"community-base","key":"go:S1125","parameters":[]},{"fidelity":"community-base","key":"go:S1134","parameters":[]},{"fidelity":"community-base","key":"go:S1135","parameters":[]},{"fidelity":"community-base","key":"go:S1145","parameters":[]},{"fidelity":"community-base","key":"go:S1151","parameters":[{"default_value":"6","key":"max","parameter_type":"INTEGER"}]},{"fidelity":"community-base","key":"go:S117","parameters":[{"default_value":"^(_|[a-zA-Z0-9]+)$","key":"format","parameter_type":"STRING"}]},{"fidelity":"community-base","key":"go:S1186","parameters":[]},{"fidelity":"community-base","key":"go:S1192","parameters":[{"default_value":"3","key":"threshold","parameter_type":"INTEGER"}]},{"fidelity":"community-base","key":"go:S122","parameters":[]},{"fidelity":"community-base","key":"go:S126","parameters":[]},{"fidelity":"community-base","key":"go:S131","parameters":[]},{"fidelity":"community-base","key":"go:S1314","parameters":[]},{"fidelity":"community-base","key":"go:S134","parameters":[{"default_value":"4","key":"max","parameter_type":"INTEGER"}]},{"fidelity":"community-base","key":"go:S138","parameters":[{"default_value":"120","key":"max","parameter_type":"INTEGER"}]},{"fidelity":"community-base","key":"go:S1451","parameters":[{"key":"headerFormat","parameter_type":"TEXT"},{"default_value":"false","key":"isRegularExpression","parameter_type":"BOOLEAN"}]},{"fidelity":"community-base","key":"go:S1479","parameters":[{"default_value":"30","key":"maximum","parameter_type":"INTEGER"}]},{"fidelity":"community-base","key":"go:S1656","parameters":[]},{"fidelity":"community-base","key":"go:S1763","parameters":[]},{"fidelity":"community-base","key":"go:S1764","parameters":[]},{"fidelity":"community-base","key":"go:S1821","parameters":[]},{"fidelity":"community-base","key":"go:S1862","parameters":[]},{"fidelity":"community-base","key":"go:S1871","parameters":[]},{"fidelity":"community-base","key":"go:S1940","parameters":[]},{"fidelity":"community-base","key":"go:S2260","parameters":[]},{"fidelity":"community-base","key":"go:S2757","parameters":[]},{"fidelity":"community-base","key":"go:S3776","parameters":[{"default_value":"15","key":"threshold","parameter_type":"INTEGER"}]},{"fidelity":"community-base","key":"go:S3923","parameters":[]},{"fidelity":"community-base","key":"go:S4144","parameters":[]},{"fidelity":"community-base","key":"go:S4663","parameters":[]}],"completeness":"complete_native_analysis","reference":{"capture_sha256":"f423f0d8b8001af94dbf28bb8e3af368702447a9318b1200650cb3f9b3a332f0","captured_at_utc":"2026-08-22T14:45:03.705491626Z","profile":"sonar-parity","sonarqube_version":"2025.4.4.119049"},"rule_set_violations":[],"scope":{"duplication_exclude":[],"exclude":[],"file_counts":{"excluded":0,"generated":0,"source":10,"test":0,"vendor":0},"generated_include":[],"roots":["."],"test_include":[],"vendor_include":[]},"semantic_context":{"csharp":"not_applicable","typescript":"not_applicable"}},"rules":[{"cleanCodeAttribute":"FOCUSED","description":"Hoonarqube finding for `go:S1151`.","engineId":"hoonarqube","id":"go:S1151","impacts":[{"severity":"MEDIUM","softwareQuality":"MAINTAINABILITY"}],"name":"go:S1151","severity":"MAJOR","type":"CODE_SMELL"},{"cleanCodeAttribute":"FORMATTED","description":"Hoonarqube finding for `go:S122`.","engineId":"hoonarqube","id":"go:S122","impacts":[{"severity":"MEDIUM","softwareQuality":"MAINTAINABILITY"}],"name":"go:S122","severity":"MAJOR","type":"CODE_SMELL"},{"cleanCodeAttribute":"CLEAR","description":"Hoonarqube finding for `go:S126`.","engineId":"hoonarqube","id":"go:S126","impacts":[{"severity":"HIGH","softwareQuality":"MAINTAINABILITY"}],"name":"go:S126","severity":"CRITICAL","type":"CODE_SMELL"},{"cleanCodeAttribute":"FOCUSED","description":"Hoonarqube finding for `go:S134`.","engineId":"hoonarqube","id":"go:S134","impacts":[{"severity":"HIGH","softwareQuality":"MAINTAINABILITY"}],"name":"go:S134","severity":"CRITICAL","type":"CODE_SMELL"},{"cleanCodeAttribute":"FOCUSED","description":"Hoonarqube finding for `go:S1821`.","engineId":"hoonarqube","id":"go:S1821","impacts":[{"severity":"HIGH","softwareQuality":"MAINTAINABILITY"}],"name":"go:S1821","severity":"CRITICAL","type":"CODE_SMELL"},{"cleanCodeAttribute":"FOCUSED","description":"Hoonarqube finding for `go:S3776`.","engineId":"hoonarqube","id":"go:S3776","impacts":[{"severity":"HIGH","softwareQuality":"MAINTAINABILITY"}],"name":"go:S3776","severity":"CRITICAL","type":"CODE_SMELL"}]}"#;