From 980a4019c797e95323f072880c6c0bf90a106e22 Mon Sep 17 00:00:00 2001 From: squid-protocol Date: Sat, 5 Sep 2026 15:35:28 -0400 Subject: [PATCH] fix(core-engine): Mode D anchors a function at its declaration, not its brace (#2758) Mode D's openers include the bare `{`, so a K&R-style shell function -- declaration on one line, brace on the next, which is how curl's own initscript.sh is written throughout -- reported `start_line` on the BRACE. The lookback in `_slice_by_keywords` already had to walk back a line to find the name (L5183-L5198); it recovered the name and left the position behind. `start_line` is not diagnostic-only: `sarif_recorder.py` uses it as the `locations` line of every SARIF result -- the artifact GitHub code scanning and IDEs annotate from -- and `spatial_correlation.py` builds each function's dampener window as `(start_line, end_line + 1)`, so a window starting a line late can miss a signal sitting on the declaration itself. ONLY THE LINE ANCHOR MOVES, and that limit is the whole fix. The issue's own fix shape said to move the anchor and leave the satellite's text alone, which sounded like it meant the `sat_start_line`/`sat_start_char` pair. It does not: `_calculate_block_metrics` slices the file's `spatial_map` with `bisect(indices, start_char)`, so the char coordinate is the block's own address, not metadata. Moving both was measured first and produced 601 golden-master differences with `versioned_copy` in curl/initscript.sh going from 0 to 36 control-flow branches -- every signal between the declaration and the opener re-attributed into the function. Moving the line alone: 20. Safe in Mode D specifically because it computes `sat_end_line` independently (L5224) rather than as `start_line + loc - 1` the way the brace and label modes do -- so the span EXTENDS backwards over the declaration instead of sliding a line earlier. A test asserts `loc` and `end_line` do not move, since that is the property the change rests on. Measured on the language-crucible: functions whose `start_line` sits BELOW their declaration fall 19 -> 6, and all 13 shell cases are fixed. The 3448 functions whose `start_line` sits ABOVE the name are untouched -- those are annotations and attributes (`@Override`, `@isTest`, `#[proc_macro_derive]`), where the declaration genuinely does begin at the annotation. The residual 6 were each checked by hand and are artifacts of the measuring heuristic matching an unrelated occurrence of the name above the declaration (a `getLogger(EmailService)` call, prose in a comment, a `(provide ...)` export list), not the Mode D shape. Golden masters re-blessed: 20 differences, 0 off-target, 0 topology movement. `Start Line` is the only field that changed inside `5. Function Analysis` (137 functions); the 3 `Documentation Exposure` cells and their 2 roll-ups are the line window now including the declaration, which is the intended effect. Full suite 7634 passed serially; audit_check clear; tree-sitter 30/30 OK. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01WfeHRWra1d6Z5uSReFajSq --- gitgalaxy/core/detector.py | 38 +++- tests/core_engine/test_detector.py | 49 ++++ tests/golden_master_audit.json | 288 ++++++++++++------------ tests/golden_master_zero_dep_audit.json | 288 ++++++++++++------------ 4 files changed, 373 insertions(+), 290 deletions(-) diff --git a/gitgalaxy/core/detector.py b/gitgalaxy/core/detector.py index 7e895eb8ab..a6daa555cf 100644 --- a/gitgalaxy/core/detector.py +++ b/gitgalaxy/core/detector.py @@ -5181,8 +5181,12 @@ def _slice_by_keywords( if stack_depth == 0: if net_change > 0: satellite_name = self._extract_semantic_name(safe_line, lang_key) + # #2758: index of the line the name was recovered FROM, when + # that is not the opener line itself. + decl_line_idx = None if satellite_name == "Anonymous_Block": - for past_safe in reversed(past_safe_lines): + for past_idx in range(len(past_safe_lines) - 1, -1, -1): + past_safe = past_safe_lines[past_idx] if past_safe.strip(): # #2438: skip a self-contained one-liner # declaration -- its name belongs to its own node. @@ -5195,13 +5199,43 @@ def _slice_by_keywords( fallback = self._extract_semantic_name(past_safe, lang_key) if fallback != "Anonymous_Block": satellite_name = fallback + decl_line_idx = past_idx break current_satellite = [orig_line] is_current_satellite_class = ( bool(class_opener_pattern.search(safe_line)) if class_opener_pattern else False ) stack_depth += net_change - sat_start_line = current_line_offset + 1 + # #2758: anchor the node where it is DECLARED, not where its + # body happens to open. Mode D's openers include the bare + # brace, so a K&R-style declaration (`f_create_role()` on one + # line, `{` on the next -- how curl's own initscript.sh is + # written throughout) reported start_line on the brace. The + # lookback above already had to walk back to find the name; + # it recovered the name and left the position behind. + # + # This moves only the ANCHOR, never the satellite's text: + # `current_satellite` still begins at the opener, so `loc`, + # `args` and the per-function hit_vector are untouched, and + # the declaration line's own keywords stay where they are. + # Safe here specifically because Mode D computes + # `sat_end_line` independently (see below) rather than as + # `start_line + loc - 1` the way the brace/label modes do -- + # so the span EXTENDS backwards over the declaration instead + # of sliding one line earlier. + sat_start_line = ( + offset + decl_line_idx + 1 if decl_line_idx is not None else current_line_offset + 1 + ) + # `sat_start_char` deliberately does NOT follow it. The char + # pair is not metadata: `_calculate_block_metrics` slices the + # file's `spatial_map` with `bisect(indices, start_char)`, so + # moving it re-attributes every signal between the + # declaration and the opener into this function. Measured + # when this fix first moved both: `versioned_copy` in + # curl/initscript.sh went from 0 to 36 control-flow branches. + # The line anchor is what the recorders and SARIF report and + # what `spatial_correlation` scopes on; the char pair stays + # the block's own coordinates. sat_start_char = current_char_offset else: global_dust.append(orig_line) diff --git a/tests/core_engine/test_detector.py b/tests/core_engine/test_detector.py index af034fafbb..218372047b 100644 --- a/tests/core_engine/test_detector.py +++ b/tests/core_engine/test_detector.py @@ -4103,3 +4103,52 @@ def test_keyword_buckets_are_neither_duplicates_nor_orphans(): eq = docker.splice(code, "")["equations"] assert not eq.get("duplicate_logic"), "identical RUN instructions are not duplicated functions" assert not eq.get("orphaned_logic"), "a RUN bucket is a keyword, and a keyword cannot be orphaned" + + +def test_mode_d_anchors_a_function_at_its_declaration_not_its_opening_brace(): + """#2758: Mode D's openers include the bare `{`, so a K&R-style shell + function -- declaration on one line, brace on the next, which is how curl's + own `initscript.sh` is written throughout -- reported `start_line` on the + BRACE. The lookback at `_slice_by_keywords` already had to walk back a line + to find the name; it recovered the name and left the position behind. + + `start_line` is not diagnostic-only: `sarif_recorder.py` uses it as the + `locations` line of every SARIF result, and `spatial_correlation.py` builds + each function's dampener window as `(start_line, end_line + 1)`, so a window + starting one line late can miss a signal sitting on the declaration itself. + + Only the ANCHOR moves. The satellite's text still begins at the opener, so + `loc` is unchanged -- asserted below, because that is what keeps the span + extending backwards over the declaration rather than sliding a line earlier. + Mode D can do that safely only because it computes `sat_end_line` + independently, unlike the brace/label modes' `start_line + loc - 1`. + """ + from gitgalaxy.standards.language_standards import LANGUAGE_DEFINITIONS + + shell = StructuralExtractor("shell", LANGUAGE_DEFINITIONS) + code = 'f_create_role()\n{\n : "$1"\n}\n\nf_inline() {\n : "$1"\n}\n' + by_name = {f["name"]: f for f in shell.splice(code, "").get("functions", [])} + + kr = by_name["f_create_role"] + assert kr["start_line"] == 1, "the K&R declaration is on line 1, not the brace on line 2" + assert kr["end_line"] == 4, "the end must not move with the start -- the span extends, not slides" + assert kr["loc"] == 3, "the satellite's own text is untouched; only the anchor moved" + + same_line = by_name["f_inline"] + assert same_line["start_line"] == 6, "the same-line brace form was already correct and must not move" + assert same_line["end_line"] == 8 + assert same_line["loc"] == 3 + + +def test_mode_d_anchor_does_not_move_when_the_name_is_on_the_opener(): + """#2758's guard: the anchor only follows a name the lookback had to recover + from an earlier line. When `_extract_semantic_name` finds the name on the + opener line itself -- the common case in every Mode D language -- nothing + about the position changes. + """ + from gitgalaxy.standards.language_standards import LANGUAGE_DEFINITIONS + + shell = StructuralExtractor("shell", LANGUAGE_DEFINITIONS) + code = 'function f_named {\n : "$1"\n}\n' + funcs = [f for f in shell.splice(code, "").get("functions", []) if f["name"] == "f_named"] + assert funcs and funcs[0]["start_line"] == 1 diff --git a/tests/golden_master_audit.json b/tests/golden_master_audit.json index 60679b045a..a6326d46ff 100644 --- a/tests/golden_master_audit.json +++ b/tests/golden_master_audit.json @@ -12,8 +12,8 @@ }, "Target Root Name": "data", "Absolute Project Path": "/srv/storage_16tb/projects/gitgalaxy/language-crucible/data", - "Analysis ISO Timestamp": "2026-09-05T15:40:44.316547+00:00", - "Total Scan Duration": "26.46 seconds" + "Analysis ISO Timestamp": "2026-09-05T19:32:05.898017+00:00", + "Total Scan Duration": "26.28 seconds" }, "Source Control Footprint (Immutable Anchor)": { "Active Branch": "HEAD", @@ -239,7 +239,7 @@ "avg_cognitive_load": 22.578, "avg_safety_score": 45.662, "avg_tech_debt": 29.91, - "avg_documentation": 7.916 + "avg_documentation": 7.897 }, "composition": { "markdown": { @@ -3578,7 +3578,7 @@ "spec_match": 25.0, "stability": 47.5, "churn": 0.0, - "documentation": 8.02, + "documentation": 5.28, "secrets_risk": 0.0 } }, @@ -119335,7 +119335,7 @@ "Control Flow Branches": 4, "Input Parameters": 0, "Control Flow Ratio": "57.1%", - "Start Line": 6, + "Start Line": 5, "End Line": 15 }, { @@ -542478,7 +542478,7 @@ "Control Flow Branches": 5, "Input Parameters": 0, "Control Flow Ratio": "62.5%", - "Start Line": 10, + "Start Line": 9, "End Line": 16 }, { @@ -545933,7 +545933,7 @@ "Specification Exposure": "25.0%", "Instability Exposure": "47.5%", "Volatility Exposure": "0.0%", - "Documentation Exposure": "8.02%", + "Documentation Exposure": "5.28%", "Hardcoded Payload Artifacts": "0.0%" }, "Files": { @@ -548458,7 +548458,7 @@ "Specification Exposure": "100.0%", "Instability Exposure": "50.0%", "Volatility Exposure": "0.0%", - "Documentation Exposure": "42.83%", + "Documentation Exposure": "22.11%", "Hardcoded Payload Artifacts": "0.0%" }, "5. Function Analysis": [ @@ -548469,7 +548469,7 @@ "Control Flow Branches": 31, "Input Parameters": 3, "Control Flow Ratio": "93.9%", - "Start Line": 175, + "Start Line": 173, "End Line": 236 }, { @@ -548479,7 +548479,7 @@ "Control Flow Branches": 9, "Input Parameters": 2, "Control Flow Ratio": "69.2%", - "Start Line": 123, + "Start Line": 121, "End Line": 129 }, { @@ -548489,7 +548489,7 @@ "Control Flow Branches": 9, "Input Parameters": 1, "Control Flow Ratio": "90.0%", - "Start Line": 140, + "Start Line": 138, "End Line": 164 }, { @@ -548509,7 +548509,7 @@ "Control Flow Branches": 6, "Input Parameters": 2, "Control Flow Ratio": "60.0%", - "Start Line": 243, + "Start Line": 241, "End Line": 256 }, { @@ -548519,7 +548519,7 @@ "Control Flow Branches": 4, "Input Parameters": 1, "Control Flow Ratio": "100.0%", - "Start Line": 283, + "Start Line": 281, "End Line": 297 }, { @@ -548559,7 +548559,7 @@ "Control Flow Branches": 0, "Input Parameters": 2, "Control Flow Ratio": "0.0%", - "Start Line": 263, + "Start Line": 261, "End Line": 271 }, { @@ -548569,7 +548569,7 @@ "Control Flow Branches": 1, "Input Parameters": 0, "Control Flow Ratio": "50.0%", - "Start Line": 27, + "Start Line": 26, "End Line": 29 }, { @@ -548579,7 +548579,7 @@ "Control Flow Branches": 0, "Input Parameters": 2, "Control Flow Ratio": "0.0%", - "Start Line": 33, + "Start Line": 31, "End Line": 38 } ], @@ -548803,7 +548803,7 @@ "Control Flow Branches": 0, "Input Parameters": 2, "Control Flow Ratio": "0.0%", - "Start Line": 59, + "Start Line": 57, "End Line": 69 } ], @@ -549204,7 +549204,7 @@ "Specification Exposure": "100.0%", "Instability Exposure": "50.0%", "Volatility Exposure": "0.0%", - "Documentation Exposure": "34.23%", + "Documentation Exposure": "0.0%", "Hardcoded Payload Artifacts": "0.0%" }, "5. Function Analysis": [ @@ -549215,7 +549215,7 @@ "Control Flow Branches": 30, "Input Parameters": 2, "Control Flow Ratio": "90.9%", - "Start Line": 39, + "Start Line": 37, "End Line": 124 }, { @@ -633463,7 +633463,7 @@ "Control Flow Branches": 0, "Input Parameters": 1, "Control Flow Ratio": "0.0%", - "Start Line": 24, + "Start Line": 23, "End Line": 28 } ], @@ -665031,7 +665031,7 @@ "Control Flow Branches": 5, "Input Parameters": 3, "Control Flow Ratio": "83.3%", - "Start Line": 42, + "Start Line": 41, "End Line": 51 }, { @@ -665061,7 +665061,7 @@ "Control Flow Branches": 1, "Input Parameters": 0, "Control Flow Ratio": "100.0%", - "Start Line": 17, + "Start Line": 16, "End Line": 20 } ], @@ -666477,7 +666477,7 @@ "Control Flow Branches": 37, "Input Parameters": 0, "Control Flow Ratio": "86.0%", - "Start Line": 24, + "Start Line": 23, "End Line": 94 }, { @@ -666517,7 +666517,7 @@ "Control Flow Branches": 1, "Input Parameters": 0, "Control Flow Ratio": "50.0%", - "Start Line": 4, + "Start Line": 3, "End Line": 11 }, { @@ -666527,7 +666527,7 @@ "Control Flow Branches": 0, "Input Parameters": 1, "Control Flow Ratio": "0.0%", - "Start Line": 14, + "Start Line": 13, "End Line": 21 } ], @@ -666695,7 +666695,7 @@ "Control Flow Branches": 26, "Input Parameters": 0, "Control Flow Ratio": "86.7%", - "Start Line": 579, + "Start Line": 578, "End Line": 614 }, { @@ -666705,7 +666705,7 @@ "Control Flow Branches": 8, "Input Parameters": 7, "Control Flow Ratio": "61.5%", - "Start Line": 380, + "Start Line": 379, "End Line": 412 }, { @@ -666715,7 +666715,7 @@ "Control Flow Branches": 12, "Input Parameters": 1, "Control Flow Ratio": "63.2%", - "Start Line": 349, + "Start Line": 348, "End Line": 371 }, { @@ -666725,7 +666725,7 @@ "Control Flow Branches": 16, "Input Parameters": 0, "Control Flow Ratio": "80.0%", - "Start Line": 914, + "Start Line": 913, "End Line": 928 }, { @@ -666735,7 +666735,7 @@ "Control Flow Branches": 16, "Input Parameters": 0, "Control Flow Ratio": "80.0%", - "Start Line": 658, + "Start Line": 657, "End Line": 668 }, { @@ -666745,7 +666745,7 @@ "Control Flow Branches": 10, "Input Parameters": 1, "Control Flow Ratio": "76.9%", - "Start Line": 191, + "Start Line": 190, "End Line": 203 }, { @@ -666755,7 +666755,7 @@ "Control Flow Branches": 14, "Input Parameters": 0, "Control Flow Ratio": "77.8%", - "Start Line": 560, + "Start Line": 559, "End Line": 569 }, { @@ -666765,7 +666765,7 @@ "Control Flow Branches": 12, "Input Parameters": 0, "Control Flow Ratio": "66.7%", - "Start Line": 206, + "Start Line": 205, "End Line": 237 }, { @@ -666775,7 +666775,7 @@ "Control Flow Branches": 12, "Input Parameters": 0, "Control Flow Ratio": "75.0%", - "Start Line": 712, + "Start Line": 711, "End Line": 723 }, { @@ -666785,7 +666785,7 @@ "Control Flow Branches": 11, "Input Parameters": 0, "Control Flow Ratio": "73.3%", - "Start Line": 83, + "Start Line": 82, "End Line": 108 }, { @@ -666795,7 +666795,7 @@ "Control Flow Branches": 11, "Input Parameters": 0, "Control Flow Ratio": "84.6%", - "Start Line": 757, + "Start Line": 756, "End Line": 773 }, { @@ -666805,7 +666805,7 @@ "Control Flow Branches": 10, "Input Parameters": 0, "Control Flow Ratio": "52.6%", - "Start Line": 732, + "Start Line": 731, "End Line": 748 }, { @@ -666815,7 +666815,7 @@ "Control Flow Branches": 10, "Input Parameters": 0, "Control Flow Ratio": "71.4%", - "Start Line": 421, + "Start Line": 420, "End Line": 431 }, { @@ -666825,7 +666825,7 @@ "Control Flow Branches": 10, "Input Parameters": 0, "Control Flow Ratio": "76.9%", - "Start Line": 623, + "Start Line": 622, "End Line": 634 }, { @@ -666835,7 +666835,7 @@ "Control Flow Branches": 9, "Input Parameters": 0, "Control Flow Ratio": "90.0%", - "Start Line": 643, + "Start Line": 642, "End Line": 649 }, { @@ -666845,7 +666845,7 @@ "Control Flow Branches": 5, "Input Parameters": 0, "Control Flow Ratio": "38.5%", - "Start Line": 440, + "Start Line": 439, "End Line": 465 }, { @@ -666855,7 +666855,7 @@ "Control Flow Branches": 6, "Input Parameters": 0, "Control Flow Ratio": "85.7%", - "Start Line": 677, + "Start Line": 676, "End Line": 683 }, { @@ -666865,7 +666865,7 @@ "Control Flow Branches": 5, "Input Parameters": 0, "Control Flow Ratio": "83.3%", - "Start Line": 824, + "Start Line": 823, "End Line": 830 }, { @@ -666875,7 +666875,7 @@ "Control Flow Branches": 3, "Input Parameters": 0, "Control Flow Ratio": "27.3%", - "Start Line": 117, + "Start Line": 116, "End Line": 141 }, { @@ -666885,7 +666885,7 @@ "Control Flow Branches": 3, "Input Parameters": 0, "Control Flow Ratio": "42.9%", - "Start Line": 535, + "Start Line": 534, "End Line": 551 }, { @@ -666895,7 +666895,7 @@ "Control Flow Branches": 3, "Input Parameters": 0, "Control Flow Ratio": "42.9%", - "Start Line": 961, + "Start Line": 960, "End Line": 977 }, { @@ -666905,7 +666905,7 @@ "Control Flow Branches": 3, "Input Parameters": 0, "Control Flow Ratio": "33.3%", - "Start Line": 30, + "Start Line": 29, "End Line": 41 }, { @@ -666915,7 +666915,7 @@ "Control Flow Branches": 3, "Input Parameters": 0, "Control Flow Ratio": "37.5%", - "Start Line": 515, + "Start Line": 514, "End Line": 526 }, { @@ -666925,7 +666925,7 @@ "Control Flow Branches": 3, "Input Parameters": 0, "Control Flow Ratio": "60.0%", - "Start Line": 839, + "Start Line": 838, "End Line": 845 }, { @@ -666935,7 +666935,7 @@ "Control Flow Branches": 1, "Input Parameters": 0, "Control Flow Ratio": "2.0%", - "Start Line": 44, + "Start Line": 43, "End Line": 74 }, { @@ -666945,7 +666945,7 @@ "Control Flow Branches": 2, "Input Parameters": 0, "Control Flow Ratio": "33.3%", - "Start Line": 246, + "Start Line": 245, "End Line": 250 }, { @@ -666955,7 +666955,7 @@ "Control Flow Branches": 1, "Input Parameters": 0, "Control Flow Ratio": "100.0%", - "Start Line": 145, + "Start Line": 144, "End Line": 148 }, { @@ -666965,7 +666965,7 @@ "Control Flow Branches": 1, "Input Parameters": 0, "Control Flow Ratio": "100.0%", - "Start Line": 313, + "Start Line": 312, "End Line": 316 }, { @@ -666975,7 +666975,7 @@ "Control Flow Branches": 1, "Input Parameters": 0, "Control Flow Ratio": "50.0%", - "Start Line": 573, + "Start Line": 572, "End Line": 576 }, { @@ -666985,7 +666985,7 @@ "Control Flow Branches": 1, "Input Parameters": 0, "Control Flow Ratio": "33.3%", - "Start Line": 289, + "Start Line": 288, "End Line": 291 }, { @@ -666995,7 +666995,7 @@ "Control Flow Branches": 1, "Input Parameters": 0, "Control Flow Ratio": "100.0%", - "Start Line": 331, + "Start Line": 330, "End Line": 333 }, { @@ -667005,7 +667005,7 @@ "Control Flow Branches": 1, "Input Parameters": 0, "Control Flow Ratio": "100.0%", - "Start Line": 375, + "Start Line": 374, "End Line": 377 }, { @@ -667015,7 +667015,7 @@ "Control Flow Branches": 1, "Input Parameters": 0, "Control Flow Ratio": "100.0%", - "Start Line": 618, + "Start Line": 617, "End Line": 620 }, { @@ -667025,7 +667025,7 @@ "Control Flow Branches": 1, "Input Parameters": 0, "Control Flow Ratio": "50.0%", - "Start Line": 727, + "Start Line": 726, "End Line": 729 }, { @@ -667035,7 +667035,7 @@ "Control Flow Branches": 1, "Input Parameters": 0, "Control Flow Ratio": "33.3%", - "Start Line": 777, + "Start Line": 776, "End Line": 779 }, { @@ -667045,7 +667045,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 151, + "Start Line": 150, "End Line": 170 }, { @@ -667055,7 +667055,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 487, + "Start Line": 486, "End Line": 506 }, { @@ -667065,7 +667065,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 980, + "Start Line": 979, "End Line": 1027 }, { @@ -667075,7 +667075,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 294, + "Start Line": 293, "End Line": 309 }, { @@ -667085,7 +667085,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 800, + "Start Line": 799, "End Line": 815 }, { @@ -667095,7 +667095,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 854, + "Start Line": 853, "End Line": 868 }, { @@ -667105,7 +667105,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 877, + "Start Line": 876, "End Line": 891 }, { @@ -667115,7 +667115,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 937, + "Start Line": 936, "End Line": 952 }, { @@ -667125,7 +667125,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 259, + "Start Line": 258, "End Line": 272 }, { @@ -667135,7 +667135,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 692, + "Start Line": 691, "End Line": 702 }, { @@ -667145,7 +667145,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 782, + "Start Line": 781, "End Line": 791 }, { @@ -667165,7 +667165,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 319, + "Start Line": 318, "End Line": 327 }, { @@ -667175,7 +667175,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 900, + "Start Line": 899, "End Line": 905 }, { @@ -667185,7 +667185,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 179, + "Start Line": 178, "End Line": 182 }, { @@ -667195,7 +667195,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 281, + "Start Line": 280, "End Line": 285 }, { @@ -667205,7 +667205,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 336, + "Start Line": 335, "End Line": 340 }, { @@ -667215,7 +667215,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 474, + "Start Line": 473, "End Line": 477 }, { @@ -667225,7 +667225,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 481, + "Start Line": 480, "End Line": 484 }, { @@ -667235,7 +667235,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 706, + "Start Line": 705, "End Line": 709 }, { @@ -667245,7 +667245,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 112, + "Start Line": 111, "End Line": 114 }, { @@ -667255,7 +667255,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 174, + "Start Line": 173, "End Line": 176 }, { @@ -667265,7 +667265,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 186, + "Start Line": 185, "End Line": 188 }, { @@ -667275,7 +667275,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 241, + "Start Line": 240, "End Line": 243 }, { @@ -667285,7 +667285,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 254, + "Start Line": 253, "End Line": 256 }, { @@ -667295,7 +667295,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 276, + "Start Line": 275, "End Line": 278 }, { @@ -667305,7 +667305,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 344, + "Start Line": 343, "End Line": 346 }, { @@ -667315,7 +667315,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 416, + "Start Line": 415, "End Line": 418 }, { @@ -667325,7 +667325,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 435, + "Start Line": 434, "End Line": 437 }, { @@ -667335,7 +667335,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 469, + "Start Line": 468, "End Line": 471 }, { @@ -667345,7 +667345,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 510, + "Start Line": 509, "End Line": 512 }, { @@ -667355,7 +667355,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 530, + "Start Line": 529, "End Line": 532 }, { @@ -667365,7 +667365,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 555, + "Start Line": 554, "End Line": 557 }, { @@ -667375,7 +667375,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 638, + "Start Line": 637, "End Line": 640 }, { @@ -667385,7 +667385,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 653, + "Start Line": 652, "End Line": 655 }, { @@ -667395,7 +667395,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 672, + "Start Line": 671, "End Line": 674 }, { @@ -667405,7 +667405,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 687, + "Start Line": 686, "End Line": 689 }, { @@ -667415,7 +667415,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 752, + "Start Line": 751, "End Line": 754 }, { @@ -667425,7 +667425,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 795, + "Start Line": 794, "End Line": 797 }, { @@ -667435,7 +667435,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 819, + "Start Line": 818, "End Line": 821 }, { @@ -667445,7 +667445,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 834, + "Start Line": 833, "End Line": 836 }, { @@ -667455,7 +667455,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 849, + "Start Line": 848, "End Line": 851 }, { @@ -667465,7 +667465,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 872, + "Start Line": 871, "End Line": 874 }, { @@ -667475,7 +667475,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 895, + "Start Line": 894, "End Line": 897 }, { @@ -667485,7 +667485,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 909, + "Start Line": 908, "End Line": 911 }, { @@ -667495,7 +667495,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 932, + "Start Line": 931, "End Line": 934 }, { @@ -667505,7 +667505,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 956, + "Start Line": 955, "End Line": 958 } ], @@ -668244,7 +668244,7 @@ "Control Flow Branches": 9, "Input Parameters": 0, "Control Flow Ratio": "100.0%", - "Start Line": 13, + "Start Line": 12, "End Line": 27 }, { @@ -668254,7 +668254,7 @@ "Control Flow Branches": 8, "Input Parameters": 0, "Control Flow Ratio": "72.7%", - "Start Line": 38, + "Start Line": 37, "End Line": 51 }, { @@ -668274,7 +668274,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 6, + "Start Line": 5, "End Line": 10 }, { @@ -668284,7 +668284,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 33, + "Start Line": 32, "End Line": 35 } ], @@ -687943,7 +687943,7 @@ "Control Flow Branches": 13, "Input Parameters": 0, "Control Flow Ratio": "76.5%", - "Start Line": 163, + "Start Line": 162, "End Line": 210 }, { @@ -687953,7 +687953,7 @@ "Control Flow Branches": 11, "Input Parameters": 0, "Control Flow Ratio": "73.3%", - "Start Line": 90, + "Start Line": 89, "End Line": 160 }, { @@ -687963,7 +687963,7 @@ "Control Flow Branches": 8, "Input Parameters": 0, "Control Flow Ratio": "72.7%", - "Start Line": 66, + "Start Line": 65, "End Line": 87 }, { @@ -687973,7 +687973,7 @@ "Control Flow Branches": 6, "Input Parameters": 0, "Control Flow Ratio": "75.0%", - "Start Line": 42, + "Start Line": 41, "End Line": 63 }, { @@ -687983,7 +687983,7 @@ "Control Flow Branches": 4, "Input Parameters": 0, "Control Flow Ratio": "100.0%", - "Start Line": 324, + "Start Line": 323, "End Line": 372 }, { @@ -687993,7 +687993,7 @@ "Control Flow Branches": 5, "Input Parameters": 0, "Control Flow Ratio": "83.3%", - "Start Line": 33, + "Start Line": 32, "End Line": 39 }, { @@ -688023,7 +688023,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 264, + "Start Line": 263, "End Line": 299 }, { @@ -688033,7 +688033,7 @@ "Control Flow Branches": 0, "Input Parameters": 2, "Control Flow Ratio": "0.0%", - "Start Line": 18, + "Start Line": 17, "End Line": 30 }, { @@ -688043,7 +688043,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 250, + "Start Line": 249, "End Line": 261 }, { @@ -688053,7 +688053,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 236, + "Start Line": 235, "End Line": 247 }, { @@ -688063,7 +688063,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 312, + "Start Line": 311, "End Line": 321 }, { @@ -688073,7 +688073,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 302, + "Start Line": 301, "End Line": 309 } ], @@ -689685,7 +689685,7 @@ "Control Flow Branches": 10, "Input Parameters": 3, "Control Flow Ratio": "62.5%", - "Start Line": 93, + "Start Line": 92, "End Line": 110 }, { @@ -689695,7 +689695,7 @@ "Control Flow Branches": 11, "Input Parameters": 0, "Control Flow Ratio": "91.7%", - "Start Line": 114, + "Start Line": 113, "End Line": 121 }, { @@ -689705,7 +689705,7 @@ "Control Flow Branches": 10, "Input Parameters": 0, "Control Flow Ratio": "83.3%", - "Start Line": 194, + "Start Line": 193, "End Line": 213 }, { @@ -689715,7 +689715,7 @@ "Control Flow Branches": 8, "Input Parameters": 0, "Control Flow Ratio": "36.4%", - "Start Line": 246, + "Start Line": 245, "End Line": 274 }, { @@ -689725,7 +689725,7 @@ "Control Flow Branches": 5, "Input Parameters": 0, "Control Flow Ratio": "35.7%", - "Start Line": 217, + "Start Line": 216, "End Line": 242 }, { @@ -689745,7 +689745,7 @@ "Control Flow Branches": 4, "Input Parameters": 0, "Control Flow Ratio": "100.0%", - "Start Line": 278, + "Start Line": 277, "End Line": 312 }, { @@ -689755,7 +689755,7 @@ "Control Flow Branches": 2, "Input Parameters": 0, "Control Flow Ratio": "28.6%", - "Start Line": 61, + "Start Line": 60, "End Line": 79 }, { @@ -689765,7 +689765,7 @@ "Control Flow Branches": 2, "Input Parameters": 0, "Control Flow Ratio": "40.0%", - "Start Line": 43, + "Start Line": 42, "End Line": 57 }, { @@ -689775,7 +689775,7 @@ "Control Flow Branches": 1, "Input Parameters": 0, "Control Flow Ratio": "50.0%", - "Start Line": 132, + "Start Line": 131, "End Line": 135 }, { @@ -689785,7 +689785,7 @@ "Control Flow Branches": 1, "Input Parameters": 0, "Control Flow Ratio": "100.0%", - "Start Line": 139, + "Start Line": 138, "End Line": 143 }, { @@ -689795,7 +689795,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 168, + "Start Line": 167, "End Line": 190 }, { @@ -689805,7 +689805,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 147, + "Start Line": 146, "End Line": 164 }, { @@ -689815,7 +689815,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 83, + "Start Line": 82, "End Line": 89 }, { @@ -689825,7 +689825,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 316, + "Start Line": 315, "End Line": 323 }, { @@ -689835,7 +689835,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 125, + "Start Line": 124, "End Line": 128 } ], @@ -715964,7 +715964,7 @@ "Control Flow Branches": 5, "Input Parameters": 2, "Control Flow Ratio": "55.6%", - "Start Line": 55, + "Start Line": 54, "End Line": 83 }, { @@ -715984,7 +715984,7 @@ "Control Flow Branches": 0, "Input Parameters": 2, "Control Flow Ratio": "0.0%", - "Start Line": 37, + "Start Line": 36, "End Line": 51 }, { @@ -715994,7 +715994,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 31, + "Start Line": 30, "End Line": 33 } ], @@ -718966,7 +718966,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 10, + "Start Line": 9, "End Line": 21 }, { @@ -718976,7 +718976,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 5, + "Start Line": 4, "End Line": 7 } ], @@ -720314,7 +720314,7 @@ "Control Flow Branches": 3, "Input Parameters": 1, "Control Flow Ratio": "50.0%", - "Start Line": 60, + "Start Line": 59, "End Line": 84 }, { @@ -720324,7 +720324,7 @@ "Control Flow Branches": 3, "Input Parameters": 1, "Control Flow Ratio": "60.0%", - "Start Line": 41, + "Start Line": 40, "End Line": 47 } ], diff --git a/tests/golden_master_zero_dep_audit.json b/tests/golden_master_zero_dep_audit.json index dac179961c..f7b54c08db 100644 --- a/tests/golden_master_zero_dep_audit.json +++ b/tests/golden_master_zero_dep_audit.json @@ -12,8 +12,8 @@ }, "Target Root Name": "data", "Absolute Project Path": "/srv/storage_16tb/projects/gitgalaxy/language-crucible/data", - "Analysis ISO Timestamp": "2026-09-05T15:41:15.436833+00:00", - "Total Scan Duration": "25.18 seconds" + "Analysis ISO Timestamp": "2026-09-05T19:32:37.341278+00:00", + "Total Scan Duration": "25.37 seconds" }, "Source Control Footprint (Immutable Anchor)": { "Active Branch": "HEAD", @@ -239,7 +239,7 @@ "avg_cognitive_load": 22.578, "avg_safety_score": 45.662, "avg_tech_debt": 29.91, - "avg_documentation": 7.916 + "avg_documentation": 7.897 }, "composition": { "markdown": { @@ -3578,7 +3578,7 @@ "spec_match": 25.0, "stability": 47.5, "churn": 0.0, - "documentation": 8.02, + "documentation": 5.28, "secrets_risk": 0.0 } }, @@ -119335,7 +119335,7 @@ "Control Flow Branches": 4, "Input Parameters": 0, "Control Flow Ratio": "57.1%", - "Start Line": 6, + "Start Line": 5, "End Line": 15 }, { @@ -542478,7 +542478,7 @@ "Control Flow Branches": 5, "Input Parameters": 0, "Control Flow Ratio": "62.5%", - "Start Line": 10, + "Start Line": 9, "End Line": 16 }, { @@ -545933,7 +545933,7 @@ "Specification Exposure": "25.0%", "Instability Exposure": "47.5%", "Volatility Exposure": "0.0%", - "Documentation Exposure": "8.02%", + "Documentation Exposure": "5.28%", "Hardcoded Payload Artifacts": "0.0%" }, "Files": { @@ -548458,7 +548458,7 @@ "Specification Exposure": "100.0%", "Instability Exposure": "50.0%", "Volatility Exposure": "0.0%", - "Documentation Exposure": "42.83%", + "Documentation Exposure": "22.11%", "Hardcoded Payload Artifacts": "0.0%" }, "5. Function Analysis": [ @@ -548469,7 +548469,7 @@ "Control Flow Branches": 31, "Input Parameters": 3, "Control Flow Ratio": "93.9%", - "Start Line": 175, + "Start Line": 173, "End Line": 236 }, { @@ -548479,7 +548479,7 @@ "Control Flow Branches": 9, "Input Parameters": 2, "Control Flow Ratio": "69.2%", - "Start Line": 123, + "Start Line": 121, "End Line": 129 }, { @@ -548489,7 +548489,7 @@ "Control Flow Branches": 9, "Input Parameters": 1, "Control Flow Ratio": "90.0%", - "Start Line": 140, + "Start Line": 138, "End Line": 164 }, { @@ -548509,7 +548509,7 @@ "Control Flow Branches": 6, "Input Parameters": 2, "Control Flow Ratio": "60.0%", - "Start Line": 243, + "Start Line": 241, "End Line": 256 }, { @@ -548519,7 +548519,7 @@ "Control Flow Branches": 4, "Input Parameters": 1, "Control Flow Ratio": "100.0%", - "Start Line": 283, + "Start Line": 281, "End Line": 297 }, { @@ -548559,7 +548559,7 @@ "Control Flow Branches": 0, "Input Parameters": 2, "Control Flow Ratio": "0.0%", - "Start Line": 263, + "Start Line": 261, "End Line": 271 }, { @@ -548569,7 +548569,7 @@ "Control Flow Branches": 1, "Input Parameters": 0, "Control Flow Ratio": "50.0%", - "Start Line": 27, + "Start Line": 26, "End Line": 29 }, { @@ -548579,7 +548579,7 @@ "Control Flow Branches": 0, "Input Parameters": 2, "Control Flow Ratio": "0.0%", - "Start Line": 33, + "Start Line": 31, "End Line": 38 } ], @@ -548803,7 +548803,7 @@ "Control Flow Branches": 0, "Input Parameters": 2, "Control Flow Ratio": "0.0%", - "Start Line": 59, + "Start Line": 57, "End Line": 69 } ], @@ -549204,7 +549204,7 @@ "Specification Exposure": "100.0%", "Instability Exposure": "50.0%", "Volatility Exposure": "0.0%", - "Documentation Exposure": "34.23%", + "Documentation Exposure": "0.0%", "Hardcoded Payload Artifacts": "0.0%" }, "5. Function Analysis": [ @@ -549215,7 +549215,7 @@ "Control Flow Branches": 30, "Input Parameters": 2, "Control Flow Ratio": "90.9%", - "Start Line": 39, + "Start Line": 37, "End Line": 124 }, { @@ -633463,7 +633463,7 @@ "Control Flow Branches": 0, "Input Parameters": 1, "Control Flow Ratio": "0.0%", - "Start Line": 24, + "Start Line": 23, "End Line": 28 } ], @@ -665031,7 +665031,7 @@ "Control Flow Branches": 5, "Input Parameters": 3, "Control Flow Ratio": "83.3%", - "Start Line": 42, + "Start Line": 41, "End Line": 51 }, { @@ -665061,7 +665061,7 @@ "Control Flow Branches": 1, "Input Parameters": 0, "Control Flow Ratio": "100.0%", - "Start Line": 17, + "Start Line": 16, "End Line": 20 } ], @@ -666477,7 +666477,7 @@ "Control Flow Branches": 37, "Input Parameters": 0, "Control Flow Ratio": "86.0%", - "Start Line": 24, + "Start Line": 23, "End Line": 94 }, { @@ -666517,7 +666517,7 @@ "Control Flow Branches": 1, "Input Parameters": 0, "Control Flow Ratio": "50.0%", - "Start Line": 4, + "Start Line": 3, "End Line": 11 }, { @@ -666527,7 +666527,7 @@ "Control Flow Branches": 0, "Input Parameters": 1, "Control Flow Ratio": "0.0%", - "Start Line": 14, + "Start Line": 13, "End Line": 21 } ], @@ -666695,7 +666695,7 @@ "Control Flow Branches": 26, "Input Parameters": 0, "Control Flow Ratio": "86.7%", - "Start Line": 579, + "Start Line": 578, "End Line": 614 }, { @@ -666705,7 +666705,7 @@ "Control Flow Branches": 8, "Input Parameters": 7, "Control Flow Ratio": "61.5%", - "Start Line": 380, + "Start Line": 379, "End Line": 412 }, { @@ -666715,7 +666715,7 @@ "Control Flow Branches": 12, "Input Parameters": 1, "Control Flow Ratio": "63.2%", - "Start Line": 349, + "Start Line": 348, "End Line": 371 }, { @@ -666725,7 +666725,7 @@ "Control Flow Branches": 16, "Input Parameters": 0, "Control Flow Ratio": "80.0%", - "Start Line": 914, + "Start Line": 913, "End Line": 928 }, { @@ -666735,7 +666735,7 @@ "Control Flow Branches": 16, "Input Parameters": 0, "Control Flow Ratio": "80.0%", - "Start Line": 658, + "Start Line": 657, "End Line": 668 }, { @@ -666745,7 +666745,7 @@ "Control Flow Branches": 10, "Input Parameters": 1, "Control Flow Ratio": "76.9%", - "Start Line": 191, + "Start Line": 190, "End Line": 203 }, { @@ -666755,7 +666755,7 @@ "Control Flow Branches": 14, "Input Parameters": 0, "Control Flow Ratio": "77.8%", - "Start Line": 560, + "Start Line": 559, "End Line": 569 }, { @@ -666765,7 +666765,7 @@ "Control Flow Branches": 12, "Input Parameters": 0, "Control Flow Ratio": "66.7%", - "Start Line": 206, + "Start Line": 205, "End Line": 237 }, { @@ -666775,7 +666775,7 @@ "Control Flow Branches": 12, "Input Parameters": 0, "Control Flow Ratio": "75.0%", - "Start Line": 712, + "Start Line": 711, "End Line": 723 }, { @@ -666785,7 +666785,7 @@ "Control Flow Branches": 11, "Input Parameters": 0, "Control Flow Ratio": "73.3%", - "Start Line": 83, + "Start Line": 82, "End Line": 108 }, { @@ -666795,7 +666795,7 @@ "Control Flow Branches": 11, "Input Parameters": 0, "Control Flow Ratio": "84.6%", - "Start Line": 757, + "Start Line": 756, "End Line": 773 }, { @@ -666805,7 +666805,7 @@ "Control Flow Branches": 10, "Input Parameters": 0, "Control Flow Ratio": "52.6%", - "Start Line": 732, + "Start Line": 731, "End Line": 748 }, { @@ -666815,7 +666815,7 @@ "Control Flow Branches": 10, "Input Parameters": 0, "Control Flow Ratio": "71.4%", - "Start Line": 421, + "Start Line": 420, "End Line": 431 }, { @@ -666825,7 +666825,7 @@ "Control Flow Branches": 10, "Input Parameters": 0, "Control Flow Ratio": "76.9%", - "Start Line": 623, + "Start Line": 622, "End Line": 634 }, { @@ -666835,7 +666835,7 @@ "Control Flow Branches": 9, "Input Parameters": 0, "Control Flow Ratio": "90.0%", - "Start Line": 643, + "Start Line": 642, "End Line": 649 }, { @@ -666845,7 +666845,7 @@ "Control Flow Branches": 5, "Input Parameters": 0, "Control Flow Ratio": "38.5%", - "Start Line": 440, + "Start Line": 439, "End Line": 465 }, { @@ -666855,7 +666855,7 @@ "Control Flow Branches": 6, "Input Parameters": 0, "Control Flow Ratio": "85.7%", - "Start Line": 677, + "Start Line": 676, "End Line": 683 }, { @@ -666865,7 +666865,7 @@ "Control Flow Branches": 5, "Input Parameters": 0, "Control Flow Ratio": "83.3%", - "Start Line": 824, + "Start Line": 823, "End Line": 830 }, { @@ -666875,7 +666875,7 @@ "Control Flow Branches": 3, "Input Parameters": 0, "Control Flow Ratio": "27.3%", - "Start Line": 117, + "Start Line": 116, "End Line": 141 }, { @@ -666885,7 +666885,7 @@ "Control Flow Branches": 3, "Input Parameters": 0, "Control Flow Ratio": "42.9%", - "Start Line": 535, + "Start Line": 534, "End Line": 551 }, { @@ -666895,7 +666895,7 @@ "Control Flow Branches": 3, "Input Parameters": 0, "Control Flow Ratio": "42.9%", - "Start Line": 961, + "Start Line": 960, "End Line": 977 }, { @@ -666905,7 +666905,7 @@ "Control Flow Branches": 3, "Input Parameters": 0, "Control Flow Ratio": "33.3%", - "Start Line": 30, + "Start Line": 29, "End Line": 41 }, { @@ -666915,7 +666915,7 @@ "Control Flow Branches": 3, "Input Parameters": 0, "Control Flow Ratio": "37.5%", - "Start Line": 515, + "Start Line": 514, "End Line": 526 }, { @@ -666925,7 +666925,7 @@ "Control Flow Branches": 3, "Input Parameters": 0, "Control Flow Ratio": "60.0%", - "Start Line": 839, + "Start Line": 838, "End Line": 845 }, { @@ -666935,7 +666935,7 @@ "Control Flow Branches": 1, "Input Parameters": 0, "Control Flow Ratio": "2.0%", - "Start Line": 44, + "Start Line": 43, "End Line": 74 }, { @@ -666945,7 +666945,7 @@ "Control Flow Branches": 2, "Input Parameters": 0, "Control Flow Ratio": "33.3%", - "Start Line": 246, + "Start Line": 245, "End Line": 250 }, { @@ -666955,7 +666955,7 @@ "Control Flow Branches": 1, "Input Parameters": 0, "Control Flow Ratio": "100.0%", - "Start Line": 145, + "Start Line": 144, "End Line": 148 }, { @@ -666965,7 +666965,7 @@ "Control Flow Branches": 1, "Input Parameters": 0, "Control Flow Ratio": "100.0%", - "Start Line": 313, + "Start Line": 312, "End Line": 316 }, { @@ -666975,7 +666975,7 @@ "Control Flow Branches": 1, "Input Parameters": 0, "Control Flow Ratio": "50.0%", - "Start Line": 573, + "Start Line": 572, "End Line": 576 }, { @@ -666985,7 +666985,7 @@ "Control Flow Branches": 1, "Input Parameters": 0, "Control Flow Ratio": "33.3%", - "Start Line": 289, + "Start Line": 288, "End Line": 291 }, { @@ -666995,7 +666995,7 @@ "Control Flow Branches": 1, "Input Parameters": 0, "Control Flow Ratio": "100.0%", - "Start Line": 331, + "Start Line": 330, "End Line": 333 }, { @@ -667005,7 +667005,7 @@ "Control Flow Branches": 1, "Input Parameters": 0, "Control Flow Ratio": "100.0%", - "Start Line": 375, + "Start Line": 374, "End Line": 377 }, { @@ -667015,7 +667015,7 @@ "Control Flow Branches": 1, "Input Parameters": 0, "Control Flow Ratio": "100.0%", - "Start Line": 618, + "Start Line": 617, "End Line": 620 }, { @@ -667025,7 +667025,7 @@ "Control Flow Branches": 1, "Input Parameters": 0, "Control Flow Ratio": "50.0%", - "Start Line": 727, + "Start Line": 726, "End Line": 729 }, { @@ -667035,7 +667035,7 @@ "Control Flow Branches": 1, "Input Parameters": 0, "Control Flow Ratio": "33.3%", - "Start Line": 777, + "Start Line": 776, "End Line": 779 }, { @@ -667045,7 +667045,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 151, + "Start Line": 150, "End Line": 170 }, { @@ -667055,7 +667055,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 487, + "Start Line": 486, "End Line": 506 }, { @@ -667065,7 +667065,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 980, + "Start Line": 979, "End Line": 1027 }, { @@ -667075,7 +667075,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 294, + "Start Line": 293, "End Line": 309 }, { @@ -667085,7 +667085,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 800, + "Start Line": 799, "End Line": 815 }, { @@ -667095,7 +667095,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 854, + "Start Line": 853, "End Line": 868 }, { @@ -667105,7 +667105,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 877, + "Start Line": 876, "End Line": 891 }, { @@ -667115,7 +667115,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 937, + "Start Line": 936, "End Line": 952 }, { @@ -667125,7 +667125,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 259, + "Start Line": 258, "End Line": 272 }, { @@ -667135,7 +667135,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 692, + "Start Line": 691, "End Line": 702 }, { @@ -667145,7 +667145,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 782, + "Start Line": 781, "End Line": 791 }, { @@ -667165,7 +667165,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 319, + "Start Line": 318, "End Line": 327 }, { @@ -667175,7 +667175,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 900, + "Start Line": 899, "End Line": 905 }, { @@ -667185,7 +667185,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 179, + "Start Line": 178, "End Line": 182 }, { @@ -667195,7 +667195,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 281, + "Start Line": 280, "End Line": 285 }, { @@ -667205,7 +667205,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 336, + "Start Line": 335, "End Line": 340 }, { @@ -667215,7 +667215,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 474, + "Start Line": 473, "End Line": 477 }, { @@ -667225,7 +667225,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 481, + "Start Line": 480, "End Line": 484 }, { @@ -667235,7 +667235,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 706, + "Start Line": 705, "End Line": 709 }, { @@ -667245,7 +667245,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 112, + "Start Line": 111, "End Line": 114 }, { @@ -667255,7 +667255,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 174, + "Start Line": 173, "End Line": 176 }, { @@ -667265,7 +667265,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 186, + "Start Line": 185, "End Line": 188 }, { @@ -667275,7 +667275,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 241, + "Start Line": 240, "End Line": 243 }, { @@ -667285,7 +667285,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 254, + "Start Line": 253, "End Line": 256 }, { @@ -667295,7 +667295,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 276, + "Start Line": 275, "End Line": 278 }, { @@ -667305,7 +667305,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 344, + "Start Line": 343, "End Line": 346 }, { @@ -667315,7 +667315,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 416, + "Start Line": 415, "End Line": 418 }, { @@ -667325,7 +667325,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 435, + "Start Line": 434, "End Line": 437 }, { @@ -667335,7 +667335,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 469, + "Start Line": 468, "End Line": 471 }, { @@ -667345,7 +667345,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 510, + "Start Line": 509, "End Line": 512 }, { @@ -667355,7 +667355,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 530, + "Start Line": 529, "End Line": 532 }, { @@ -667365,7 +667365,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 555, + "Start Line": 554, "End Line": 557 }, { @@ -667375,7 +667375,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 638, + "Start Line": 637, "End Line": 640 }, { @@ -667385,7 +667385,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 653, + "Start Line": 652, "End Line": 655 }, { @@ -667395,7 +667395,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 672, + "Start Line": 671, "End Line": 674 }, { @@ -667405,7 +667405,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 687, + "Start Line": 686, "End Line": 689 }, { @@ -667415,7 +667415,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 752, + "Start Line": 751, "End Line": 754 }, { @@ -667425,7 +667425,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 795, + "Start Line": 794, "End Line": 797 }, { @@ -667435,7 +667435,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 819, + "Start Line": 818, "End Line": 821 }, { @@ -667445,7 +667445,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 834, + "Start Line": 833, "End Line": 836 }, { @@ -667455,7 +667455,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 849, + "Start Line": 848, "End Line": 851 }, { @@ -667465,7 +667465,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 872, + "Start Line": 871, "End Line": 874 }, { @@ -667475,7 +667475,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 895, + "Start Line": 894, "End Line": 897 }, { @@ -667485,7 +667485,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 909, + "Start Line": 908, "End Line": 911 }, { @@ -667495,7 +667495,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 932, + "Start Line": 931, "End Line": 934 }, { @@ -667505,7 +667505,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 956, + "Start Line": 955, "End Line": 958 } ], @@ -668244,7 +668244,7 @@ "Control Flow Branches": 9, "Input Parameters": 0, "Control Flow Ratio": "100.0%", - "Start Line": 13, + "Start Line": 12, "End Line": 27 }, { @@ -668254,7 +668254,7 @@ "Control Flow Branches": 8, "Input Parameters": 0, "Control Flow Ratio": "72.7%", - "Start Line": 38, + "Start Line": 37, "End Line": 51 }, { @@ -668274,7 +668274,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 6, + "Start Line": 5, "End Line": 10 }, { @@ -668284,7 +668284,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 33, + "Start Line": 32, "End Line": 35 } ], @@ -687943,7 +687943,7 @@ "Control Flow Branches": 13, "Input Parameters": 0, "Control Flow Ratio": "76.5%", - "Start Line": 163, + "Start Line": 162, "End Line": 210 }, { @@ -687953,7 +687953,7 @@ "Control Flow Branches": 11, "Input Parameters": 0, "Control Flow Ratio": "73.3%", - "Start Line": 90, + "Start Line": 89, "End Line": 160 }, { @@ -687963,7 +687963,7 @@ "Control Flow Branches": 8, "Input Parameters": 0, "Control Flow Ratio": "72.7%", - "Start Line": 66, + "Start Line": 65, "End Line": 87 }, { @@ -687973,7 +687973,7 @@ "Control Flow Branches": 6, "Input Parameters": 0, "Control Flow Ratio": "75.0%", - "Start Line": 42, + "Start Line": 41, "End Line": 63 }, { @@ -687983,7 +687983,7 @@ "Control Flow Branches": 4, "Input Parameters": 0, "Control Flow Ratio": "100.0%", - "Start Line": 324, + "Start Line": 323, "End Line": 372 }, { @@ -687993,7 +687993,7 @@ "Control Flow Branches": 5, "Input Parameters": 0, "Control Flow Ratio": "83.3%", - "Start Line": 33, + "Start Line": 32, "End Line": 39 }, { @@ -688023,7 +688023,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 264, + "Start Line": 263, "End Line": 299 }, { @@ -688033,7 +688033,7 @@ "Control Flow Branches": 0, "Input Parameters": 2, "Control Flow Ratio": "0.0%", - "Start Line": 18, + "Start Line": 17, "End Line": 30 }, { @@ -688043,7 +688043,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 250, + "Start Line": 249, "End Line": 261 }, { @@ -688053,7 +688053,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 236, + "Start Line": 235, "End Line": 247 }, { @@ -688063,7 +688063,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 312, + "Start Line": 311, "End Line": 321 }, { @@ -688073,7 +688073,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 302, + "Start Line": 301, "End Line": 309 } ], @@ -689685,7 +689685,7 @@ "Control Flow Branches": 10, "Input Parameters": 3, "Control Flow Ratio": "62.5%", - "Start Line": 93, + "Start Line": 92, "End Line": 110 }, { @@ -689695,7 +689695,7 @@ "Control Flow Branches": 11, "Input Parameters": 0, "Control Flow Ratio": "91.7%", - "Start Line": 114, + "Start Line": 113, "End Line": 121 }, { @@ -689705,7 +689705,7 @@ "Control Flow Branches": 10, "Input Parameters": 0, "Control Flow Ratio": "83.3%", - "Start Line": 194, + "Start Line": 193, "End Line": 213 }, { @@ -689715,7 +689715,7 @@ "Control Flow Branches": 8, "Input Parameters": 0, "Control Flow Ratio": "36.4%", - "Start Line": 246, + "Start Line": 245, "End Line": 274 }, { @@ -689725,7 +689725,7 @@ "Control Flow Branches": 5, "Input Parameters": 0, "Control Flow Ratio": "35.7%", - "Start Line": 217, + "Start Line": 216, "End Line": 242 }, { @@ -689745,7 +689745,7 @@ "Control Flow Branches": 4, "Input Parameters": 0, "Control Flow Ratio": "100.0%", - "Start Line": 278, + "Start Line": 277, "End Line": 312 }, { @@ -689755,7 +689755,7 @@ "Control Flow Branches": 2, "Input Parameters": 0, "Control Flow Ratio": "28.6%", - "Start Line": 61, + "Start Line": 60, "End Line": 79 }, { @@ -689765,7 +689765,7 @@ "Control Flow Branches": 2, "Input Parameters": 0, "Control Flow Ratio": "40.0%", - "Start Line": 43, + "Start Line": 42, "End Line": 57 }, { @@ -689775,7 +689775,7 @@ "Control Flow Branches": 1, "Input Parameters": 0, "Control Flow Ratio": "50.0%", - "Start Line": 132, + "Start Line": 131, "End Line": 135 }, { @@ -689785,7 +689785,7 @@ "Control Flow Branches": 1, "Input Parameters": 0, "Control Flow Ratio": "100.0%", - "Start Line": 139, + "Start Line": 138, "End Line": 143 }, { @@ -689795,7 +689795,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 168, + "Start Line": 167, "End Line": 190 }, { @@ -689805,7 +689805,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 147, + "Start Line": 146, "End Line": 164 }, { @@ -689815,7 +689815,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 83, + "Start Line": 82, "End Line": 89 }, { @@ -689825,7 +689825,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 316, + "Start Line": 315, "End Line": 323 }, { @@ -689835,7 +689835,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 125, + "Start Line": 124, "End Line": 128 } ], @@ -715964,7 +715964,7 @@ "Control Flow Branches": 5, "Input Parameters": 2, "Control Flow Ratio": "55.6%", - "Start Line": 55, + "Start Line": 54, "End Line": 83 }, { @@ -715984,7 +715984,7 @@ "Control Flow Branches": 0, "Input Parameters": 2, "Control Flow Ratio": "0.0%", - "Start Line": 37, + "Start Line": 36, "End Line": 51 }, { @@ -715994,7 +715994,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 31, + "Start Line": 30, "End Line": 33 } ], @@ -718966,7 +718966,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 10, + "Start Line": 9, "End Line": 21 }, { @@ -718976,7 +718976,7 @@ "Control Flow Branches": 0, "Input Parameters": 0, "Control Flow Ratio": "0.0%", - "Start Line": 5, + "Start Line": 4, "End Line": 7 } ], @@ -720314,7 +720314,7 @@ "Control Flow Branches": 3, "Input Parameters": 1, "Control Flow Ratio": "50.0%", - "Start Line": 60, + "Start Line": 59, "End Line": 84 }, { @@ -720324,7 +720324,7 @@ "Control Flow Branches": 3, "Input Parameters": 1, "Control Flow Ratio": "60.0%", - "Start Line": 41, + "Start Line": 40, "End Line": 47 } ],