circle-ir-ai 2.42.0 → 2.43.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -5,6 +5,45 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [2.43.0] - 2026-07-12
9
+
10
+ ### Added — per-entity design-smell detection for quality discrimination (cognium-ai#198)
11
+
12
+ The quality passes keyed on **directory-averaged** metrics (avgComplexity,
13
+ avgCBO, MI), which are refactor-invariant for design smells: splitting one
14
+ god-class into three, or one hairy method into three, barely moves an
15
+ average because you divide by more entities. Across the 18 contrastive
16
+ quality-regression pairs only 1 discriminated smelly-from-refactored.
17
+
18
+ New `src/quality/entity-smells.ts` (`detectEntitySmells`) consumes the
19
+ per-entity data the averages discarded and emits **per-entity** smells with
20
+ per-entity thresholds:
21
+
22
+ - **high-complexity** — any method whose McCabe CC > 10 (named).
23
+ - **god-class** — any type whose RFC response-surface ≥ 12. Keys on RFC, not
24
+ LCOM: circle-ir's per-type LCOM reports 0 on dynamic-language classes, so
25
+ gating on it would silently disable detection on the languages the corpus
26
+ most needs.
27
+
28
+ Both fire on the offending entity and clear when it's split — proven by
29
+ end-to-end discrimination tests that run `analyze` on synthetic
30
+ smelly/refactored pairs. Wired into the quality `code-complexity` pass, so
31
+ `quality` findings now name the method/class and discriminate the twins.
32
+
33
+ **Also fixes a latent CC bug** (`health-score/calculator.ts`): circle-ir
34
+ emits one `cyclomatic_complexity` entry *per method*, but the code used
35
+ `.find()` and read only the first (arbitrary) method — so `maxComplexity` /
36
+ `complexFunctions` were computed from a single method and high-complexity
37
+ methods were under-counted. Now iterates all method entries.
38
+
39
+ ### Tests — lock cognium-ai#186 (browser `.query()` FP) at the pass level
40
+
41
+ Added end-to-end `inputValidationPass` tests asserting that
42
+ `navigator.permissions.query` / `chrome.tabs.query` flows are dropped
43
+ (clean pass, no BLOCKED tier) while a real `pool.query(...)` DB sink still
44
+ fires. #186's `isBrowserQueryApi` gate shipped earlier; this locks it so it
45
+ can't silently regress. (1386 tests.)
46
+
8
47
  ## [2.42.0] - 2026-07-12
9
48
 
10
49
  ### Added — trust tier transparency: `tierReason` / `baseTier` / `blockingFindings` (cognium-ai#206)
@@ -7,6 +7,7 @@
7
7
  import { type ScanResult } from '../security-scan/scanner.js';
8
8
  import { type SecretScanResult } from '../secret-scan/scanner.js';
9
9
  import { type DeadCodeResult } from '../dead-code/detector.js';
10
+ import { type EntitySmell } from '../quality/entity-smells.js';
10
11
  import { type MetricResult } from './metrics.js';
11
12
  /**
12
13
  * Health score calculation options
@@ -90,6 +91,8 @@ export interface HealthScoreResult {
90
91
  totalLoc: number;
91
92
  timestamp: string;
92
93
  durationMs: number;
94
+ /** cognium-ai#198 — per-entity design smells (high-CC methods, god-classes). */
95
+ entitySmells?: EntitySmell[];
93
96
  };
94
97
  }
95
98
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"calculator.d.ts","sourceRoot":"","sources":["../../src/health-score/calculator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"calculator.d.ts","sourceRoot":"","sources":["../../src/health-score/calculator.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,7 @@ import { ensureAnalyzerInitialized } from '../utils/analyzer-init.js';
13
13
  import { scanDirectory } from '../security-scan/scanner.js';
14
14
  import { quickSecretScan } from '../secret-scan/scanner.js';
15
15
  import { detectDeadCode } from '../dead-code/detector.js';
16
+ import { detectEntitySmells } from '../quality/entity-smells.js';
16
17
  import { calculateSecurityScore, calculateMaintainabilityScore, calculateQualityScore, calculatePerformanceScore, countAnnotations, countLinesOfCode, estimateComplexity, detectNPlusOnePatterns, detectBlockingIoPatterns, getScoreLabel, getScoreColor, } from './metrics.js';
17
18
  /**
18
19
  * Default weights
@@ -176,6 +177,7 @@ export class HealthScoreCalculator {
176
177
  totalLoc: fileInfo.totalLoc,
177
178
  timestamp: new Date().toISOString(),
178
179
  durationMs: Date.now() - startTime,
180
+ entitySmells: fileInfo.entitySmells,
179
181
  },
180
182
  };
181
183
  }
@@ -203,6 +205,7 @@ export class HealthScoreCalculator {
203
205
  avgLCOM: 0,
204
206
  avgBugHotspot: 0,
205
207
  duplicationPercent: 0,
208
+ entitySmells: [],
206
209
  };
207
210
  const excludePatterns = [
208
211
  /node_modules/,
@@ -320,15 +323,23 @@ export class HealthScoreCalculator {
320
323
  const m = metrics.find(v => v.name === name);
321
324
  return m ? m.value : undefined;
322
325
  };
323
- // Cyclomatic complexity (real v(G))
324
- const cc = getMetric('cyclomatic_complexity');
325
- if (cc !== undefined) {
326
- totalComplexity += cc;
326
+ // Cyclomatic complexity (real v(G)). circle-ir emits ONE
327
+ // cyclomatic_complexity entry per method (tagged
328
+ // `description: "method: X"`). cognium-ai#198: read ALL of
329
+ // them — the previous code used `.find()` and saw only the
330
+ // first (arbitrary) method's CC, so `maxComplexity` /
331
+ // `complexFunctions` were computed from a single method and
332
+ // high-complexity methods were silently under-counted.
333
+ const methodCCs = metrics
334
+ .filter((v) => v.name === 'cyclomatic_complexity')
335
+ .map((v) => v.value);
336
+ if (methodCCs.length > 0) {
337
+ const fileMax = Math.max(...methodCCs);
338
+ const fileMean = methodCCs.reduce((s, v) => s + v, 0) / methodCCs.length;
339
+ totalComplexity += fileMean; // mean method CC (was: first method)
327
340
  fileCount++;
328
- info.maxComplexity = Math.max(info.maxComplexity, cc);
329
- if (cc > 10) {
330
- info.complexFunctions++;
331
- }
341
+ info.maxComplexity = Math.max(info.maxComplexity, fileMax);
342
+ info.complexFunctions += methodCCs.filter((v) => v > 10).length;
332
343
  }
333
344
  else {
334
345
  // Fallback to regex heuristic
@@ -339,6 +350,13 @@ export class HealthScoreCalculator {
339
350
  if (complexity > 10)
340
351
  info.complexFunctions++;
341
352
  }
353
+ // cognium-ai#198: per-entity design smells (high-CC methods,
354
+ // god-classes) keyed on per-method / per-type thresholds so a
355
+ // smell fires on the offending entity and clears when it's
356
+ // refactored — unlike the directory averages below.
357
+ const smells = detectEntitySmells(file.relativePath, metrics);
358
+ if (smells.length > 0)
359
+ info.entitySmells.push(...smells);
342
360
  // Composite metrics
343
361
  // Note: MI=0 often indicates very large/complex files or parse failures.
344
362
  // Exclude MI=0 from average to avoid skewing the score.
@@ -1 +1 @@
1
- {"version":3,"file":"calculator.js","sourceRoot":"","sources":["../../src/health-score/calculator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"calculator.js","sourceRoot":"","sources":["../../src/health-score/calculator.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"calculator.d.ts","sourceRoot":"","sources":["../../src/quality/calculator.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,KAAK,EAAE,kBAAkB,EAAqC,MAAM,YAAY,CAAC;AAOxF,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,eAAO,MAAM,uBAAuB,EAAE,cAMrC,CAAC;AAMF,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IAClC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACvD,oEAAoE;IACpE,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,oEAAoE;IACpE,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,6BAA6B,EAAE,WAAW,SAAS,MAAM,CAAC,GAC3E,OAAO,CAAC,CAAC,CAAC,GACV,KAAK,CAAC;CACX;AAkTD;;;;;GAKG;AACH,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,kBAAkB,CAAC,CA+E7B;AAMD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAqDtE"}
1
+ {"version":3,"file":"calculator.d.ts","sourceRoot":"","sources":["../../src/quality/calculator.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,OAAO,KAAK,EAAE,kBAAkB,EAAqC,MAAM,YAAY,CAAC;AAaxF,MAAM,WAAW,cAAc;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAED,eAAO,MAAM,uBAAuB,EAAE,cAMrC,CAAC;AAMF,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;IAClC,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACvD,oEAAoE;IACpE,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,oEAAoE;IACpE,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,6BAA6B,EAAE,WAAW,SAAS,MAAM,CAAC,GAC3E,OAAO,CAAC,CAAC,CAAC,GACV,KAAK,CAAC;CACX;AAiUD;;;;;GAKG;AACH,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,kBAAkB,CAAC,CA+E7B;AAMD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAqDtE"}
@@ -9,6 +9,7 @@ import * as fs from 'fs';
9
9
  import * as path from 'path';
10
10
  import { HealthScoreCalculator } from '../health-score/calculator.js';
11
11
  import { getQualityTier } from './types.js';
12
+ import { smellRuleId, smellSeverity, smellMessage, } from './entity-smells.js';
12
13
  export const DEFAULT_QUALITY_WEIGHTS = {
13
14
  codeComplexity: 0.25,
14
15
  testCoverage: 0.25,
@@ -19,7 +20,7 @@ export const DEFAULT_QUALITY_WEIGHTS = {
19
20
  // ---------------------------------------------------------------------------
20
21
  // Pass builders (health-score -> quality passes)
21
22
  // ---------------------------------------------------------------------------
22
- function buildCodeComplexityPass(maintainability, startTime) {
23
+ function buildCodeComplexityPass(maintainability, startTime, entitySmells = []) {
23
24
  const findings = [];
24
25
  for (const issue of maintainability.issues ?? []) {
25
26
  const lower = issue.toLowerCase();
@@ -35,6 +36,19 @@ function buildCodeComplexityPass(maintainability, startTime) {
35
36
  });
36
37
  }
37
38
  }
39
+ // cognium-ai#198 — per-entity design smells (high-CC methods, god-classes).
40
+ // These name the offending method/class and fire only when a per-entity
41
+ // threshold is crossed, so they discriminate smelly code from its
42
+ // refactored twin — unlike the directory-averaged `issues` above.
43
+ for (const smell of entitySmells) {
44
+ findings.push({
45
+ pass: 'code-complexity',
46
+ ruleId: smellRuleId(smell),
47
+ severity: smellSeverity(smell),
48
+ message: smellMessage(smell),
49
+ location: { file: smell.file },
50
+ });
51
+ }
38
52
  return {
39
53
  pass: 'code-complexity',
40
54
  score: clampScore(maintainability.score),
@@ -320,7 +334,7 @@ export async function calculateQualityScore(directory, options = {}) {
320
334
  options.onProgress?.('Building quality passes', 0.8);
321
335
  const passStart = Date.now();
322
336
  const passResults = [
323
- buildCodeComplexityPass(healthResult.dimensions.maintainability, passStart),
337
+ buildCodeComplexityPass(healthResult.dimensions.maintainability, passStart, healthResult.meta.entitySmells),
324
338
  buildTestCoveragePass(healthResult.dimensions.quality, passStart),
325
339
  buildDocumentationCoveragePass(directory, healthResult, passStart),
326
340
  buildMaintainabilityIndexPass(healthResult.dimensions.maintainability, passStart),
@@ -1 +1 @@
1
- {"version":3,"file":"calculator.js","sourceRoot":"","sources":["../../src/quality/calculator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"calculator.js","sourceRoot":"","sources":["../../src/quality/calculator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,88 @@
1
+ /**
2
+ * cognium-ai#198 — per-entity design-smell detection.
3
+ *
4
+ * The quality passes historically keyed on **directory-averaged** circle-ir
5
+ * metrics (avgComplexity, avgCBO, avgLCOM, MI). Averages are refactor-
6
+ * invariant for design smells: splitting one god-class into three small
7
+ * classes, or one high-CC method into three simple ones, barely moves the
8
+ * average because you divide by more entities. Result (#198): across the 18
9
+ * contrastive quality-regression pairs only 1 discriminated smelly-from-
10
+ * refactored; 6 patterns produced no signal at all (McCabe CC, god-class,
11
+ * …), and 10 fired on both twins.
12
+ *
13
+ * The circle-ir metric stream already carries the per-entity data the
14
+ * averages threw away:
15
+ * - one `cyclomatic_complexity` entry per method, tagged
16
+ * `description: "method: <name>"`;
17
+ * - per-type `RFC` / `LCOM` / `CBO` / `DIT` / `NOC` entries, tagged
18
+ * `description: "type: <name>"`.
19
+ *
20
+ * This module consumes that stream and emits **per-entity** smells with
21
+ * per-entity thresholds, so a smell fires on the offending method/class and
22
+ * *not* on its refactored replacements. It is a pure function of the metric
23
+ * array (no I/O, no circle-ir re-analysis) so it is unit-testable against
24
+ * synthetic contrastive pairs in isolation.
25
+ */
26
+ /** Minimal shape of a circle-ir metric entry we depend on. */
27
+ export interface MetricEntryLike {
28
+ name: string;
29
+ value: number;
30
+ /** circle-ir tags per-entity metrics as `"method: X"` / `"type: X"`. */
31
+ description?: string;
32
+ }
33
+ export type SmellKind = 'high-complexity' | 'god-class';
34
+ export interface EntitySmell {
35
+ /** Source file the entity lives in. */
36
+ file: string;
37
+ /** Method or class name (best-effort from the metric description). */
38
+ entity: string;
39
+ /** What kind of entity produced the smell. */
40
+ entityKind: 'method' | 'class';
41
+ /** Which smell fired. */
42
+ smell: SmellKind;
43
+ /** The metric that tripped the threshold. */
44
+ metric: string;
45
+ /** The metric value observed. */
46
+ value: number;
47
+ /** The threshold it exceeded. */
48
+ threshold: number;
49
+ }
50
+ /**
51
+ * Per-entity thresholds. Chosen from established static-analysis defaults
52
+ * (McCabe: CC > 10 = high risk; a large response-for-class surface marks the
53
+ * god-class / large-class smell) and tuned so refactored twins fall below
54
+ * them. Overridable so a stricter/looser gate can be configured.
55
+ *
56
+ * **On cohesion:** circle-ir's per-type `LCOM` is unreliable on dynamic
57
+ * languages (it reports 0 on genuinely-smelly JS/TS classes because field
58
+ * access can't always be resolved statically), so it is deliberately NOT
59
+ * used to gate god-class — doing so would silently disable detection on the
60
+ * languages the #198 corpus most needs it for. God-class keys on the robust,
61
+ * language-agnostic **RFC** response surface instead.
62
+ */
63
+ export interface SmellThresholds {
64
+ /** McCabe cyclomatic complexity per method (high-risk boundary). */
65
+ methodComplexity: number;
66
+ /** RFC (response-for-class ≈ method surface) marking a class "large". */
67
+ classRfc: number;
68
+ }
69
+ export declare const DEFAULT_SMELL_THRESHOLDS: SmellThresholds;
70
+ /**
71
+ * Detect per-entity smells for a single file's circle-ir metric array.
72
+ *
73
+ * - **high-complexity**: any method whose cyclomatic complexity exceeds
74
+ * `methodComplexity`. Discriminates because a refactor lowers the *peak*
75
+ * method's CC, even when total/average CC is unchanged.
76
+ * - **god-class**: a type with a large response surface (`RFC ≥ classRfc`).
77
+ * RFC drops when the class is split across collaborators, so the smell
78
+ * clears on the refactored twin. `LCOM ≥ classLcom` (when available)
79
+ * escalates severity but is not required — see {@link SmellThresholds}.
80
+ */
81
+ export declare function detectEntitySmells(file: string, metrics: readonly MetricEntryLike[], thresholds?: SmellThresholds): EntitySmell[];
82
+ /** Map a smell to a stable quality ruleId. */
83
+ export declare function smellRuleId(smell: EntitySmell): string;
84
+ /** Map a smell to a severity by how far past the threshold it sits. */
85
+ export declare function smellSeverity(smell: EntitySmell): 'low' | 'medium' | 'high';
86
+ /** Human-readable message for a smell finding. */
87
+ export declare function smellMessage(smell: EntitySmell): string;
88
+ //# sourceMappingURL=entity-smells.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-smells.d.ts","sourceRoot":"","sources":["../../src/quality/entity-smells.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,8DAA8D;AAC9D,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,SAAS,GAAG,iBAAiB,GAAG,WAAW,CAAC;AAExD,MAAM,WAAW,WAAW;IAC1B,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,sEAAsE;IACtE,MAAM,EAAE,MAAM,CAAC;IACf,8CAA8C;IAC9C,UAAU,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC/B,yBAAyB;IACzB,KAAK,EAAE,SAAS,CAAC;IACjB,6CAA6C;IAC7C,MAAM,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,eAAe;IAC9B,oEAAoE;IACpE,gBAAgB,EAAE,MAAM,CAAC;IACzB,yEAAyE;IACzE,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,wBAAwB,EAAE,eAGtC,CAAC;AAYF;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,SAAS,eAAe,EAAE,EACnC,UAAU,GAAE,eAA0C,GACrD,WAAW,EAAE,CAmDf;AAED,8CAA8C;AAC9C,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAOtD;AAED,uEAAuE;AACvE,wBAAgB,aAAa,CAC3B,KAAK,EAAE,WAAW,GACjB,KAAK,GAAG,QAAQ,GAAG,MAAM,CAK3B;AAED,kDAAkD;AAClD,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAOvD"}
@@ -0,0 +1,127 @@
1
+ /**
2
+ * cognium-ai#198 — per-entity design-smell detection.
3
+ *
4
+ * The quality passes historically keyed on **directory-averaged** circle-ir
5
+ * metrics (avgComplexity, avgCBO, avgLCOM, MI). Averages are refactor-
6
+ * invariant for design smells: splitting one god-class into three small
7
+ * classes, or one high-CC method into three simple ones, barely moves the
8
+ * average because you divide by more entities. Result (#198): across the 18
9
+ * contrastive quality-regression pairs only 1 discriminated smelly-from-
10
+ * refactored; 6 patterns produced no signal at all (McCabe CC, god-class,
11
+ * …), and 10 fired on both twins.
12
+ *
13
+ * The circle-ir metric stream already carries the per-entity data the
14
+ * averages threw away:
15
+ * - one `cyclomatic_complexity` entry per method, tagged
16
+ * `description: "method: <name>"`;
17
+ * - per-type `RFC` / `LCOM` / `CBO` / `DIT` / `NOC` entries, tagged
18
+ * `description: "type: <name>"`.
19
+ *
20
+ * This module consumes that stream and emits **per-entity** smells with
21
+ * per-entity thresholds, so a smell fires on the offending method/class and
22
+ * *not* on its refactored replacements. It is a pure function of the metric
23
+ * array (no I/O, no circle-ir re-analysis) so it is unit-testable against
24
+ * synthetic contrastive pairs in isolation.
25
+ */
26
+ export const DEFAULT_SMELL_THRESHOLDS = {
27
+ methodComplexity: 10,
28
+ classRfc: 12,
29
+ };
30
+ /** Parse `"method: foo"` / `"type: Bar"` → `foo` / `Bar`; else undefined. */
31
+ function entityName(description, prefix) {
32
+ if (!description)
33
+ return undefined;
34
+ const m = new RegExp(`^${prefix}:\\s*(.+)$`).exec(description.trim());
35
+ return m ? m[1].trim() : undefined;
36
+ }
37
+ /**
38
+ * Detect per-entity smells for a single file's circle-ir metric array.
39
+ *
40
+ * - **high-complexity**: any method whose cyclomatic complexity exceeds
41
+ * `methodComplexity`. Discriminates because a refactor lowers the *peak*
42
+ * method's CC, even when total/average CC is unchanged.
43
+ * - **god-class**: a type with a large response surface (`RFC ≥ classRfc`).
44
+ * RFC drops when the class is split across collaborators, so the smell
45
+ * clears on the refactored twin. `LCOM ≥ classLcom` (when available)
46
+ * escalates severity but is not required — see {@link SmellThresholds}.
47
+ */
48
+ export function detectEntitySmells(file, metrics, thresholds = DEFAULT_SMELL_THRESHOLDS) {
49
+ const smells = [];
50
+ // -- Per-method cyclomatic complexity -------------------------------------
51
+ for (const m of metrics) {
52
+ if (m.name !== 'cyclomatic_complexity')
53
+ continue;
54
+ const method = entityName(m.description, 'method');
55
+ if (!method)
56
+ continue; // aggregate/module-level entry — skip
57
+ if (m.value > thresholds.methodComplexity) {
58
+ smells.push({
59
+ file,
60
+ entity: method,
61
+ entityKind: 'method',
62
+ smell: 'high-complexity',
63
+ metric: 'cyclomatic_complexity',
64
+ value: m.value,
65
+ threshold: thresholds.methodComplexity,
66
+ });
67
+ }
68
+ }
69
+ // -- Per-class god-class / low-cohesion -----------------------------------
70
+ // Group the per-type metrics (RFC, LCOM, …) by their type name.
71
+ const byType = new Map();
72
+ for (const m of metrics) {
73
+ const type = entityName(m.description, 'type');
74
+ if (!type)
75
+ continue;
76
+ let bucket = byType.get(type);
77
+ if (!bucket) {
78
+ bucket = new Map();
79
+ byType.set(type, bucket);
80
+ }
81
+ // keep the max if a metric repeats for the same type
82
+ bucket.set(m.name, Math.max(bucket.get(m.name) ?? -Infinity, m.value));
83
+ }
84
+ for (const [type, bucket] of byType) {
85
+ const rfc = bucket.get('RFC');
86
+ if (rfc === undefined || rfc < thresholds.classRfc)
87
+ continue;
88
+ smells.push({
89
+ file,
90
+ entity: type,
91
+ entityKind: 'class',
92
+ smell: 'god-class',
93
+ metric: 'RFC',
94
+ value: rfc,
95
+ threshold: thresholds.classRfc,
96
+ });
97
+ }
98
+ return smells;
99
+ }
100
+ /** Map a smell to a stable quality ruleId. */
101
+ export function smellRuleId(smell) {
102
+ switch (smell.smell) {
103
+ case 'high-complexity':
104
+ return 'code-complexity-high-mccabe';
105
+ case 'god-class':
106
+ return 'code-complexity-god-class';
107
+ }
108
+ }
109
+ /** Map a smell to a severity by how far past the threshold it sits. */
110
+ export function smellSeverity(smell) {
111
+ const ratio = smell.value / smell.threshold;
112
+ if (ratio >= 2)
113
+ return 'high';
114
+ if (ratio >= 1.5)
115
+ return 'medium';
116
+ return 'low';
117
+ }
118
+ /** Human-readable message for a smell finding. */
119
+ export function smellMessage(smell) {
120
+ switch (smell.smell) {
121
+ case 'high-complexity':
122
+ return `Method '${smell.entity}' has cyclomatic complexity ${smell.value} (> ${smell.threshold})`;
123
+ case 'god-class':
124
+ return `Class '${smell.entity}' has a large response surface (${smell.metric} ${smell.value} ≥ ${smell.threshold}) — god-class / large-class smell`;
125
+ }
126
+ }
127
+ //# sourceMappingURL=entity-smells.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-smells.js","sourceRoot":"","sources":["../../src/quality/entity-smells.ts"],"names":[],"mappings":"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"}
@@ -12,4 +12,5 @@
12
12
  export { type QualityFinding, type QualityPassResult, type QualityTier, type QualityScoreResult, getQualityTier, QUALITY_TIER_COLORS, } from './types.js';
13
13
  export { calculateQualityScore, formatQualityReport, DEFAULT_QUALITY_WEIGHTS, type QualityWeights, type QualityScoreOptions, } from './calculator.js';
14
14
  export { generateQualityBadge, generateQualityBadgeFromScore, } from './badge.js';
15
+ export { detectEntitySmells, smellRuleId, smellSeverity, smellMessage, DEFAULT_SMELL_THRESHOLDS, type EntitySmell, type SmellKind, type SmellThresholds, type MetricEntryLike, } from './entity-smells.js';
15
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/quality/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,cAAc,EACd,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,EACvB,KAAK,cAAc,EACnB,KAAK,mBAAmB,GACzB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,oBAAoB,EACpB,6BAA6B,GAC9B,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/quality/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,cAAc,EACd,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,EACvB,KAAK,cAAc,EACnB,KAAK,mBAAmB,GACzB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,oBAAoB,EACpB,6BAA6B,GAC9B,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,aAAa,EACb,YAAY,EACZ,wBAAwB,EACxB,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,eAAe,GACrB,MAAM,oBAAoB,CAAC"}
@@ -15,4 +15,6 @@ export { getQualityTier, QUALITY_TIER_COLORS, } from './types.js';
15
15
  export { calculateQualityScore, formatQualityReport, DEFAULT_QUALITY_WEIGHTS, } from './calculator.js';
16
16
  // Badge
17
17
  export { generateQualityBadge, generateQualityBadgeFromScore, } from './badge.js';
18
+ // cognium-ai#198 — per-entity design-smell detection
19
+ export { detectEntitySmells, smellRuleId, smellSeverity, smellMessage, DEFAULT_SMELL_THRESHOLDS, } from './entity-smells.js';
18
20
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/quality/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,QAAQ;AACR,OAAO,EAKL,cAAc,EACd,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAEpB,aAAa;AACb,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,GAGxB,MAAM,iBAAiB,CAAC;AAEzB,QAAQ;AACR,OAAO,EACL,oBAAoB,EACpB,6BAA6B,GAC9B,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/quality/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,QAAQ;AACR,OAAO,EAKL,cAAc,EACd,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAEpB,aAAa;AACb,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,GAGxB,MAAM,iBAAiB,CAAC;AAEzB,QAAQ;AACR,OAAO,EACL,oBAAoB,EACpB,6BAA6B,GAC9B,MAAM,YAAY,CAAC;AAEpB,qDAAqD;AACrD,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,aAAa,EACb,YAAY,EACZ,wBAAwB,GAKzB,MAAM,oBAAoB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "circle-ir-ai",
3
- "version": "2.42.0",
3
+ "version": "2.43.0",
4
4
  "description": "LLM-enhanced SAST analysis built on circle-ir",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",