code-auditor-mcp 3.4.12 → 3.4.13

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.
Files changed (245) hide show
  1. package/CHANGELOG.md +46 -1
  2. package/dist/analyzers/__verify_self_probe.d.ts +2 -0
  3. package/dist/analyzers/__verify_self_probe.d.ts.map +1 -0
  4. package/dist/analyzers/__verify_self_probe.js +5 -0
  5. package/dist/analyzers/__verify_self_probe.js.map +1 -0
  6. package/dist/analyzers/analyzerUtils.d.ts +34 -1
  7. package/dist/analyzers/analyzerUtils.d.ts.map +1 -1
  8. package/dist/analyzers/analyzerUtils.js +61 -22
  9. package/dist/analyzers/analyzerUtils.js.map +1 -1
  10. package/dist/analyzers/cross-language/APIContractAnalyzer.d.ts +18 -23
  11. package/dist/analyzers/cross-language/APIContractAnalyzer.d.ts.map +1 -1
  12. package/dist/analyzers/cross-language/APIContractAnalyzer.js +198 -186
  13. package/dist/analyzers/cross-language/APIContractAnalyzer.js.map +1 -1
  14. package/dist/analyzers/cross-language/DependencyGraphBuilder.d.ts +78 -55
  15. package/dist/analyzers/cross-language/DependencyGraphBuilder.d.ts.map +1 -1
  16. package/dist/analyzers/cross-language/DependencyGraphBuilder.js +244 -243
  17. package/dist/analyzers/cross-language/DependencyGraphBuilder.js.map +1 -1
  18. package/dist/analyzers/cross-language/SchemaValidator.d.ts +27 -37
  19. package/dist/analyzers/cross-language/SchemaValidator.d.ts.map +1 -1
  20. package/dist/analyzers/cross-language/SchemaValidator.js +314 -275
  21. package/dist/analyzers/cross-language/SchemaValidator.js.map +1 -1
  22. package/dist/analyzers/crossDomain/CrossDomainAnalyzer.d.ts +17 -46
  23. package/dist/analyzers/crossDomain/CrossDomainAnalyzer.d.ts.map +1 -1
  24. package/dist/analyzers/crossDomain/CrossDomainAnalyzer.js +620 -523
  25. package/dist/analyzers/crossDomain/CrossDomainAnalyzer.js.map +1 -1
  26. package/dist/analyzers/documentationAnalyzer.d.ts +7 -2
  27. package/dist/analyzers/documentationAnalyzer.d.ts.map +1 -1
  28. package/dist/analyzers/documentationAnalyzer.js +259 -198
  29. package/dist/analyzers/documentationAnalyzer.js.map +1 -1
  30. package/dist/analyzers/invariantsAnalyzer.d.ts.map +1 -1
  31. package/dist/analyzers/invariantsAnalyzer.js +57 -50
  32. package/dist/analyzers/invariantsAnalyzer.js.map +1 -1
  33. package/dist/analyzers/orm/adapterRegistry.d.ts +10 -0
  34. package/dist/analyzers/orm/adapterRegistry.d.ts.map +1 -1
  35. package/dist/analyzers/orm/adapterRegistry.js +10 -0
  36. package/dist/analyzers/orm/adapterRegistry.js.map +1 -1
  37. package/dist/analyzers/orm/drizzleAdapter.d.ts +22 -0
  38. package/dist/analyzers/orm/drizzleAdapter.d.ts.map +1 -1
  39. package/dist/analyzers/orm/drizzleAdapter.js +42 -44
  40. package/dist/analyzers/orm/drizzleAdapter.js.map +1 -1
  41. package/dist/analyzers/orm/prismaAdapter.d.ts +30 -0
  42. package/dist/analyzers/orm/prismaAdapter.d.ts.map +1 -1
  43. package/dist/analyzers/orm/prismaAdapter.js +30 -0
  44. package/dist/analyzers/orm/prismaAdapter.js.map +1 -1
  45. package/dist/analyzers/provenance.d.ts +62 -2
  46. package/dist/analyzers/provenance.d.ts.map +1 -1
  47. package/dist/analyzers/provenance.js +443 -349
  48. package/dist/analyzers/provenance.js.map +1 -1
  49. package/dist/analyzers/reactAnalyzer.d.ts +11 -0
  50. package/dist/analyzers/reactAnalyzer.d.ts.map +1 -1
  51. package/dist/analyzers/reactAnalyzer.js +188 -125
  52. package/dist/analyzers/reactAnalyzer.js.map +1 -1
  53. package/dist/analyzers/ruleRegistry.d.ts +110 -1
  54. package/dist/analyzers/ruleRegistry.d.ts.map +1 -1
  55. package/dist/analyzers/ruleRegistry.js +1714 -124
  56. package/dist/analyzers/ruleRegistry.js.map +1 -1
  57. package/dist/analyzers/ruleTiming.d.ts +54 -0
  58. package/dist/analyzers/ruleTiming.d.ts.map +1 -0
  59. package/dist/analyzers/ruleTiming.js +71 -0
  60. package/dist/analyzers/ruleTiming.js.map +1 -0
  61. package/dist/analyzers/universal/UniversalConventionsAnalyzer.d.ts +13 -0
  62. package/dist/analyzers/universal/UniversalConventionsAnalyzer.d.ts.map +1 -1
  63. package/dist/analyzers/universal/UniversalConventionsAnalyzer.js +362 -283
  64. package/dist/analyzers/universal/UniversalConventionsAnalyzer.js.map +1 -1
  65. package/dist/analyzers/universal/UniversalDRYAnalyzer.d.ts +26 -68
  66. package/dist/analyzers/universal/UniversalDRYAnalyzer.d.ts.map +1 -1
  67. package/dist/analyzers/universal/UniversalDRYAnalyzer.js +430 -391
  68. package/dist/analyzers/universal/UniversalDRYAnalyzer.js.map +1 -1
  69. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts +17 -202
  70. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts.map +1 -1
  71. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js +1073 -1121
  72. package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js.map +1 -1
  73. package/dist/analyzers/universal/UniversalDocumentationAnalyzer.d.ts +3 -49
  74. package/dist/analyzers/universal/UniversalDocumentationAnalyzer.d.ts.map +1 -1
  75. package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js +414 -340
  76. package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js.map +1 -1
  77. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.d.ts +48 -5
  78. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.d.ts.map +1 -1
  79. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js +262 -134
  80. package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js.map +1 -1
  81. package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts +23 -214
  82. package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts.map +1 -1
  83. package/dist/analyzers/universal/UniversalSchemaAnalyzer.js +139 -1521
  84. package/dist/analyzers/universal/UniversalSchemaAnalyzer.js.map +1 -1
  85. package/dist/analyzers/universal/UniversalStylesAnalyzer.d.ts +78 -79
  86. package/dist/analyzers/universal/UniversalStylesAnalyzer.d.ts.map +1 -1
  87. package/dist/analyzers/universal/UniversalStylesAnalyzer.js +613 -480
  88. package/dist/analyzers/universal/UniversalStylesAnalyzer.js.map +1 -1
  89. package/dist/analyzers/universal/schema/codeAnalysis.d.ts +307 -0
  90. package/dist/analyzers/universal/schema/codeAnalysis.d.ts.map +1 -0
  91. package/dist/analyzers/universal/schema/codeAnalysis.js +965 -0
  92. package/dist/analyzers/universal/schema/codeAnalysis.js.map +1 -0
  93. package/dist/analyzers/universal/schema/config.d.ts +31 -0
  94. package/dist/analyzers/universal/schema/config.d.ts.map +1 -0
  95. package/dist/analyzers/universal/schema/config.js +57 -0
  96. package/dist/analyzers/universal/schema/config.js.map +1 -0
  97. package/dist/analyzers/universal/schema/discovery.d.ts +167 -0
  98. package/dist/analyzers/universal/schema/discovery.d.ts.map +1 -0
  99. package/dist/analyzers/universal/schema/discovery.js +616 -0
  100. package/dist/analyzers/universal/schema/discovery.js.map +1 -0
  101. package/dist/analyzers/universal/schema/jsonSchema.d.ts +27 -0
  102. package/dist/analyzers/universal/schema/jsonSchema.d.ts.map +1 -0
  103. package/dist/analyzers/universal/schema/jsonSchema.js +368 -0
  104. package/dist/analyzers/universal/schema/jsonSchema.js.map +1 -0
  105. package/dist/analyzers/universal/schema/migrations.d.ts +90 -0
  106. package/dist/analyzers/universal/schema/migrations.d.ts.map +1 -0
  107. package/dist/analyzers/universal/schema/migrations.js +238 -0
  108. package/dist/analyzers/universal/schema/migrations.js.map +1 -0
  109. package/dist/analyzers/universal/schema/types.d.ts +131 -0
  110. package/dist/analyzers/universal/schema/types.d.ts.map +1 -0
  111. package/dist/analyzers/universal/schema/types.js +10 -0
  112. package/dist/analyzers/universal/schema/types.js.map +1 -0
  113. package/dist/analyzers/universal/schema/violations.d.ts +44 -0
  114. package/dist/analyzers/universal/schema/violations.d.ts.map +1 -0
  115. package/dist/analyzers/universal/schema/violations.js +54 -0
  116. package/dist/analyzers/universal/schema/violations.js.map +1 -0
  117. package/dist/auditRunner.d.ts.map +1 -1
  118. package/dist/auditRunner.js +89 -13
  119. package/dist/auditRunner.js.map +1 -1
  120. package/dist/cli.js +315 -40
  121. package/dist/cli.js.map +1 -1
  122. package/dist/config/configLoader.d.ts.map +1 -1
  123. package/dist/config/configLoader.js +9 -7
  124. package/dist/config/configLoader.js.map +1 -1
  125. package/dist/config/defaults.d.ts +12 -3
  126. package/dist/config/defaults.d.ts.map +1 -1
  127. package/dist/config/defaults.js +15 -5
  128. package/dist/config/defaults.js.map +1 -1
  129. package/dist/config/effectiveConfig.d.ts +75 -0
  130. package/dist/config/effectiveConfig.d.ts.map +1 -0
  131. package/dist/config/effectiveConfig.js +213 -0
  132. package/dist/config/effectiveConfig.js.map +1 -0
  133. package/dist/config/pathProfiles.d.ts +7 -4
  134. package/dist/config/pathProfiles.d.ts.map +1 -1
  135. package/dist/config/pathProfiles.js +8 -10
  136. package/dist/config/pathProfiles.js.map +1 -1
  137. package/dist/config/thresholdRationales.d.ts +45 -0
  138. package/dist/config/thresholdRationales.d.ts.map +1 -0
  139. package/dist/config/thresholdRationales.js +67 -0
  140. package/dist/config/thresholdRationales.js.map +1 -0
  141. package/dist/conventions/conventionMiner.d.ts.map +1 -1
  142. package/dist/conventions/conventionMiner.js +6 -2
  143. package/dist/conventions/conventionMiner.js.map +1 -1
  144. package/dist/enforcement/diffGate.d.ts +55 -0
  145. package/dist/enforcement/diffGate.d.ts.map +1 -0
  146. package/dist/enforcement/diffGate.js +136 -0
  147. package/dist/enforcement/diffGate.js.map +1 -0
  148. package/dist/enforcement/gate.d.ts +36 -0
  149. package/dist/enforcement/gate.d.ts.map +1 -0
  150. package/dist/enforcement/gate.js +72 -0
  151. package/dist/enforcement/gate.js.map +1 -0
  152. package/dist/enforcement/suppressions.d.ts +41 -0
  153. package/dist/enforcement/suppressions.d.ts.map +1 -0
  154. package/dist/enforcement/suppressions.js +170 -0
  155. package/dist/enforcement/suppressions.js.map +1 -0
  156. package/dist/fingerprint.d.ts.map +1 -1
  157. package/dist/fingerprint.js +4 -1
  158. package/dist/fingerprint.js.map +1 -1
  159. package/dist/invariants/ruleEngine.d.ts +3 -4
  160. package/dist/invariants/ruleEngine.d.ts.map +1 -1
  161. package/dist/invariants/ruleEngine.js +2 -2
  162. package/dist/invariants/ruleEngine.js.map +1 -1
  163. package/dist/languages/LanguageOrchestrator.d.ts +14 -0
  164. package/dist/languages/LanguageOrchestrator.d.ts.map +1 -1
  165. package/dist/languages/LanguageOrchestrator.js +93 -55
  166. package/dist/languages/LanguageOrchestrator.js.map +1 -1
  167. package/dist/languages/LanguageRegistry.d.ts +8 -0
  168. package/dist/languages/LanguageRegistry.d.ts.map +1 -1
  169. package/dist/languages/LanguageRegistry.js +8 -0
  170. package/dist/languages/LanguageRegistry.js.map +1 -1
  171. package/dist/languages/RuntimeManager.d.ts +82 -60
  172. package/dist/languages/RuntimeManager.d.ts.map +1 -1
  173. package/dist/languages/RuntimeManager.js +404 -349
  174. package/dist/languages/RuntimeManager.js.map +1 -1
  175. package/dist/languages/UniversalAnalyzer.d.ts +51 -6
  176. package/dist/languages/UniversalAnalyzer.d.ts.map +1 -1
  177. package/dist/languages/UniversalAnalyzer.js +127 -88
  178. package/dist/languages/UniversalAnalyzer.js.map +1 -1
  179. package/dist/languages/adapterBridge.d.ts +36 -0
  180. package/dist/languages/adapterBridge.d.ts.map +1 -1
  181. package/dist/languages/adapterBridge.js +89 -35
  182. package/dist/languages/adapterBridge.js.map +1 -1
  183. package/dist/languages/go/GoAdapter.d.ts +66 -23
  184. package/dist/languages/go/GoAdapter.d.ts.map +1 -1
  185. package/dist/languages/go/GoAdapter.js +553 -474
  186. package/dist/languages/go/GoAdapter.js.map +1 -1
  187. package/dist/languages/tree-sitter/TreeSitterCssAdapter.d.ts +33 -4
  188. package/dist/languages/tree-sitter/TreeSitterCssAdapter.d.ts.map +1 -1
  189. package/dist/languages/tree-sitter/TreeSitterCssAdapter.js +101 -66
  190. package/dist/languages/tree-sitter/TreeSitterCssAdapter.js.map +1 -1
  191. package/dist/languages/tree-sitter/converter.d.ts +18 -0
  192. package/dist/languages/tree-sitter/converter.d.ts.map +1 -1
  193. package/dist/languages/tree-sitter/converter.js +18 -0
  194. package/dist/languages/tree-sitter/converter.js.map +1 -1
  195. package/dist/languages/tree-sitter/parser.d.ts +39 -2
  196. package/dist/languages/tree-sitter/parser.d.ts.map +1 -1
  197. package/dist/languages/tree-sitter/parser.js +93 -12
  198. package/dist/languages/tree-sitter/parser.js.map +1 -1
  199. package/dist/languages/types.d.ts +67 -2
  200. package/dist/languages/types.d.ts.map +1 -1
  201. package/dist/languages/typescript/TreeSitterTypeScriptAdapter.d.ts +253 -72
  202. package/dist/languages/typescript/TreeSitterTypeScriptAdapter.d.ts.map +1 -1
  203. package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js +1419 -923
  204. package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js.map +1 -1
  205. package/dist/mcp-tools-shared.d.ts.map +1 -1
  206. package/dist/mcp-tools-shared.js.map +1 -1
  207. package/dist/pipeline.d.ts +13 -5
  208. package/dist/pipeline.d.ts.map +1 -1
  209. package/dist/pipeline.js +381 -200
  210. package/dist/pipeline.js.map +1 -1
  211. package/dist/pipelineAdapters.d.ts +3 -8
  212. package/dist/pipelineAdapters.d.ts.map +1 -1
  213. package/dist/pipelineAdapters.js +149 -94
  214. package/dist/pipelineAdapters.js.map +1 -1
  215. package/dist/presets/presets.d.ts +54 -0
  216. package/dist/presets/presets.d.ts.map +1 -0
  217. package/dist/presets/presets.js +181 -0
  218. package/dist/presets/presets.js.map +1 -0
  219. package/dist/reporting/sarifReportGenerator.d.ts.map +1 -1
  220. package/dist/reporting/sarifReportGenerator.js +0 -2
  221. package/dist/reporting/sarifReportGenerator.js.map +1 -1
  222. package/dist/ruleAliases.d.ts +67 -0
  223. package/dist/ruleAliases.d.ts.map +1 -0
  224. package/dist/ruleAliases.js +79 -0
  225. package/dist/ruleAliases.js.map +1 -0
  226. package/dist/styles/cssAstExtractor.d.ts.map +1 -1
  227. package/dist/styles/cssAstExtractor.js +78 -18
  228. package/dist/styles/cssAstExtractor.js.map +1 -1
  229. package/dist/styles/styleIndexer.js +10 -1
  230. package/dist/styles/styleIndexer.js.map +1 -1
  231. package/dist/styles/tailwindConfigLoader.d.ts +8 -6
  232. package/dist/styles/tailwindConfigLoader.d.ts.map +1 -1
  233. package/dist/styles/tailwindConfigLoader.js +61 -15
  234. package/dist/styles/tailwindConfigLoader.js.map +1 -1
  235. package/dist/styles/tailwindUtilityExpander.d.ts.map +1 -1
  236. package/dist/styles/tailwindUtilityExpander.js +13 -1
  237. package/dist/styles/tailwindUtilityExpander.js.map +1 -1
  238. package/dist/types.d.ts +181 -1
  239. package/dist/types.d.ts.map +1 -1
  240. package/dist/types.js +8 -0
  241. package/dist/types.js.map +1 -1
  242. package/package.json +5 -3
  243. package/plugin/hooks/hooks.json +1 -1
  244. package/plugin/scripts/hook-audit.sh +25 -7
  245. package/plugin/skills/code-auditor/SKILL.md +5 -5
@@ -3,8 +3,15 @@
3
3
  * Works across multiple programming languages using the adapter pattern
4
4
  */
5
5
  import { UniversalAnalyzer } from '../../languages/UniversalAnalyzer.js';
6
+ import { withRuleTiming } from '../ruleTiming.js';
6
7
  export const DEFAULT_SOLID_CONFIG = {
7
8
  maxMethodsPerClass: 15,
9
+ // Confirmed by the Spec-11 R3 sweep; must match src/config/defaults.ts.
10
+ // Reverted 2026-08-14: a 50→100 / 4→6 calibration (made to clear
11
+ // UniversalSchemaAnalyzer during Spec 33) silently dropped 660
12
+ // single-responsibility findings on recall-protocol. Undone rather than
13
+ // re-baselined — a threshold change must be decided on its own merits with
14
+ // recall's numbers in front of you, not as a side effect of one file passing.
8
15
  maxLinesPerMethod: 50,
9
16
  maxParametersPerMethod: 4,
10
17
  maxClassComplexity: 50, // DEPRECATED — kept for back-compat
@@ -19,6 +26,33 @@ export const DEFAULT_SOLID_CONFIG = {
19
26
  checkLiskovSubstitution: true,
20
27
  skipTestFiles: true
21
28
  };
29
+ /**
30
+ * Builtin / standard-library type names excluded from the open-closed and
31
+ * dependency-inversion checks. These are platform primitives and runtime error
32
+ * types, not application types a class should abstract over. `instanceof` or
33
+ * `new` against one of these is a legitimate runtime concern, not an
34
+ * extensibility (OCP) or coupling (DIP) signal.
35
+ */
36
+ const BUILTIN_TYPES = new Set([
37
+ // Primitives & boxed types
38
+ 'Date', 'Array', 'Object', 'Map', 'Set', 'WeakMap', 'WeakSet',
39
+ 'Promise', 'RegExp', 'Number', 'String', 'Boolean', 'Symbol', 'BigInt',
40
+ 'Function', 'JSON', 'Math', 'Reflect', 'Proxy',
41
+ // Errors — throwing an error is not "instantiating a dependency"
42
+ 'Error', 'TypeError', 'RangeError', 'SyntaxError', 'ReferenceError',
43
+ 'EvalError', 'URIError', 'AggregateError',
44
+ // Typed arrays & buffers
45
+ 'ArrayBuffer', 'DataView', 'SharedArrayBuffer',
46
+ 'Uint8Array', 'Int8Array', 'Uint16Array', 'Int16Array',
47
+ 'Uint32Array', 'Int32Array', 'Float32Array', 'Float64Array',
48
+ 'BigInt64Array', 'BigUint64Array', 'Uint8ClampedArray',
49
+ // Web / Node platform types
50
+ 'URL', 'URLSearchParams', 'TextEncoder', 'TextDecoder', 'Buffer',
51
+ 'FormData', 'Blob', 'AbortController', 'AbortSignal',
52
+ ]);
53
+ /**
54
+ * Universal solid analyzer.
55
+ */
22
56
  export class UniversalSOLIDAnalyzer extends UniversalAnalyzer {
23
57
  name = 'solid';
24
58
  description = 'Detects violations of SOLID principles';
@@ -27,26 +61,27 @@ export class UniversalSOLIDAnalyzer extends UniversalAnalyzer {
27
61
  const violations = [];
28
62
  const finalConfig = { ...DEFAULT_SOLID_CONFIG, ...config };
29
63
  // Skip test files if configured
30
- if (finalConfig.skipTestFiles && this.isTestFile(ast.filePath)) {
64
+ if (finalConfig.skipTestFiles && isTestFile(ast.filePath)) {
31
65
  return violations;
32
66
  }
67
+ const ctx = { ast, adapter, sourceCode, config: finalConfig };
33
68
  // Analyze classes
34
69
  const classes = adapter.extractClasses(ast);
35
70
  for (const cls of classes) {
36
- violations.push(...this.analyzeClass(cls, ast, adapter, sourceCode, finalConfig));
71
+ violations.push(...this.analyzeClass(cls, ctx));
37
72
  }
38
73
  // Analyze standalone functions
39
74
  const functions = adapter.extractFunctions(ast);
40
75
  for (const func of functions) {
41
76
  if (!func.isMethod) { // Skip methods as they're analyzed with their classes
42
- violations.push(...this.analyzeFunction(func, ast, adapter, sourceCode, finalConfig));
77
+ violations.push(...this.analyzeFunction(func, ctx));
43
78
  }
44
79
  }
45
80
  // Analyze interfaces if supported
46
81
  if (adapter.extractInterfaces) {
47
82
  const interfaces = adapter.extractInterfaces(ast);
48
83
  for (const iface of interfaces) {
49
- violations.push(...this.analyzeInterface(iface, ast, adapter, sourceCode, finalConfig));
84
+ violations.push(...this.analyzeInterface(iface, ctx));
50
85
  }
51
86
  }
52
87
  return violations;
@@ -54,116 +89,195 @@ export class UniversalSOLIDAnalyzer extends UniversalAnalyzer {
54
89
  /**
55
90
  * Analyze a class for SOLID violations
56
91
  */
57
- analyzeClass(cls, ast, adapter, sourceCode, config) {
92
+ analyzeClass(cls, ctx) {
58
93
  const violations = [];
59
- // ── R5.2: Class size (suggestion) ──────────────────────────────────
60
- const methodsThreshold = config.classMethodsThreshold ?? config.maxMethodsPerClass ?? 15;
61
- if (cls.methods.length > methodsThreshold) {
62
- violations.push(this.createViolation(ast.filePath, cls.location.start, `Class "${cls.name}" has ${cls.methods.length} methods, exceeding the maximum of ${methodsThreshold}. Consider splitting responsibilities.`, 'suggestion', // R7: class-size → suggestion
63
- 'solid/class-size', undefined, cls.name));
64
- }
65
- // Analyze each method for complexity + standard size checks
94
+ this.checkClassSize(cls, ctx, violations);
95
+ this.checkOpenClosed(cls, ctx, violations);
96
+ this.checkLiskov(cls, ctx, violations);
97
+ this.checkDependencyInversion(cls, ctx, violations);
98
+ return violations;
99
+ }
100
+ /**
101
+ * R5.2: Class size checks (method count + aggregate cyclomatic complexity).
102
+ */
103
+ checkClassSize(cls, ctx, violations) {
104
+ const { ast, config } = ctx;
105
+ withRuleTiming('solid/class-size', () => {
106
+ const methodsThreshold = config.classMethodsThreshold ?? config.maxMethodsPerClass ?? 15;
107
+ if (cls.methods.length > methodsThreshold) {
108
+ violations.push(this.createViolation(ast.filePath, cls.location.start, `Class "${cls.name}" has ${cls.methods.length} methods, exceeding the maximum of ${methodsThreshold}. Consider splitting responsibilities.`, { severity: 'suggestion', rule: 'solid/class-size', symbol: cls.name, // R7: class-size → suggestion
109
+ resolution: {
110
+ action: 'split-class',
111
+ summary: `Split class "${cls.name}" (${cls.methods.length} methods) into smaller classes by extracting a cohesive subset of its methods.`,
112
+ symbols: cls.methods.map((m) => `${cls.name}.${m.name}`),
113
+ files: [ast.filePath],
114
+ lines: cls.methods.map((m) => m.location.start.line),
115
+ } }));
116
+ }
117
+ });
118
+ const aggregateComplexity = this.analyzeClassMethods(cls, ctx, violations);
119
+ withRuleTiming('solid/class-size', () => {
120
+ const maxAggregate = config.classAggregateComplexity ?? 100;
121
+ if (aggregateComplexity > maxAggregate) {
122
+ violations.push(this.createViolation(ast.filePath, cls.location.start, `Class "${cls.name}" has aggregate cyclomatic complexity ${aggregateComplexity}, ` +
123
+ `exceeding the maximum of ${maxAggregate}. Consider splitting the class.`, { severity: 'suggestion', rule: 'solid/class-size', symbol: cls.name, // R7: class-size → suggestion
124
+ resolution: {
125
+ action: 'split-class',
126
+ summary: `Split class "${cls.name}" (aggregate complexity ${aggregateComplexity}) to move its most-complex methods into a separate class.`,
127
+ symbols: cls.methods.map((m) => `${cls.name}.${m.name}`),
128
+ files: [ast.filePath],
129
+ lines: cls.methods.map((m) => m.location.start.line),
130
+ } }));
131
+ }
132
+ });
133
+ }
134
+ /**
135
+ * Analyze each method's complexity + standard size checks, returning the
136
+ * class's aggregate cyclomatic complexity for the R5.2 aggregation check.
137
+ */
138
+ analyzeClassMethods(cls, ctx, violations) {
139
+ const { ast, adapter, config } = ctx;
66
140
  let aggregateComplexity = 0;
67
141
  for (const method of cls.methods) {
68
142
  // R5.1: Per-method cyclomatic complexity (warning)
69
- const methodNode = this.findNodeByLocation(ast.root, method.location.start);
143
+ const methodNode = findNodeByLocation(ast.root, method.location.start);
70
144
  if (methodNode) {
71
145
  const methodComplexity = adapter.getComplexity(methodNode);
72
146
  aggregateComplexity += methodComplexity;
73
147
  const maxMethod = config.maxMethodComplexity ?? 50;
74
148
  if (methodComplexity > maxMethod) {
75
149
  violations.push(this.createViolation(ast.filePath, method.location.start, `Method "${cls.name}.${method.name}" has cyclomatic complexity ${methodComplexity}, ` +
76
- `exceeding the maximum of ${maxMethod}. Consider breaking it into smaller methods.`, 'warning', // R7: method-complexity → warning
77
- 'solid/method-complexity', undefined, `${cls.name}.${method.name}`));
150
+ `exceeding the maximum of ${maxMethod}. Consider breaking it into smaller methods.`, { severity: 'warning', rule: 'solid/method-complexity', symbol: `${cls.name}.${method.name}` } // R7: method-complexity → warning
151
+ ));
78
152
  }
79
153
  }
80
154
  // Standard function checks (params, line count)
81
- violations.push(...this.analyzeFunction(method, ast, adapter, sourceCode, config));
82
- }
83
- // R5.2: Class aggregate complexity (suggestion)
84
- const maxAggregate = config.classAggregateComplexity ?? 100;
85
- if (aggregateComplexity > maxAggregate) {
86
- violations.push(this.createViolation(ast.filePath, cls.location.start, `Class "${cls.name}" has aggregate cyclomatic complexity ${aggregateComplexity}, ` +
87
- `exceeding the maximum of ${maxAggregate}. Consider splitting the class.`, 'suggestion', // R7: class-size → suggestion
88
- 'solid/class-size', undefined, cls.name));
155
+ violations.push(...this.analyzeFunction(method, ctx));
89
156
  }
90
- // Open/Closed Principle - check for modification patterns
91
- if (this.hasModificationPatterns(cls, ast, adapter, sourceCode)) {
92
- violations.push(this.createViolation(ast.filePath, cls.location.start, `Class "${cls.name}" appears to be frequently modified. Consider using composition or inheritance for extension.`, 'suggestion', 'open-closed', undefined, cls.name));
93
- }
94
- // Liskov Substitution Principle
95
- if (config.checkLiskovSubstitution && cls.extends) {
96
- const lspViolations = this.checkLiskovSubstitution(cls, ast, adapter);
97
- violations.push(...lspViolations);
157
+ return aggregateComplexity;
158
+ }
159
+ /**
160
+ * Open/Closed Principle — check for modification patterns.
161
+ */
162
+ checkOpenClosed(cls, ctx, violations) {
163
+ if (this.hasModificationPatterns(cls, ctx.ast, ctx.adapter, ctx.sourceCode)) {
164
+ violations.push(this.createViolation(ctx.ast.filePath, cls.location.start, `Class "${cls.name}" appears to be frequently modified. Consider using composition or inheritance for extension.`, { severity: 'suggestion', rule: 'open-closed', symbol: cls.name }));
98
165
  }
99
- // Dependency Inversion Principle
100
- if (config.checkDependencyInversion) {
101
- const dipViolations = this.checkDependencyInversion(cls, ast, adapter, sourceCode);
102
- violations.push(...dipViolations);
166
+ }
167
+ /**
168
+ * Liskov Substitution Principle.
169
+ */
170
+ checkLiskov(cls, ctx, violations) {
171
+ if (ctx.config.checkLiskovSubstitution && cls.extends) {
172
+ violations.push(...this.checkLiskovSubstitution(cls, ctx.ast, ctx.adapter));
103
173
  }
104
- return violations;
105
174
  }
106
175
  /**
107
176
  * Analyze a function for SOLID violations
108
177
  */
109
- analyzeFunction(func, ast, adapter, sourceCode, config) {
178
+ analyzeFunction(func, ctx) {
110
179
  const violations = [];
111
- // Too many parameters
112
- if (func.parameters.length > (config.maxParametersPerMethod || 4)) {
113
- violations.push(this.createViolation(ast.filePath, func.location.start, `Function "${func.name}" has ${func.parameters.length} parameters, exceeding the maximum of ${config.maxParametersPerMethod || 4}. Consider using an options object.`, 'warning', 'single-responsibility', undefined, func.name));
114
- }
115
- // Function too long
116
- const lineCount = func.location.end.line - func.location.start.line + 1;
117
- if (lineCount > (config.maxLinesPerMethod || 50)) {
118
- violations.push(this.createViolation(ast.filePath, func.location.start, `Function "${func.name}" has ${lineCount} lines, exceeding the maximum of ${config.maxLinesPerMethod || 50}. Consider breaking it down.`, 'warning', 'single-responsibility', undefined, func.name));
119
- }
180
+ this.checkFunctionSize(func, ctx, violations);
120
181
  // R5.1: Cyclomatic complexity for standalone functions (not methods — those are
121
182
  // already checked in analyzeClass). Skip methods to avoid double-reporting.
122
183
  if (!func.isMethod) {
123
- const funcNode = this.findNodeByLocation(ast.root, func.location.start);
124
- if (funcNode) {
125
- const cyclomaticComplexity = adapter.getComplexity(funcNode);
126
- const maxMethod = config.maxMethodComplexity ?? 50;
127
- if (cyclomaticComplexity > maxMethod) {
128
- violations.push(this.createViolation(ast.filePath, func.location.start, `Function "${func.name}" has cyclomatic complexity ${cyclomaticComplexity}, ` +
129
- `exceeding the maximum of ${maxMethod}. Consider breaking it into smaller functions.`, 'warning', // R7: method-complexity → warning
130
- 'solid/method-complexity', undefined, func.name));
131
- }
132
- }
184
+ this.checkFunctionComplexity(func, ctx, violations);
133
185
  }
134
186
  return violations;
135
187
  }
188
+ /**
189
+ * R5.1/R5.2: Function size checks (parameter count + line count).
190
+ */
191
+ checkFunctionSize(func, ctx, violations) {
192
+ const { ast, config } = ctx;
193
+ withRuleTiming('single-responsibility', () => {
194
+ if (func.parameters.length > (config.maxParametersPerMethod || 4)) {
195
+ violations.push(this.createViolation(ast.filePath, func.location.start, `Function "${func.name}" has ${func.parameters.length} parameters, exceeding the maximum of ${config.maxParametersPerMethod || 4}. Consider using an options object.`, { severity: 'warning', rule: 'single-responsibility', symbol: func.name,
196
+ resolution: {
197
+ action: 'bundle-params',
198
+ summary: `Bundle the ${func.parameters.length} parameters of "${func.name}" into an options object.`,
199
+ symbols: func.parameters.map((p) => p.name),
200
+ files: [ast.filePath],
201
+ lines: [func.location.start.line],
202
+ } }));
203
+ }
204
+ });
205
+ withRuleTiming('single-responsibility', () => {
206
+ const lineCount = func.location.end.line - func.location.start.line + 1;
207
+ if (lineCount > (config.maxLinesPerMethod || 50)) {
208
+ violations.push(this.createViolation(ast.filePath, func.location.start, `Function "${func.name}" has ${lineCount} lines, exceeding the maximum of ${config.maxLinesPerMethod || 50}. Consider breaking it down.`, { severity: 'warning', rule: 'single-responsibility', symbol: func.name,
209
+ resolution: {
210
+ action: 'break-down-function',
211
+ summary: `Break "${func.name}" (${lineCount} lines) into smaller functions, extracting named helper blocks.`,
212
+ symbols: [func.name],
213
+ files: [ast.filePath],
214
+ lines: [func.location.start.line],
215
+ } }));
216
+ }
217
+ });
218
+ }
219
+ /**
220
+ * R5.1: Cyclomatic complexity for a standalone function.
221
+ */
222
+ checkFunctionComplexity(func, ctx, violations) {
223
+ const funcNode = findNodeByLocation(ctx.ast.root, func.location.start);
224
+ if (!funcNode)
225
+ return;
226
+ const cyclomaticComplexity = ctx.adapter.getComplexity(funcNode);
227
+ const maxMethod = ctx.config.maxMethodComplexity ?? 50;
228
+ if (cyclomaticComplexity > maxMethod) {
229
+ violations.push(this.createViolation(ctx.ast.filePath, func.location.start, `Function "${func.name}" has cyclomatic complexity ${cyclomaticComplexity}, ` +
230
+ `exceeding the maximum of ${maxMethod}. Consider breaking it into smaller functions.`, { severity: 'warning', rule: 'solid/method-complexity', symbol: func.name } // R7: method-complexity → warning
231
+ ));
232
+ }
233
+ }
136
234
  /**
137
235
  * Analyze an interface for Interface Segregation Principle
138
236
  */
139
- analyzeInterface(iface, ast, adapter, sourceCode, config) {
237
+ analyzeInterface(iface, ctx) {
238
+ const { ast, config } = ctx;
140
239
  const violations = [];
141
240
  if (!config.checkInterfaceSegregation) {
142
241
  return violations;
143
242
  }
144
- const memberCount = iface.members?.length || 0;
243
+ const members = iface.members || [];
244
+ const memberCount = members.length;
145
245
  const maxMembers = config.maxInterfaceMembers || 20;
146
- if (memberCount > maxMembers) {
147
- violations.push(this.createViolation(ast.filePath, iface.location.start, `Interface "${iface.name}" has ${memberCount} members, exceeding the maximum of ${maxMembers}. Consider splitting into smaller interfaces.`, 'warning', 'interface-segregation', undefined, iface.name));
246
+ // ISP governs *behavior* contracts — "clients should not be forced to
247
+ // depend on methods they do not use." A pure data-shape interface (every
248
+ // member is an optional `property_signature`, e.g. a config/options bag) is
249
+ // a record type, not a fat behavior interface; flagging it is a false
250
+ // positive. Only interfaces that expose methods carry the ISP smell.
251
+ const hasMethodMembers = members.some(member => member.type === 'method');
252
+ if (hasMethodMembers && memberCount > maxMembers) {
253
+ violations.push(this.createViolation(ast.filePath, iface.location.start, `Interface "${iface.name}" has ${memberCount} members, exceeding the maximum of ${maxMembers}. Consider splitting into smaller interfaces.`, { severity: 'warning', rule: 'interface-segregation', symbol: iface.name }));
148
254
  }
149
255
  return violations;
150
256
  }
151
257
  /**
152
258
  * Check for modification patterns (Open/Closed Principle)
259
+ *
260
+ * The OCP smell is type-checking against *user-defined* concrete types
261
+ * (`x instanceof MyClass`): adding a new subtype then forces editing this
262
+ * branch. `switch` statements are intentionally NOT flagged — a switch on a
263
+ * value (enum/string) is ordinary data dispatch, not extensibility pressure,
264
+ * and a switch on a node type in a tree-sitter adapter is the visitor
265
+ * pattern, which is exactly how OCP is satisfied. `instanceof` against a
266
+ * builtin/error type is a legitimate runtime check, not an extension point.
153
267
  */
154
268
  hasModificationPatterns(cls, ast, adapter, sourceCode) {
155
- // Look for switch statements or if-else chains that check types
156
- const classNode = this.findNodeByLocation(ast.root, cls.location.start);
269
+ const classNode = findNodeByLocation(ast.root, cls.location.start);
157
270
  if (!classNode)
158
271
  return false;
159
272
  let hasTypeChecking = false;
160
- this.walkAST(classNode, node => {
161
- // Check for switch statements
162
- if (node.type === 'switch_statement') {
163
- hasTypeChecking = true;
164
- }
165
- // Check for instanceof chains
166
- if (node.type === 'binary_expression' && adapter.getNodeText(node, sourceCode).includes('instanceof')) {
273
+ walkAST(classNode, node => {
274
+ if (node.type !== 'binary_expression')
275
+ return;
276
+ const text = adapter.getNodeText(node, sourceCode);
277
+ const m = /\binstanceof\s+([A-Za-z_$][\w$]*)/.exec(text);
278
+ if (!m)
279
+ return;
280
+ if (!BUILTIN_TYPES.has(m[1])) {
167
281
  hasTypeChecking = true;
168
282
  }
169
283
  });
@@ -181,16 +295,16 @@ export class UniversalSOLIDAnalyzer extends UniversalAnalyzer {
181
295
  if (method.name === 'constructor')
182
296
  continue;
183
297
  // Check for methods that throw exceptions when parent doesn't
184
- const methodNode = this.findNodeByLocation(ast.root, method.location.start);
298
+ const methodNode = findNodeByLocation(ast.root, method.location.start);
185
299
  if (methodNode) {
186
300
  let hasThrow = false;
187
- this.walkAST(methodNode, node => {
301
+ walkAST(methodNode, node => {
188
302
  if (node.type === 'throw_statement') {
189
303
  hasThrow = true;
190
304
  }
191
305
  });
192
306
  if (hasThrow) {
193
- violations.push(this.createViolation(ast.filePath, method.location.start, `Method "${cls.name}.${method.name}" throws exceptions. Ensure this doesn't violate parent class contract.`, 'suggestion', 'liskov-substitution', undefined, `${cls.name}.${method.name}`));
307
+ violations.push(this.createViolation(ast.filePath, method.location.start, `Method "${cls.name}.${method.name}" throws exceptions. Ensure this doesn't violate parent class contract.`, { severity: 'suggestion', rule: 'liskov-substitution', symbol: `${cls.name}.${method.name}` }));
194
308
  }
195
309
  }
196
310
  }
@@ -199,77 +313,91 @@ export class UniversalSOLIDAnalyzer extends UniversalAnalyzer {
199
313
  /**
200
314
  * Check Dependency Inversion Principle
201
315
  */
202
- checkDependencyInversion(cls, ast, adapter, sourceCode) {
203
- const violations = [];
204
- // Check for direct instantiation of dependencies
205
- const classNode = this.findNodeByLocation(ast.root, cls.location.start);
316
+ checkDependencyInversion(cls, ctx, violations) {
317
+ const classNode = findNodeByLocation(ctx.ast.root, cls.location.start);
206
318
  if (!classNode) {
207
- return violations;
208
- }
209
- let hasDirectInstantiation = false;
210
- let concreteImports = 0;
211
- // Count concrete class imports vs interface imports
212
- const imports = adapter.extractImports(ast);
213
- for (const imp of imports) {
214
- if (imp.source.includes('/') && !imp.source.includes('interface') && !imp.source.includes('types')) {
215
- concreteImports++;
216
- }
217
- }
218
- this.walkAST(classNode, node => {
219
- // Check for 'new' expressions
220
- if (node.type === 'new_expression') {
221
- const text = adapter.getNodeText(node, sourceCode);
222
- // Ignore primitive constructors like Date, Array, etc.
223
- if (!this.isPrimitiveConstructor(text)) {
224
- hasDirectInstantiation = true;
225
- }
226
- }
227
- });
228
- if (hasDirectInstantiation) {
229
- violations.push(this.createViolation(ast.filePath, cls.location.start, `Class "${cls.name}" directly instantiates dependencies. Consider dependency injection.`, 'suggestion', 'dependency-inversion', undefined, cls.name));
319
+ return;
230
320
  }
231
- if (concreteImports > 3) {
232
- violations.push(this.createViolation(ast.filePath, cls.location.start, `Class "${cls.name}" imports ${concreteImports} concrete implementations. Consider depending on abstractions.`, 'suggestion', 'dependency-inversion'));
321
+ if (this.hasDirectInstantiation(cls, classNode, ctx)) {
322
+ violations.push(this.createViolation(ctx.ast.filePath, cls.location.start, `Class "${cls.name}" directly instantiates a concrete dependency. Consider depending on abstractions.`, { severity: 'suggestion', rule: 'dependency-inversion', symbol: cls.name }));
233
323
  }
234
- return violations;
235
324
  }
236
325
  /**
237
- * Helper methods
326
+ * True if the class body directly instantiates a concrete type (`new Foo()`),
327
+ * which is the dependency-inversion signal.
328
+ *
329
+ * The signal is a *bare* construction of a PascalCase type name, regardless of
330
+ * where the type comes from — a statically-imported class, a CommonJS
331
+ * `require()` binding, or a class defined locally in the same file. The prior
332
+ * implementation gated on a statically-imported-name table, which made the rule
333
+ * dead on locally-defined classes (the common case — `AppGenerator`,
334
+ * `ResetPasswordError`, …) and on every `require()`-based codebase. Provenance is
335
+ * not a DIP concern: instantiating a concrete type violates the principle whether
336
+ * the type was imported or defined next door.
238
337
  */
239
- isTestFile(filePath) {
240
- const testPatterns = [
241
- /\.test\.[jt]sx?$/,
242
- /\.spec\.[jt]sx?$/,
243
- /__tests__\//,
244
- /test\//,
245
- /tests\//
246
- ];
247
- return testPatterns.some(pattern => pattern.test(filePath));
248
- }
249
- isPrimitiveConstructor(text) {
250
- const primitives = ['Date', 'Array', 'Object', 'Map', 'Set', 'Promise', 'Error', 'RegExp'];
251
- return primitives.some(p => text.includes(`new ${p}`));
338
+ hasDirectInstantiation(cls, classNode, ctx) {
339
+ const { adapter, sourceCode } = ctx;
340
+ let hasDirectInstantiation = false;
341
+ walkAST(classNode, node => {
342
+ if (node.type !== 'new_expression')
343
+ return;
344
+ // The constructor is the direct child that is neither the argument list
345
+ // nor a type-argument clause. It must be a bare `identifier`: a member
346
+ // access (`new this.Foo()`, `new ns.Foo()`), a parenthesized expression
347
+ // (`new (ctor())()`), or a call are not a concrete-type signal.
348
+ const ctor = (node.children ?? []).find(c => c.type !== 'arguments' && c.type !== 'type_arguments');
349
+ if (!ctor || ctor.type !== 'identifier')
350
+ return;
351
+ const ctorName = adapter.getNodeText(ctor, sourceCode).trim();
352
+ // A lowercase binding is an instance, not a type; only PascalCase names
353
+ // are treated as concrete classes (the JS/TS naming convention).
354
+ if (!/^[A-Z]/.test(ctorName))
355
+ return;
356
+ // Platform primitives / error types are not application dependencies.
357
+ if (BUILTIN_TYPES.has(ctorName))
358
+ return;
359
+ // A class instantiating itself (singleton `new ThisClass()`) is not a
360
+ // dependency.
361
+ if (ctorName === cls.name)
362
+ return;
363
+ hasDirectInstantiation = true;
364
+ });
365
+ return hasDirectInstantiation;
252
366
  }
253
- findNodeByLocation(root, location) {
254
- const queue = [root];
255
- while (queue.length > 0) {
256
- const node = queue.shift();
257
- if (node.location.start.line === location.line &&
258
- node.location.start.column === location.column) {
259
- return node;
260
- }
261
- if (node.children) {
262
- queue.push(...node.children);
263
- }
367
+ }
368
+ // --- Module-level helpers (pure tree/path utilities, no `this`) ---------------
369
+ /** True when the path is a test/spec file (used by SOLID's skipTestFiles). */
370
+ function isTestFile(filePath) {
371
+ const testPatterns = [
372
+ /\.test\.[jt]sx?$/,
373
+ /\.spec\.[jt]sx?$/,
374
+ /__tests__\//,
375
+ /test\//,
376
+ /tests\//
377
+ ];
378
+ return testPatterns.some(pattern => pattern.test(filePath));
379
+ }
380
+ /** Breadth-first search for the node whose start position matches `location`. */
381
+ function findNodeByLocation(root, location) {
382
+ const queue = [root];
383
+ while (queue.length > 0) {
384
+ const node = queue.shift();
385
+ if (node.location.start.line === location.line &&
386
+ node.location.start.column === location.column) {
387
+ return node;
264
388
  }
265
- return null;
266
- }
267
- walkAST(node, callback) {
268
- callback(node);
269
389
  if (node.children) {
270
- for (const child of node.children) {
271
- this.walkAST(child, callback);
272
- }
390
+ queue.push(...node.children);
391
+ }
392
+ }
393
+ return null;
394
+ }
395
+ /** Depth-first walk over a subtree, invoking `callback` on every node. */
396
+ function walkAST(node, callback) {
397
+ callback(node);
398
+ if (node.children) {
399
+ for (const child of node.children) {
400
+ walkAST(child, callback);
273
401
  }
274
402
  }
275
403
  }
@@ -1 +1 @@
1
- {"version":3,"file":"UniversalSOLIDAnalyzer.js","sourceRoot":"","sources":["../../../src/analyzers/universal/UniversalSOLIDAnalyzer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"UniversalSOLIDAnalyzer.js","sourceRoot":"","sources":["../../../src/analyzers/universal/UniversalSOLIDAnalyzer.ts"],"names":[],"mappings":"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"}