Skip to content

Commit 87c2e14

Browse files
committed
Set cognitive complexity to industry default (25), tag 168 functions
Lower thresholds to best-practice values: cognitive-complexity: 250 -> 25 (industry default) statements: 400 -> 200 lines: 800 -> 400 Add NOLINTNEXTLINE to 168 functions that currently exceed these thresholds. Each suppression will be removed as the function is split in subsequent commits. Zero net behavioral changes. Also: extract execute_with_clause from cypher execute_single.
1 parent a6fbb9b commit 87c2e14

43 files changed

Lines changed: 436 additions & 266 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.clang-tidy

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,9 @@ CheckOptions:
7676
readability-implicit-bool-conversion.AllowPointerConditions: true
7777
readability-magic-numbers.IgnoredIntegerValues: "1;2;3;4;5;6;7;8;9;10;11;12;14;15;16;20;24;32;48;64;100;128;200;256;493;512;755;1000;1024;1040;2048;4096;8192;16384;32768;65536;500000;1000000;1000000000"
7878
readability-magic-numbers.IgnoredFloatingPointValues: "0.0;0.25;0.5;0.7;0.75;0.8;0.85;0.9;0.95;1.0;2.0;100.0;1e308"
79-
readability-function-cognitive-complexity.Threshold: 250
80-
readability-function-size.StatementThreshold: 400
81-
readability-function-size.LineThreshold: 800
79+
readability-function-cognitive-complexity.Threshold: 25
80+
readability-function-size.StatementThreshold: 200
81+
readability-function-size.LineThreshold: 400
8282

8383
HeaderFilterRegex: '^(src|tests)/.*\.h$'
8484

internal/cbm/ac.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ static void queue_free(Queue *q) {
7272
// alpha_size — alphabet size (256 if alpha_map is NULL)
7373
//
7474
// Returns a heap-allocated automaton. Caller must call cbm_ac_free().
75+
// NOLINTNEXTLINE(readability-function-cognitive-complexity)
7576
CBMAutomaton *cbm_ac_build(const char **patterns, const int *lengths, int count,
7677
const uint8_t *alpha_map, int alpha_size) {
7778
if (count <= 0) {

internal/cbm/extract_calls.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,7 @@ static bool lean_is_in_type_position(TSNode node) {
8888
}
8989

9090
// Extract callee name from a call node
91+
// NOLINTNEXTLINE(readability-function-cognitive-complexity)
9192
static char *extract_callee_name(CBMArena *a, TSNode node, const char *source, CBMLanguage lang) {
9293
// Lean 4: apply — name field is callee. Skip if in a type annotation position.
9394
// Must be checked before the generic "name" field handler below.
@@ -278,6 +279,7 @@ static char *extract_callee_name(CBMArena *a, TSNode node, const char *source, C
278279

279280
// Walk AST for call nodes (iterative)
280281
#define CALLS_STACK_CAP 512
282+
// NOLINTNEXTLINE(readability-function-cognitive-complexity)
281283
static void walk_calls(CBMExtractCtx *ctx, TSNode root, const CBMLangSpec *spec) {
282284
TSNode stack[CALLS_STACK_CAP];
283285
int top = 0;
@@ -385,6 +387,7 @@ void cbm_extract_calls(CBMExtractCtx *ctx) {
385387
/* Extract all arguments from a call expression into call->args[].
386388
* Captures expression text, resolved constants, keyword names, and
387389
* dotted field chains (member_expression → "payload.info.url"). */
390+
// NOLINTNEXTLINE(readability-function-cognitive-complexity)
388391
static void extract_call_args(CBMExtractCtx *ctx, TSNode args, CBMCall *call) {
389392
uint32_t argc = ts_node_named_child_count(args);
390393
int positional_idx = 0;
@@ -429,6 +432,7 @@ static void extract_call_args(CBMExtractCtx *ctx, TSNode args, CBMCall *call) {
429432
}
430433
}
431434

435+
// NOLINTNEXTLINE(readability-function-cognitive-complexity)
432436
void handle_calls(CBMExtractCtx *ctx, TSNode node, const CBMLangSpec *spec, WalkState *state) {
433437
if (!spec->call_node_types || !spec->call_node_types[0]) {
434438
return;

internal/cbm/extract_defs.c

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ static TSNode func_name_node(TSNode node) {
4040
}
4141

4242
// Resolve the name node for a function, handling language-specific quirks
43+
// NOLINTNEXTLINE(readability-function-cognitive-complexity,readability-function-size)
4344
static TSNode resolve_func_name(TSNode node, CBMLanguage lang, const char *source) {
4445
const char *kind = ts_node_type(node);
4546

@@ -398,6 +399,7 @@ static bool is_js_exported(TSNode node) {
398399
}
399400

400401
// Extract docstring from the node's leading comment
402+
// NOLINTNEXTLINE(readability-function-cognitive-complexity)
401403
static const char *extract_docstring(CBMArena *a, TSNode node, const char *source,
402404
CBMLanguage lang) {
403405
// Go: type_spec is inside type_declaration; comment is before type_declaration
@@ -498,6 +500,7 @@ static const char *decorator_method_name(const char *attr_text) {
498500
* Pure AST approach: walks the decorator node's call children to find:
499501
* 1. The function/attribute name → infer HTTP method
500502
* 2. The first string argument → route path */
503+
// NOLINTNEXTLINE(readability-function-cognitive-complexity)
501504
static void extract_route_from_decorators(CBMArena *a, TSNode func_node, const char *source,
502505
const CBMLangSpec *spec, const char **out_path,
503506
const char **out_method) {
@@ -583,6 +586,7 @@ static void extract_route_from_decorators(CBMArena *a, TSNode func_node, const c
583586
}
584587

585588
// Extract decorator names from preceding decorator/annotation nodes
589+
// NOLINTNEXTLINE(readability-function-cognitive-complexity)
586590
static const char **extract_decorators(CBMArena *a, TSNode node, const char *source,
587591
CBMLanguage lang, const CBMLangSpec *spec) {
588592
if (!spec->decorator_node_types || !spec->decorator_node_types[0]) {
@@ -657,6 +661,7 @@ static const char **extract_decorators(CBMArena *a, TSNode node, const char *sou
657661
}
658662

659663
// Extract base class names from a class node
664+
// NOLINTNEXTLINE(readability-function-cognitive-complexity)
660665
static const char **extract_base_classes(CBMArena *a, TSNode node, const char *source,
661666
CBMLanguage lang) {
662667
(void)lang;
@@ -841,6 +846,7 @@ static char *clean_type_name(CBMArena *a, const char *raw) {
841846

842847
// Extract param_names from a parameter list node.
843848
// Returns NULL-terminated arena-allocated array.
849+
// NOLINTNEXTLINE(readability-function-cognitive-complexity)
844850
static const char **extract_param_names(CBMArena *a, TSNode params, const char *source,
845851
CBMLanguage lang) {
846852
(void)lang;
@@ -910,6 +916,7 @@ static const char **extract_param_names(CBMArena *a, TSNode params, const char *
910916
// Extract return_types from a return type node.
911917
// Parses Go-style multi-return (T1, T2) and single return types.
912918
// Returns NULL-terminated arena-allocated array.
919+
// NOLINTNEXTLINE(readability-function-cognitive-complexity)
913920
static const char **extract_return_types(CBMArena *a, TSNode rt_node, const char *source,
914921
CBMLanguage lang) {
915922
(void)lang;
@@ -979,6 +986,7 @@ static const char **extract_return_types(CBMArena *a, TSNode rt_node, const char
979986

980987
// Extract param_types from a parameter list node.
981988
// Returns NULL-terminated arena-allocated array.
989+
// NOLINTNEXTLINE(readability-function-cognitive-complexity)
982990
static const char **extract_param_types(CBMArena *a, TSNode params, const char *source,
983991
CBMLanguage lang) {
984992
if (ts_node_is_null(params)) {
@@ -1131,6 +1139,7 @@ static const char **extract_param_types(CBMArena *a, TSNode params, const char *
11311139

11321140
// --- Function definition extraction ---
11331141

1142+
// NOLINTNEXTLINE(readability-function-cognitive-complexity)
11341143
static void extract_func_def(CBMExtractCtx *ctx, TSNode node, const CBMLangSpec *spec) {
11351144
CBMArena *a = ctx->arena;
11361145

@@ -1272,6 +1281,7 @@ static void extract_func_def(CBMExtractCtx *ctx, TSNode node, const CBMLangSpec
12721281

12731282
// --- Class definition extraction ---
12741283

1284+
// NOLINTNEXTLINE(readability-function-cognitive-complexity,readability-function-size)
12751285
static void extract_class_def(CBMExtractCtx *ctx, TSNode node, const CBMLangSpec *spec) {
12761286
CBMArena *a = ctx->arena;
12771287
const char *kind = ts_node_type(node);
@@ -1587,6 +1597,7 @@ static TSNode find_class_body(TSNode class_node, CBMLanguage lang) {
15871597
}
15881598

15891599
// Helper: try to extract method name from a node, with fallbacks
1600+
// NOLINTNEXTLINE(readability-function-cognitive-complexity)
15901601
static TSNode resolve_method_name(TSNode child, CBMLanguage lang) {
15911602
TSNode name_node = func_name_node(child);
15921603
if (!ts_node_is_null(name_node)) {
@@ -1661,6 +1672,7 @@ static TSNode resolve_method_name(TSNode child, CBMLanguage lang) {
16611672
}
16621673

16631674
// Push a single method definition
1675+
// NOLINTNEXTLINE(readability-function-cognitive-complexity)
16641676
static void push_method_def(CBMExtractCtx *ctx, TSNode child, const char *class_qn,
16651677
const CBMLangSpec *spec, TSNode name_node) {
16661678
CBMArena *a = ctx->arena;
@@ -1741,6 +1753,7 @@ static void push_method_def(CBMExtractCtx *ctx, TSNode child, const char *class_
17411753
}
17421754

17431755
// Extract methods inside a class body
1756+
// NOLINTNEXTLINE(readability-function-cognitive-complexity)
17441757
static void extract_class_methods(CBMExtractCtx *ctx, TSNode class_node, const char *class_qn,
17451758
const CBMLangSpec *spec) {
17461759
TSNode body = find_class_body(class_node, ctx->language);
@@ -1872,6 +1885,7 @@ static void extract_rust_impl(CBMExtractCtx *ctx, TSNode node, const CBMLangSpec
18721885

18731886
// --- Elixir def/defp/defmodule ---
18741887

1888+
// NOLINTNEXTLINE(readability-function-cognitive-complexity)
18751889
static void extract_elixir_call(CBMExtractCtx *ctx, TSNode node, const CBMLangSpec *spec) {
18761890
CBMArena *a = ctx->arena;
18771891

@@ -2049,6 +2063,7 @@ static const char *extract_java_field_name(CBMArena *a, TSNode field, const char
20492063

20502064
/* ── Variable name extractors by language group ─────────────────── */
20512065

2066+
// NOLINTNEXTLINE(readability-function-cognitive-complexity)
20522067
static void extract_vars_mainstream(CBMExtractCtx *ctx, TSNode node, CBMArena *a,
20532068
const char *kind) {
20542069
(void)kind;
@@ -2153,6 +2168,7 @@ static void extract_vars_mainstream(CBMExtractCtx *ctx, TSNode node, CBMArena *a
21532168
}
21542169
}
21552170

2171+
// NOLINTNEXTLINE(readability-function-cognitive-complexity)
21562172
static void extract_vars_dynamic(CBMExtractCtx *ctx, TSNode node, CBMArena *a, const char *kind) {
21572173
switch (ctx->language) {
21582174
case CBM_LANG_PHP: {
@@ -2288,6 +2304,7 @@ static void extract_vars_dynamic(CBMExtractCtx *ctx, TSNode node, CBMArena *a, c
22882304
}
22892305
}
22902306

2307+
// NOLINTNEXTLINE(readability-function-cognitive-complexity)
22912308
static void extract_vars_jvm(CBMExtractCtx *ctx, TSNode node, CBMArena *a) {
22922309
switch (ctx->language) {
22932310
case CBM_LANG_SCALA: {
@@ -2344,6 +2361,7 @@ static void extract_vars_jvm(CBMExtractCtx *ctx, TSNode node, CBMArena *a) {
23442361
}
23452362
}
23462363

2364+
// NOLINTNEXTLINE(readability-function-cognitive-complexity)
23472365
static void extract_vars_config(CBMExtractCtx *ctx, TSNode node, CBMArena *a, const char *kind) {
23482366
switch (ctx->language) {
23492367
case CBM_LANG_YAML: {
@@ -2652,6 +2670,7 @@ static void extract_variables(CBMExtractCtx *ctx, TSNode root, const CBMLangSpec
26522670
// Extract typed struct/class fields for cross-file LSP resolution (C/C++/CUDA/Go/Java/Rust etc.)
26532671
// Creates "Field" label definitions with return_type set to the field's type text.
26542672
// These are later collected by DefsToLSPDefs to build FieldDefs pipe-separated strings.
2673+
// NOLINTNEXTLINE(readability-function-cognitive-complexity)
26552674
static void extract_class_fields(CBMExtractCtx *ctx, TSNode class_node, const char *class_qn,
26562675
const CBMLangSpec *spec) {
26572676
if (!spec->field_node_types || !spec->field_node_types[0]) {
@@ -2819,6 +2838,7 @@ static void push_nested_class_nodes(TSNode body, const CBMLangSpec *spec, walk_d
28192838
}
28202839
}
28212840

2841+
// NOLINTNEXTLINE(readability-function-cognitive-complexity)
28222842
static void walk_defs(CBMExtractCtx *ctx, TSNode root, const CBMLangSpec *spec, int depth_unused) {
28232843
(void)depth_unused;
28242844
walk_defs_frame_t stack[CBM_WALK_DEFS_STACK_CAP];

internal/cbm/extract_imports.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ static const char *path_last(CBMArena *a, const char *path) {
5252
// --- Go imports ---
5353
// import_declaration -> import_spec_list -> import_spec -> (name, path)
5454

55+
// NOLINTNEXTLINE(readability-function-cognitive-complexity)
5556
static void parse_go_imports(CBMExtractCtx *ctx) {
5657
CBMArena *a = ctx->arena;
5758

@@ -133,6 +134,7 @@ static void parse_go_imports(CBMExtractCtx *ctx) {
133134
// import_statement: import X, import X as Y
134135
// import_from_statement: from X import Y, from X import Y as Z
135136

137+
// NOLINTNEXTLINE(readability-function-cognitive-complexity)
136138
static void parse_python_imports(CBMExtractCtx *ctx) {
137139
CBMArena *a = ctx->arena;
138140

@@ -244,6 +246,7 @@ static void parse_python_imports(CBMExtractCtx *ctx) {
244246
// import X from "Y"; import {A, B} from "Y"; import * as X from "Y"
245247
// const X = require("Y")
246248

249+
// NOLINTNEXTLINE(readability-function-cognitive-complexity)
247250
static void walk_es_imports(CBMExtractCtx *ctx, TSNode node) {
248251
CBMArena *a = ctx->arena;
249252
const char *kind = ts_node_type(node);
@@ -424,6 +427,7 @@ static void parse_rust_imports(CBMExtractCtx *ctx) {
424427
// --- C/C++ imports ---
425428
// preproc_include -> path or string_literal
426429

430+
// NOLINTNEXTLINE(readability-function-cognitive-complexity)
427431
static void parse_c_imports(CBMExtractCtx *ctx) {
428432
CBMArena *a = ctx->arena;
429433

@@ -477,6 +481,7 @@ static void parse_c_imports(CBMExtractCtx *ctx) {
477481
// --- Ruby imports ---
478482
// call nodes: require("X"), require_relative("X")
479483

484+
// NOLINTNEXTLINE(readability-function-cognitive-complexity)
480485
static void parse_ruby_imports(CBMExtractCtx *ctx) {
481486
CBMArena *a = ctx->arena;
482487

@@ -606,6 +611,7 @@ static void parse_lua_imports(CBMExtractCtx *ctx) {
606611

607612
// --- Generic import parsing for languages with simple import_declaration ---
608613

614+
// NOLINTNEXTLINE(readability-function-cognitive-complexity)
609615
static void parse_generic_imports(CBMExtractCtx *ctx, const char *node_type) {
610616
CBMArena *a = ctx->arena;
611617

@@ -667,6 +673,7 @@ static void parse_generic_imports(CBMExtractCtx *ctx, const char *node_type) {
667673
// get_top: << "package" (Get["file"])
668674
// apply where first child is builtin_symbol "Needs" with string arg
669675

676+
// NOLINTNEXTLINE(readability-function-cognitive-complexity)
670677
static void walk_wolfram_imports(CBMExtractCtx *ctx, TSNode node) {
671678
CBMArena *a = ctx->arena;
672679
const char *kind = ts_node_type(node);

internal/cbm/extract_k8s.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ static void emit_kustomize_sequence(CBMExtractCtx *ctx, TSNode seq_node, const c
9191
}
9292
}
9393

94+
// NOLINTNEXTLINE(readability-function-cognitive-complexity)
9495
static void extract_kustomize(CBMExtractCtx *ctx) {
9596
CBMArena *a = ctx->arena;
9697

@@ -156,6 +157,7 @@ static void extract_kustomize(CBMExtractCtx *ctx) {
156157

157158
// Descend into the first block_mapping of a document and extract apiVersion,
158159
// kind, and metadata.name. Returns void; fills kind_buf and meta_name_buf.
160+
// NOLINTNEXTLINE(readability-function-cognitive-complexity)
159161
static void extract_k8s_scalars(CBMExtractCtx *ctx, TSNode mapping, char *kind_buf, size_t kind_sz,
160162
char *meta_name_buf, size_t meta_sz) {
161163
CBMArena *a = ctx->arena;

internal/cbm/extract_semantic.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
// --- Throw/Raise extraction ---
1414

1515
// Process a single node for throw extraction (called from iterative walker).
16+
// NOLINTNEXTLINE(readability-function-cognitive-complexity)
1617
static void process_throw_node(CBMExtractCtx *ctx, TSNode node, const CBMLangSpec *spec) {
1718
const char *kind = ts_node_type(node);
1819

@@ -105,6 +106,7 @@ static void walk_throws(CBMExtractCtx *ctx, TSNode root, const CBMLangSpec *spec
105106
// --- Read/Write detection (iterative) ---
106107

107108
#define READWRITE_STACK_CAP 512
109+
// NOLINTNEXTLINE(readability-function-cognitive-complexity)
108110
static void walk_readwrites(CBMExtractCtx *ctx, TSNode root, const CBMLangSpec *spec) {
109111
TSNode stack[READWRITE_STACK_CAP];
110112
int top = 0;
@@ -159,6 +161,7 @@ void cbm_extract_semantic(CBMExtractCtx *ctx) {
159161

160162
// --- Unified handlers ---
161163

164+
// NOLINTNEXTLINE(readability-function-cognitive-complexity)
162165
void handle_throws(CBMExtractCtx *ctx, TSNode node, const CBMLangSpec *spec, WalkState *state) {
163166
bool has_throws = spec->throw_node_types && spec->throw_node_types[0];
164167
bool has_clause = spec->throws_clause_field && spec->throws_clause_field[0];

internal/cbm/extract_type_assigns.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
// Extract class/type name from a constructor expression.
1212
// e.g., new Foo() -> "Foo", Foo() -> "Foo" (if uppercase), Foo{} -> "Foo"
13+
// NOLINTNEXTLINE(readability-function-cognitive-complexity)
1314
static const char *extract_constructor_type(CBMArena *a, TSNode rhs, const char *source,
1415
CBMLanguage lang) {
1516
const char *kind = ts_node_type(rhs);
@@ -77,6 +78,7 @@ static const char *extract_constructor_type(CBMArena *a, TSNode rhs, const char
7778
}
7879

7980
// Walk AST for assignment patterns where RHS is a constructor call.
81+
// NOLINTNEXTLINE(readability-function-cognitive-complexity)
8082
static void walk_type_assigns(CBMExtractCtx *ctx, TSNode node, const CBMLangSpec *spec) {
8183
const char *kind = ts_node_type(node);
8284

@@ -189,6 +191,7 @@ void cbm_extract_type_assigns(CBMExtractCtx *ctx) {
189191

190192
// --- Unified handler ---
191193

194+
// NOLINTNEXTLINE(readability-function-cognitive-complexity)
192195
void handle_type_assigns(CBMExtractCtx *ctx, TSNode node, const CBMLangSpec *spec,
193196
WalkState *state) {
194197
const char *kind = ts_node_type(node);

internal/cbm/extract_type_refs.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ static void extract_return_type_refs(CBMExtractCtx *ctx, TSNode func_node, const
142142
}
143143

144144
// Walk function body for type references (casts, type assertions, local var types, generics).
145+
// NOLINTNEXTLINE(readability-function-cognitive-complexity)
145146
static void walk_body_type_refs(CBMExtractCtx *ctx, TSNode node, const char *func_qn) {
146147
const char *kind = ts_node_type(node);
147148

@@ -296,6 +297,7 @@ void cbm_extract_type_refs(CBMExtractCtx *ctx) {
296297
// The cursor visits both, so this single handler replaces the old
297298
// walk_type_refs + walk_body_type_refs split.
298299

300+
// NOLINTNEXTLINE(readability-function-cognitive-complexity)
299301
void handle_type_refs(CBMExtractCtx *ctx, TSNode node, const CBMLangSpec *spec, WalkState *state) {
300302
if (!spec->function_node_types || !spec->function_node_types[0]) {
301303
return;

internal/cbm/extract_unified.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ static void recompute_state(WalkState *state, const char *module_qn) {
5454
}
5555

5656
// Compute function QN for scope tracking (mirrors cbm_enclosing_func_qn logic).
57+
// NOLINTNEXTLINE(readability-function-cognitive-complexity)
5758
static const char *compute_func_qn(CBMExtractCtx *ctx, TSNode node, const CBMLangSpec *spec,
5859
WalkState *state) {
5960
(void)spec;
@@ -251,6 +252,7 @@ static void handle_string_refs(CBMExtractCtx *ctx, TSNode node, const WalkState
251252
/* Recursively walk YAML block_mapping_pair nodes, building dotted key paths.
252253
* Emits string_refs with key_path for leaf values that are URLs or config values.
253254
* Example: body.operational_info.post_url → "https://..." */
255+
// NOLINTNEXTLINE(readability-function-cognitive-complexity)
254256
static void walk_yaml_mapping(CBMExtractCtx *ctx, TSNode node, const char *prefix) {
255257
uint32_t nc = ts_node_named_child_count(node);
256258
for (uint32_t i = 0; i < nc; i++) {
@@ -386,6 +388,7 @@ static const char *infer_broker(const char *file_path, const char *source_key) {
386388

387389
/* Scan a YAML mapping for source+target key pairs.
388390
* Collects all key-value pairs at this level and one level deep (for nested config:). */
391+
// NOLINTNEXTLINE(readability-function-cognitive-complexity)
389392
static void scan_mapping_for_bindings(CBMExtractCtx *ctx, TSNode mapping) {
390393
const char *sources[8] = {NULL};
391394
const char *source_keys[8] = {NULL};
@@ -504,6 +507,7 @@ static void scan_yaml_for_infra_bindings(CBMExtractCtx *ctx, TSNode node) {
504507
* where one is a source key (topic, queue_name) and another is a
505508
* target key (uri, push_endpoint). Handles nested blocks like
506509
* push_config { push_endpoint = "..." }. */
510+
// NOLINTNEXTLINE(readability-function-cognitive-complexity)
507511
static void scan_hcl_block_for_bindings(CBMExtractCtx *ctx, TSNode block) {
508512
const char *sources[8] = {NULL};
509513
const char *source_keys[8] = {NULL};
@@ -630,6 +634,7 @@ static void handle_yaml_nested(CBMExtractCtx *ctx, TSNode node) {
630634

631635
// --- Main unified cursor walk ---
632636

637+
// NOLINTNEXTLINE(readability-function-cognitive-complexity)
633638
void cbm_extract_unified(CBMExtractCtx *ctx) {
634639
const CBMLangSpec *spec = cbm_lang_spec(ctx->language);
635640
if (!spec) {

0 commit comments

Comments
 (0)