code-auditor-mcp 3.9.11 → 4.0.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/.claude-plugin/marketplace.json +1 -1
- package/CHANGELOG.md +200 -0
- package/dist/analyzers/analyzerUtils.js +2 -2
- package/dist/analyzers/analyzerUtils.js.map +1 -1
- package/dist/analyzers/applicability.d.ts.map +1 -1
- package/dist/analyzers/applicability.js +1 -0
- package/dist/analyzers/applicability.js.map +1 -1
- package/dist/analyzers/cross-language/DependencyGraphBuilder.d.ts +1 -1
- package/dist/analyzers/cross-language/DependencyGraphBuilder.d.ts.map +1 -1
- package/dist/analyzers/cross-language/DependencyGraphBuilder.js +3 -3
- package/dist/analyzers/cross-language/DependencyGraphBuilder.js.map +1 -1
- package/dist/analyzers/crossDomain/CrossDomainAnalyzer.d.ts +2 -2
- package/dist/analyzers/crossDomain/CrossDomainAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/crossDomain/CrossDomainAnalyzer.js +39 -15
- package/dist/analyzers/crossDomain/CrossDomainAnalyzer.js.map +1 -1
- package/dist/analyzers/documentationAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/documentationAnalyzer.js +14 -16
- package/dist/analyzers/documentationAnalyzer.js.map +1 -1
- package/dist/analyzers/invariantsAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/invariantsAnalyzer.js +30 -25
- package/dist/analyzers/invariantsAnalyzer.js.map +1 -1
- package/dist/analyzers/reactAnalyzer.d.ts +1 -1
- package/dist/analyzers/reactAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/reactAnalyzer.js +34 -116
- package/dist/analyzers/reactAnalyzer.js.map +1 -1
- package/dist/analyzers/ruleRegistry.d.ts +5 -3
- package/dist/analyzers/ruleRegistry.d.ts.map +1 -1
- package/dist/analyzers/ruleRegistry.js +198 -54
- package/dist/analyzers/ruleRegistry.js.map +1 -1
- package/dist/analyzers/universal/UniversalConventionsAnalyzer.d.ts +2 -2
- package/dist/analyzers/universal/UniversalConventionsAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalConventionsAnalyzer.js +10 -17
- package/dist/analyzers/universal/UniversalConventionsAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalDRYAnalyzer.d.ts +6 -6
- package/dist/analyzers/universal/UniversalDRYAnalyzer.js +13 -13
- package/dist/analyzers/universal/UniversalDRYAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js +22 -64
- package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalDocumentationAnalyzer.d.ts +3 -2
- package/dist/analyzers/universal/UniversalDocumentationAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js +14 -13
- package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js +11 -11
- package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts +1 -1
- package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalSchemaAnalyzer.js +18 -7
- package/dist/analyzers/universal/UniversalSchemaAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalStylesAnalyzer.d.ts +2 -2
- package/dist/analyzers/universal/UniversalStylesAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalStylesAnalyzer.js +38 -26
- package/dist/analyzers/universal/UniversalStylesAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/schema/codeAnalysis.d.ts +37 -13
- package/dist/analyzers/universal/schema/codeAnalysis.d.ts.map +1 -1
- package/dist/analyzers/universal/schema/codeAnalysis.js +42 -54
- package/dist/analyzers/universal/schema/codeAnalysis.js.map +1 -1
- package/dist/analyzers/universal/schema/jsonSchema.js +1 -1
- package/dist/analyzers/universal/schema/jsonSchema.js.map +1 -1
- package/dist/analyzers/universal/schema/violations.d.ts +1 -1
- package/dist/analyzers/universal/schema/violations.d.ts.map +1 -1
- package/dist/auditRouter.js +7 -7
- package/dist/auditRouter.js.map +1 -1
- package/dist/auditRunner.d.ts.map +1 -1
- package/dist/auditRunner.js +36 -6
- package/dist/auditRunner.js.map +1 -1
- package/dist/cli.js +23 -17
- package/dist/cli.js.map +1 -1
- package/dist/codeIndexDB.d.ts +1 -1
- package/dist/codeIndexDB.d.ts.map +1 -1
- package/dist/codeIndexDB.js +148 -18
- package/dist/codeIndexDB.js.map +1 -1
- package/dist/componentScanner.d.ts.map +1 -1
- package/dist/componentScanner.js +89 -28
- package/dist/componentScanner.js.map +1 -1
- package/dist/config/configLoader.js +1 -1
- package/dist/config/configLoader.js.map +1 -1
- package/dist/config/defaults.js +3 -3
- package/dist/config/defaults.js.map +1 -1
- package/dist/constants.d.ts +1 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/conventions/conventionMiner.d.ts.map +1 -1
- package/dist/conventions/conventionMiner.js +3 -10
- package/dist/conventions/conventionMiner.js.map +1 -1
- package/dist/daemon/core.d.ts.map +1 -1
- package/dist/daemon/core.js +33 -38
- package/dist/daemon/core.js.map +1 -1
- package/dist/daemon/lspServer.js +1 -1
- package/dist/daemon/lspServer.js.map +1 -1
- package/dist/daemon/main.d.ts.map +1 -1
- package/dist/daemon/main.js +14 -4
- package/dist/daemon/main.js.map +1 -1
- package/dist/enforcement/gate.js +2 -2
- package/dist/functionScanner.d.ts.map +1 -1
- package/dist/functionScanner.js +47 -42
- package/dist/functionScanner.js.map +1 -1
- package/dist/graph/importClassification.d.ts +76 -0
- package/dist/graph/importClassification.d.ts.map +1 -0
- package/dist/graph/importClassification.js +221 -0
- package/dist/graph/importClassification.js.map +1 -0
- package/dist/graph/importGraph.d.ts +1 -0
- package/dist/graph/importGraph.d.ts.map +1 -1
- package/dist/graph/importGraph.js +1 -1
- package/dist/graph/importGraph.js.map +1 -1
- package/dist/hooks/codex.d.ts.map +1 -1
- package/dist/hooks/codex.js +1 -1
- package/dist/hooks/codex.js.map +1 -1
- package/dist/hooks/core.d.ts +1 -1
- package/dist/hooks/core.d.ts.map +1 -1
- package/dist/hooks/core.js +4 -4
- package/dist/hooks/core.js.map +1 -1
- package/dist/hooks/cursor.d.ts.map +1 -1
- package/dist/hooks/cursor.js +2 -2
- package/dist/hooks/cursor.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/installer.d.ts +20 -0
- package/dist/installer.d.ts.map +1 -1
- package/dist/installer.js +58 -0
- package/dist/installer.js.map +1 -1
- package/dist/invariants/invariant-rules.schema.json +1 -1
- package/dist/invariants/ruleValidator.js +1 -1
- package/dist/invariants/ruleValidator.js.map +1 -1
- package/dist/invariants/types.d.ts +1 -1
- package/dist/invariants/types.d.ts.map +1 -1
- package/dist/languages/LanguageOrchestrator.d.ts +3 -2
- package/dist/languages/LanguageOrchestrator.d.ts.map +1 -1
- package/dist/languages/LanguageOrchestrator.js +1 -1
- package/dist/languages/LanguageOrchestrator.js.map +1 -1
- package/dist/languages/RuntimeManager.d.ts +20 -11
- package/dist/languages/RuntimeManager.d.ts.map +1 -1
- package/dist/languages/RuntimeManager.js +151 -51
- package/dist/languages/RuntimeManager.js.map +1 -1
- package/dist/languages/adapterBridge.d.ts +10 -0
- package/dist/languages/adapterBridge.d.ts.map +1 -1
- package/dist/languages/adapterBridge.js +30 -7
- package/dist/languages/adapterBridge.js.map +1 -1
- package/dist/languages/go/GoAdapter.d.ts +1 -19
- package/dist/languages/go/GoAdapter.d.ts.map +1 -1
- package/dist/languages/go/GoAdapter.js +33 -116
- package/dist/languages/go/GoAdapter.js.map +1 -1
- package/dist/languages/go/analyzer +0 -0
- package/dist/languages/go/analyzer-src/analyzer.go +8 -8
- package/dist/languages/go/analyzer-src/solid.go +5 -5
- package/dist/languages/goBinary.d.ts +46 -0
- package/dist/languages/goBinary.d.ts.map +1 -0
- package/dist/languages/goBinary.js +169 -0
- package/dist/languages/goBinary.js.map +1 -0
- package/dist/languages/tree-sitter/TreeSitterCssAdapter.d.ts +1 -28
- package/dist/languages/tree-sitter/TreeSitterCssAdapter.d.ts.map +1 -1
- package/dist/languages/tree-sitter/TreeSitterCssAdapter.js +3 -42
- package/dist/languages/tree-sitter/TreeSitterCssAdapter.js.map +1 -1
- package/dist/languages/tree-sitter/converter.d.ts.map +1 -1
- package/dist/languages/tree-sitter/converter.js +2 -1
- package/dist/languages/tree-sitter/converter.js.map +1 -1
- package/dist/languages/tree-sitter/rawNode.d.ts +31 -0
- package/dist/languages/tree-sitter/rawNode.d.ts.map +1 -0
- package/dist/languages/tree-sitter/rawNode.js +38 -0
- package/dist/languages/tree-sitter/rawNode.js.map +1 -0
- package/dist/languages/types.d.ts +0 -21
- package/dist/languages/types.d.ts.map +1 -1
- package/dist/languages/typescript/TreeSitterTypeScriptAdapter.d.ts +1 -32
- package/dist/languages/typescript/TreeSitterTypeScriptAdapter.d.ts.map +1 -1
- package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js +69 -203
- package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js.map +1 -1
- package/dist/ledger.d.ts +3 -0
- package/dist/ledger.d.ts.map +1 -1
- package/dist/ledger.js +45 -9
- package/dist/ledger.js.map +1 -1
- package/dist/mcp-tools/projectTasks.js +2 -2
- package/dist/mcp-tools/projectTasks.js.map +1 -1
- package/dist/mcp-tools/workflowGuide.js +3 -3
- package/dist/mcp-tools/workflowGuide.js.map +1 -1
- package/dist/mcp-tools-shared.js +13 -13
- package/dist/mcp-tools-shared.js.map +1 -1
- package/dist/mcp-ui-simple.js +7 -7
- package/dist/mcp-ui-simple.js.map +1 -1
- package/dist/mcp.js +14 -14
- package/dist/mcp.js.map +1 -1
- package/dist/mcpAuditJobs.js +7 -7
- package/dist/mcpAuditJobs.js.map +1 -1
- package/dist/mcpAutoIndex.js +1 -1
- package/dist/mcpAutoIndex.js.map +1 -1
- package/dist/nextFile.d.ts +2 -2
- package/dist/nextFile.d.ts.map +1 -1
- package/dist/nextFile.js +19 -5
- package/dist/nextFile.js.map +1 -1
- package/dist/nextFileIncremental.d.ts +3 -2
- package/dist/nextFileIncremental.d.ts.map +1 -1
- package/dist/nextFileIncremental.js +20 -7
- package/dist/nextFileIncremental.js.map +1 -1
- package/dist/pipelineAdapters.d.ts +17 -0
- package/dist/pipelineAdapters.d.ts.map +1 -1
- package/dist/pipelineAdapters.js +279 -178
- package/dist/pipelineAdapters.js.map +1 -1
- package/dist/reporting/csvReportGenerator.js +6 -6
- package/dist/reporting/csvReportGenerator.js.map +1 -1
- package/dist/reporting/htmlReportGenerator.js +11 -11
- package/dist/reporting/htmlReportGenerator.js.map +1 -1
- package/dist/reporting/jsonReportGenerator.js +2 -2
- package/dist/reporting/jsonReportGenerator.js.map +1 -1
- package/dist/reporting/sarifReportGenerator.js +1 -1
- package/dist/reporting/sarifReportGenerator.js.map +1 -1
- package/dist/scripts/benchmarkWorkers.js +1 -1
- package/dist/scripts/benchmarkWorkers.js.map +1 -1
- package/dist/styles/cssAstExtractor.d.ts +2 -2
- package/dist/styles/cssAstExtractor.d.ts.map +1 -1
- package/dist/styles/cssAstExtractor.js +67 -111
- package/dist/styles/cssAstExtractor.js.map +1 -1
- package/dist/styles/styleIndexer.d.ts.map +1 -1
- package/dist/styles/styleIndexer.js +19 -6
- package/dist/styles/styleIndexer.js.map +1 -1
- package/dist/telemetry.d.ts +1 -1
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/types/crossLanguage.d.ts +1 -1
- package/dist/types/crossLanguage.d.ts.map +1 -1
- package/dist/types.d.ts +59 -19
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +6 -5
- package/dist/types.js.map +1 -1
- package/dist/utils/astParser.d.ts +1 -17
- package/dist/utils/astParser.d.ts.map +1 -1
- package/dist/utils/astParser.js +18 -60
- package/dist/utils/astParser.js.map +1 -1
- package/dist/utils/astUtils.d.ts +12 -12
- package/dist/utils/astUtils.d.ts.map +1 -1
- package/dist/utils/astUtils.js +83 -82
- package/dist/utils/astUtils.js.map +1 -1
- package/dist/utils/componentResponsibility.d.ts +8 -8
- package/dist/utils/componentResponsibility.d.ts.map +1 -1
- package/dist/utils/componentResponsibility.js +33 -38
- package/dist/utils/componentResponsibility.js.map +1 -1
- package/dist/utils/dependencyExtractor.d.ts +3 -3
- package/dist/utils/dependencyExtractor.d.ts.map +1 -1
- package/dist/utils/dependencyExtractor.js +26 -30
- package/dist/utils/dependencyExtractor.js.map +1 -1
- package/dist/utils/fileDiscovery.d.ts.map +1 -1
- package/dist/utils/fileDiscovery.js +65 -0
- package/dist/utils/fileDiscovery.js.map +1 -1
- package/dist/utils/jsDocParser.d.ts +6 -6
- package/dist/utils/jsDocParser.d.ts.map +1 -1
- package/dist/utils/jsDocParser.js +18 -21
- package/dist/utils/jsDocParser.js.map +1 -1
- package/dist/utils/reactDetection.d.ts +7 -7
- package/dist/utils/reactDetection.d.ts.map +1 -1
- package/dist/utils/reactDetection.js +42 -49
- package/dist/utils/reactDetection.js.map +1 -1
- package/dist/version.generated.d.ts +1 -1
- package/dist/version.generated.d.ts.map +1 -1
- package/dist/version.generated.js +1 -1
- package/dist/version.generated.js.map +1 -1
- package/package.json +1 -1
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/README.md +5 -4
- package/plugin/hooks/hooks.json +11 -0
- package/plugin/scripts/hook-common.sh +129 -26
- package/plugin/scripts/hook-warm.sh +44 -0
- package/plugin/skills/code-auditor/SKILL-RULE-KINDS.md +28 -21
- package/plugin/skills/code-auditor/SKILL.md +10 -10
- package/server.json +2 -2
|
@@ -74,7 +74,7 @@ function checkComponentComplexity(component, config) {
|
|
|
74
74
|
return [{
|
|
75
75
|
file: component.filePath,
|
|
76
76
|
line: component.lineNumber,
|
|
77
|
-
severity: '
|
|
77
|
+
severity: 'severe',
|
|
78
78
|
message: `Component '${component.name}' has high complexity (${component.complexity})`,
|
|
79
79
|
componentName: component.name,
|
|
80
80
|
rule: 'complexity',
|
|
@@ -94,7 +94,7 @@ function checkPropsValidation(component, config) {
|
|
|
94
94
|
return [{
|
|
95
95
|
file: component.filePath,
|
|
96
96
|
line: component.lineNumber,
|
|
97
|
-
severity: '
|
|
97
|
+
severity: 'advisory',
|
|
98
98
|
message: `Component '${component.name}' is missing prop type definitions`,
|
|
99
99
|
componentName: component.name,
|
|
100
100
|
rule: 'missing-props',
|
|
@@ -121,7 +121,7 @@ function checkHooksRules(component) {
|
|
|
121
121
|
violations.push({
|
|
122
122
|
file: component.filePath,
|
|
123
123
|
line: hook.line,
|
|
124
|
-
severity: '
|
|
124
|
+
severity: 'advisory',
|
|
125
125
|
message: `Custom hook '${hook.name}' should start with 'use'`,
|
|
126
126
|
componentName: component.name,
|
|
127
127
|
rule: 'hooks-naming',
|
|
@@ -157,7 +157,7 @@ function checkPerformanceIssues(component, config) {
|
|
|
157
157
|
violations.push({
|
|
158
158
|
file: component.filePath,
|
|
159
159
|
line: component.lineNumber,
|
|
160
|
-
severity: '
|
|
160
|
+
severity: 'severe',
|
|
161
161
|
message: `Consider memoizing component '${component.name}' for better performance`,
|
|
162
162
|
componentName: component.name,
|
|
163
163
|
rule: 'performance',
|
|
@@ -172,15 +172,16 @@ function checkPerformanceIssues(component, config) {
|
|
|
172
172
|
// Check for inline function props (causes re-renders).
|
|
173
173
|
// Honest, per-element signal: an `onClick` attribute whose value is an inline
|
|
174
174
|
// arrow/function expression (`onClick={() => …}` / `onClick={function …}`),
|
|
175
|
-
// not a bare identifier reference (`onClick={handleClick}`).
|
|
176
|
-
//
|
|
177
|
-
//
|
|
178
|
-
const
|
|
179
|
-
if (
|
|
175
|
+
// not a bare identifier reference (`onClick={handleClick}`). Read from the
|
|
176
|
+
// AST-derived element details, so commented-out JSX never counts and the
|
|
177
|
+
// finding anchors to the `onClick` attribute's own line.
|
|
178
|
+
const onClickInline = (component.jsxElementDetails ?? []).find(el => el.attributes.some(a => a.name === 'onClick' && (a.valueKind === 'arrow' || a.valueKind === 'function')));
|
|
179
|
+
if (onClickInline) {
|
|
180
|
+
const attr = onClickInline.attributes.find(a => a.name === 'onClick' && (a.valueKind === 'arrow' || a.valueKind === 'function'));
|
|
180
181
|
violations.push({
|
|
181
182
|
file: component.filePath,
|
|
182
|
-
line:
|
|
183
|
-
severity: '
|
|
183
|
+
line: attr.line,
|
|
184
|
+
severity: 'severe',
|
|
184
185
|
message: `Component '${component.name}' passes an inline function prop (onClick) causing unnecessary re-renders`,
|
|
185
186
|
componentName: component.name,
|
|
186
187
|
rule: 'performance',
|
|
@@ -195,18 +196,19 @@ function checkPerformanceIssues(component, config) {
|
|
|
195
196
|
*/
|
|
196
197
|
function checkAccessibility(component) {
|
|
197
198
|
const violations = [];
|
|
198
|
-
|
|
199
|
-
|
|
199
|
+
// Structured, AST-derived elements: JSX inside comments/strings is absent
|
|
200
|
+
// (it is never a `jsx_element` node), and each element carries its own line.
|
|
201
|
+
const elements = component.jsxElementDetails ?? [];
|
|
202
|
+
if (elements.length === 0)
|
|
200
203
|
return violations;
|
|
201
204
|
// Per-element <img> alt check: flag only when a specific <img> opening tag
|
|
202
|
-
// lacks an alt attribute.
|
|
203
|
-
//
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
if (hasImgWithoutAlt(source)) {
|
|
205
|
+
// lacks an alt attribute. Anchored to the offending <img> element's line, not
|
|
206
|
+
// the component declaration.
|
|
207
|
+
const imgWithoutAlt = elements.find(el => el.tagName === 'img' && !el.attributes.some(a => a.name === 'alt'));
|
|
208
|
+
if (imgWithoutAlt) {
|
|
207
209
|
violations.push({
|
|
208
210
|
file: component.filePath,
|
|
209
|
-
line:
|
|
211
|
+
line: imgWithoutAlt.line,
|
|
210
212
|
severity: 'severe',
|
|
211
213
|
message: `Component '${component.name}' has an <img> element without an alt attribute`,
|
|
212
214
|
componentName: component.name,
|
|
@@ -216,14 +218,14 @@ function checkAccessibility(component) {
|
|
|
216
218
|
});
|
|
217
219
|
}
|
|
218
220
|
// Per-element click-handler check on non-interactive elements: the element's
|
|
219
|
-
// own opening tag carries `onClick`.
|
|
220
|
-
// in the component, not on the specific element.
|
|
221
|
+
// own opening tag carries `onClick`. Anchored to that element's line.
|
|
221
222
|
const nonInteractiveElements = ['div', 'span', 'section'];
|
|
222
223
|
for (const element of nonInteractiveElements) {
|
|
223
|
-
|
|
224
|
+
const offending = elements.find(el => el.tagName === element && el.attributes.some(a => a.name === 'onClick'));
|
|
225
|
+
if (offending) {
|
|
224
226
|
violations.push({
|
|
225
227
|
file: component.filePath,
|
|
226
|
-
line:
|
|
228
|
+
line: offending.line,
|
|
227
229
|
severity: 'severe',
|
|
228
230
|
message: `Component '${component.name}' has onClick on a non-interactive <${element}> element`,
|
|
229
231
|
componentName: component.name,
|
|
@@ -250,7 +252,7 @@ function checkMissingKeys(component) {
|
|
|
250
252
|
violations.push({
|
|
251
253
|
file: component.filePath,
|
|
252
254
|
line: component.lineNumber,
|
|
253
|
-
severity: '
|
|
255
|
+
severity: 'severe',
|
|
254
256
|
message: `Component '${component.name}' may be rendering lists without keys`,
|
|
255
257
|
componentName: component.name,
|
|
256
258
|
rule: 'performance',
|
|
@@ -260,97 +262,10 @@ function checkMissingKeys(component) {
|
|
|
260
262
|
}
|
|
261
263
|
return violations;
|
|
262
264
|
}
|
|
263
|
-
/** Full component source for
|
|
265
|
+
/** Full component source for the component-level list-key heuristic. */
|
|
264
266
|
function componentSource(component) {
|
|
265
267
|
return component.body ?? component.context ?? '';
|
|
266
268
|
}
|
|
267
|
-
/**
|
|
268
|
-
* True when any `<img ...>` opening tag in the source lacks an `alt` attribute.
|
|
269
|
-
* Each tag is scanned in isolation, so a component with two images — one with
|
|
270
|
-
* alt and one without — is correctly flagged.
|
|
271
|
-
*/
|
|
272
|
-
function hasImgWithoutAlt(source) {
|
|
273
|
-
const imgRe = /<img\b/ig;
|
|
274
|
-
let match;
|
|
275
|
-
while ((match = imgRe.exec(source)) !== null) {
|
|
276
|
-
const tag = source.slice(match.index, findJsxTagEnd(source, match.index));
|
|
277
|
-
if (!/\balt\b\s*=/.test(tag))
|
|
278
|
-
return true;
|
|
279
|
-
}
|
|
280
|
-
return false;
|
|
281
|
-
}
|
|
282
|
-
/**
|
|
283
|
-
* True when an opening tag `<element … onClick …>` carries an onClick handler.
|
|
284
|
-
* Scans each `<element` opening tag's own attribute span (skipping nested
|
|
285
|
-
* braces/strings/arrow `=>`) so an onClick on a *different* element never
|
|
286
|
-
* counts.
|
|
287
|
-
*/
|
|
288
|
-
function hasOnClickOnElement(source, element) {
|
|
289
|
-
const openRe = new RegExp(`<${element}\\b`, 'ig');
|
|
290
|
-
let match;
|
|
291
|
-
while ((match = openRe.exec(source)) !== null) {
|
|
292
|
-
const tag = source.slice(match.index, findJsxTagEnd(source, match.index));
|
|
293
|
-
if (/\bonClick\b/.test(tag))
|
|
294
|
-
return true;
|
|
295
|
-
}
|
|
296
|
-
return false;
|
|
297
|
-
}
|
|
298
|
-
/**
|
|
299
|
-
* True when an event handler attribute (`onClick={…}`) is assigned an inline
|
|
300
|
-
* function — an arrow or `function` expression — rather than an identifier
|
|
301
|
-
* reference. Identifiers (`onClick={handleClick}`) are not inline props.
|
|
302
|
-
*/
|
|
303
|
-
function hasInlineFunctionProp(source, prop) {
|
|
304
|
-
const attrRe = new RegExp(`\\b${prop}\\s*=\\s*\\{`, 'g');
|
|
305
|
-
let match;
|
|
306
|
-
while ((match = attrRe.exec(source)) !== null) {
|
|
307
|
-
const rest = source.slice(match.index + match[0].length);
|
|
308
|
-
// Inline arrow `() =>` / `(...) =>` / `x =>` or `function` expression.
|
|
309
|
-
if (/^\s*(?:\([^)]*\)|[A-Za-z_$][\w$]*)\s*=>/.test(rest) || /^\s*function\b/.test(rest)) {
|
|
310
|
-
return true;
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
return false;
|
|
314
|
-
}
|
|
315
|
-
/**
|
|
316
|
-
* Find the index just past the `>` that closes a JSX opening tag starting at
|
|
317
|
-
* `start`, skipping over string literals, `{…}` expression braces, and the `>`
|
|
318
|
-
* of an arrow function (`=>`) nested inside an expression. Returns the source
|
|
319
|
-
* length when no unbraced `>` is found (a malformed tag).
|
|
320
|
-
*/
|
|
321
|
-
function findJsxTagEnd(source, start) {
|
|
322
|
-
let i = start;
|
|
323
|
-
let inString = null;
|
|
324
|
-
let braceDepth = 0;
|
|
325
|
-
while (i < source.length) {
|
|
326
|
-
const ch = source[i];
|
|
327
|
-
if (inString) {
|
|
328
|
-
if (ch === inString)
|
|
329
|
-
inString = null;
|
|
330
|
-
i++;
|
|
331
|
-
continue;
|
|
332
|
-
}
|
|
333
|
-
if (ch === '"' || ch === "'" || ch === '`') {
|
|
334
|
-
inString = ch;
|
|
335
|
-
i++;
|
|
336
|
-
continue;
|
|
337
|
-
}
|
|
338
|
-
if (ch === '{') {
|
|
339
|
-
braceDepth++;
|
|
340
|
-
i++;
|
|
341
|
-
continue;
|
|
342
|
-
}
|
|
343
|
-
if (ch === '}') {
|
|
344
|
-
braceDepth = Math.max(0, braceDepth - 1);
|
|
345
|
-
i++;
|
|
346
|
-
continue;
|
|
347
|
-
}
|
|
348
|
-
if (ch === '>' && braceDepth === 0)
|
|
349
|
-
return i + 1;
|
|
350
|
-
i++;
|
|
351
|
-
}
|
|
352
|
-
return source.length;
|
|
353
|
-
}
|
|
354
269
|
/** Recursively search for a cycle reachable from `component`. */
|
|
355
270
|
function findCycle(ctx, component, path = []) {
|
|
356
271
|
if (ctx.recursionStack.has(component)) {
|
|
@@ -391,7 +306,7 @@ export function checkCircularDependencies(componentTree) {
|
|
|
391
306
|
if (cycle) {
|
|
392
307
|
violations.push({
|
|
393
308
|
file: 'component-dependencies',
|
|
394
|
-
severity: '
|
|
309
|
+
severity: 'severe',
|
|
395
310
|
message: `Circular dependency detected: ${cycle.join(' → ')}`,
|
|
396
311
|
rule: 'complexity',
|
|
397
312
|
violationType: 'complexity',
|
|
@@ -545,11 +460,14 @@ function collectRawElementUsages(scanResults, watchSet, wrapperMap) {
|
|
|
545
460
|
continue;
|
|
546
461
|
}
|
|
547
462
|
rawUsageCounts.set(jsxEl, (rawUsageCounts.get(jsxEl) || 0) + 1);
|
|
463
|
+
// Anchor to the raw element's own line (first occurrence in the
|
|
464
|
+
// component), not the component declaration.
|
|
465
|
+
const detail = component.jsxElementDetails?.find(d => d.tagName === jsxEl);
|
|
548
466
|
rawUsageLocations.push({
|
|
549
467
|
element: jsxEl,
|
|
550
468
|
componentName: component.name,
|
|
551
469
|
filePath: component.filePath,
|
|
552
|
-
line: component.lineNumber ?? 0,
|
|
470
|
+
line: detail?.line ?? component.lineNumber ?? 0,
|
|
553
471
|
wrapperName: wrapper.wrapperName,
|
|
554
472
|
wrapperFile: wrapper.wrapperFile,
|
|
555
473
|
});
|
|
@@ -564,7 +482,7 @@ function collectRawElementUsages(scanResults, watchSet, wrapperMap) {
|
|
|
564
482
|
* Auto-detects wrapper components (exported components whose rendered root is a single
|
|
565
483
|
* intrinsic element from the watch list) and flags raw usages of that element outside
|
|
566
484
|
* the wrapper's definition. A {@link ReactAnalyzerConfig.componentMap} overrides
|
|
567
|
-
* auto-detection, making every raw usage a
|
|
485
|
+
* auto-detection, making every raw usage a finding.
|
|
568
486
|
* @param config
|
|
569
487
|
* @param scanResults
|
|
570
488
|
* @returns
|
|
@@ -582,7 +500,7 @@ export function checkRawElements(scanResults, config) {
|
|
|
582
500
|
const { rawUsageCounts, rawUsageLocations } = collectRawElementUsages(scanResults, watchSet, wrapperMap);
|
|
583
501
|
// ── Phase 3: Emit violations ──────────────────────────────────────────
|
|
584
502
|
const minUsages = config.wrapperMinUsages ?? 5;
|
|
585
|
-
const severity = '
|
|
503
|
+
const severity = 'advisory';
|
|
586
504
|
for (const loc of rawUsageLocations) {
|
|
587
505
|
const count = rawUsageCounts.get(loc.element) || 0;
|
|
588
506
|
if (count < minUsages)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reactAnalyzer.js","sourceRoot":"","sources":["../../src/analyzers/reactAnalyzer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"reactAnalyzer.js","sourceRoot":"","sources":["../../src/analyzers/reactAnalyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,8 @@ import type { Resolution } from '../types.js';
|
|
|
19
19
|
* They are listed here for collision detection nonetheless.
|
|
20
20
|
*
|
|
21
21
|
* NOTE: invariants analyzer rule IDs are user-defined and variable —
|
|
22
|
-
* `config-error` and `engine-error` are
|
|
22
|
+
* `config-error` and `engine-error` are diagnostics (not violations), see
|
|
23
|
+
* `CoverageDiagnostic.kind`; they no longer have registry entries.
|
|
23
24
|
*
|
|
24
25
|
* Spec 37 R2: every entry carries `resolvable`, `message`, `docs`, and
|
|
25
26
|
* `thresholds`. Missing any field is a build failure (the interface makes
|
|
@@ -128,8 +129,9 @@ export interface RuleSamples {
|
|
|
128
129
|
* Every known rule/violation-type ID → analyzer.
|
|
129
130
|
*
|
|
130
131
|
* Invariant IDs (user-defined from .codeauditor.json rules) are NOT
|
|
131
|
-
* listed — they vary per project. The
|
|
132
|
-
*
|
|
132
|
+
* listed — they vary per project. The fixed invariant IDs (`config-error`,
|
|
133
|
+
* `engine-error`) are diagnostics (see `CoverageDiagnostic.kind`), not
|
|
134
|
+
* violation rules, so they have no registry entry.
|
|
133
135
|
*/
|
|
134
136
|
export declare const RULE_REGISTRY: Record<string, Readonly<RuleRegistryEntry>>;
|
|
135
137
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ruleRegistry.d.ts","sourceRoot":"","sources":["../../src/analyzers/ruleRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C
|
|
1
|
+
{"version":3,"file":"ruleRegistry.d.ts","sourceRoot":"","sources":["../../src/analyzers/ruleRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,MAAM,WAAW,iBAAiB;IAChC,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,4DAA4D;IAC5D,KAAK,EAAE,MAAM,GAAG,WAAW,GAAG,eAAe,GAAG,MAAM,GAAG,cAAc,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC/F;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB;;;;;;OAMG;IACH,UAAU,EAAE,OAAO,CAAC;IACpB;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB;;;;;;OAMG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;OAKG;IACH,OAAO,EAAE,WAAW,CAAC;CACtB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,UAAU;IACzB,+FAA+F;IAC/F,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4FAA4F;IAC5F,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAED,8DAA8D;AAC9D,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CA4+DrE,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,aAAa,EAAE,SAAS,MAAM,EAEnC,CAAC;AAET;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,EAAE,SAAS,MAAM,EAMlD,CAAC;AAEF;;;GAGG;AACH,UAAU,aAAa;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,aAAa,GAAG,QAAQ,CAAC,iBAAiB,CAAC,GAAG,SAAS,CAQ/F"}
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
* Every known rule/violation-type ID → analyzer.
|
|
3
3
|
*
|
|
4
4
|
* Invariant IDs (user-defined from .codeauditor.json rules) are NOT
|
|
5
|
-
* listed — they vary per project. The
|
|
6
|
-
*
|
|
5
|
+
* listed — they vary per project. The fixed invariant IDs (`config-error`,
|
|
6
|
+
* `engine-error`) are diagnostics (see `CoverageDiagnostic.kind`), not
|
|
7
|
+
* violation rules, so they have no registry entry.
|
|
7
8
|
*/
|
|
8
9
|
export const RULE_REGISTRY = {
|
|
9
10
|
// ── solid (UniversalSOLIDAnalyzer) ──────────────────────────────────────
|
|
@@ -234,6 +235,117 @@ export const RULE_REGISTRY = {
|
|
|
234
235
|
],
|
|
235
236
|
},
|
|
236
237
|
},
|
|
238
|
+
// ── Go non-SOLID rules (Spec-54 severity) ──────────────────────────────
|
|
239
|
+
// The Go subprocess emits these under a single `go` analyzer namespace: the
|
|
240
|
+
// subprocess's internal `imports`/`errors`/`goroutines`/`channels` dispatch is
|
|
241
|
+
// collapsed to `go` at emit time so its structure does not surface as four
|
|
242
|
+
// analyzer names a user has to learn. Registered here so coverage and
|
|
243
|
+
// describeRuleId see them, and so their severities carry a registry entry.
|
|
244
|
+
'channel-deadlock': {
|
|
245
|
+
analyzer: 'go',
|
|
246
|
+
field: 'rule',
|
|
247
|
+
input: ['files'],
|
|
248
|
+
resolvable: false,
|
|
249
|
+
message: 'Guaranteed deadlock: an unbuffered channel is both sent to and received from in the same goroutine.',
|
|
250
|
+
docs: 'channel-deadlock',
|
|
251
|
+
thresholds: [],
|
|
252
|
+
thresholdRationale: 'Go analyzer: deadlock is a structural property (unbuffered send + receive in one goroutine with no `go`), not a size. Hardcoded in the Go analyzer (not a TS config key).',
|
|
253
|
+
samples: {
|
|
254
|
+
valid: [
|
|
255
|
+
{
|
|
256
|
+
code: 'package main\n\nfunc buffered() {\n\tch := make(chan int, 1)\n\tch <- 1\n\t<-ch\n}',
|
|
257
|
+
nearMiss: true,
|
|
258
|
+
},
|
|
259
|
+
],
|
|
260
|
+
invalid: [
|
|
261
|
+
{ code: 'package main\n\nfunc deadlock() {\n\tch := make(chan int)\n\tch <- 1\n\t<-ch\n}' },
|
|
262
|
+
],
|
|
263
|
+
},
|
|
264
|
+
},
|
|
265
|
+
'error-handling': {
|
|
266
|
+
analyzer: 'go',
|
|
267
|
+
field: 'rule',
|
|
268
|
+
input: ['files'],
|
|
269
|
+
resolvable: false,
|
|
270
|
+
message: 'Function assigns an error that is never checked, returned, or propagated.',
|
|
271
|
+
docs: 'error-handling',
|
|
272
|
+
thresholds: [],
|
|
273
|
+
thresholdRationale: 'Go analyzer: dropped-error detection is structural (an assigned error never compared/returned/passed/ignored), not a count. Hardcoded in the Go analyzer (not a TS config key).',
|
|
274
|
+
samples: {
|
|
275
|
+
valid: [
|
|
276
|
+
{
|
|
277
|
+
code: 'package main\n\nimport "os"\n\nfunc checked() {\n\tf, err := os.Open("x")\n\tif err != nil {\n\t\treturn\n\t}\n\tf.Close()\n}',
|
|
278
|
+
nearMiss: true,
|
|
279
|
+
},
|
|
280
|
+
],
|
|
281
|
+
invalid: [
|
|
282
|
+
{ code: 'package main\n\nimport "os"\n\nfunc dropped() {\n\tf, err := os.Open("x")\n\tf.Close()\n}' },
|
|
283
|
+
],
|
|
284
|
+
},
|
|
285
|
+
},
|
|
286
|
+
'concurrency': {
|
|
287
|
+
analyzer: 'go',
|
|
288
|
+
field: 'rule',
|
|
289
|
+
input: ['files'],
|
|
290
|
+
resolvable: false,
|
|
291
|
+
message: 'Function launches a goroutine without synchronization.',
|
|
292
|
+
docs: 'concurrency',
|
|
293
|
+
thresholds: [],
|
|
294
|
+
thresholdRationale: 'Go analyzer: unsynchronized-goroutine detection is structural (a `go` statement with no sync primitive/channel in the function), not a count. Hardcoded in the Go analyzer (not a TS config key).',
|
|
295
|
+
samples: {
|
|
296
|
+
valid: [
|
|
297
|
+
{
|
|
298
|
+
code: 'package main\n\nimport "sync"\n\nfunc safe() {\n\tvar wg sync.WaitGroup\n\twg.Add(1)\n\tgo func() {\n\t\tdefer wg.Done()\n\t}()\n\twg.Wait()\n}',
|
|
299
|
+
nearMiss: true,
|
|
300
|
+
},
|
|
301
|
+
],
|
|
302
|
+
invalid: [
|
|
303
|
+
{ code: 'package main\n\nfunc fire() {\n\tgo background()\n}\n\nfunc background() {}' },
|
|
304
|
+
],
|
|
305
|
+
},
|
|
306
|
+
},
|
|
307
|
+
'import-organization': {
|
|
308
|
+
analyzer: 'go',
|
|
309
|
+
field: 'rule',
|
|
310
|
+
input: ['files'],
|
|
311
|
+
resolvable: false,
|
|
312
|
+
message: 'Import block mixes standard library and third-party imports without grouping.',
|
|
313
|
+
docs: 'import-organization',
|
|
314
|
+
thresholds: [],
|
|
315
|
+
thresholdRationale: 'Go analyzer: grouping is a structural check (stdlib vs third-party block separation), not a count. Hardcoded in the Go analyzer (not a TS config key).',
|
|
316
|
+
samples: {
|
|
317
|
+
valid: [
|
|
318
|
+
{
|
|
319
|
+
code: 'package main\n\nimport (\n\t"os"\n\n\t"github.com/gin-gonic/gin"\n)',
|
|
320
|
+
nearMiss: true,
|
|
321
|
+
},
|
|
322
|
+
],
|
|
323
|
+
invalid: [
|
|
324
|
+
{ code: 'package main\n\nimport (\n\t"os"\n\t"github.com/gin-gonic/gin"\n)' },
|
|
325
|
+
],
|
|
326
|
+
},
|
|
327
|
+
},
|
|
328
|
+
'import-style': {
|
|
329
|
+
analyzer: 'go',
|
|
330
|
+
field: 'rule',
|
|
331
|
+
input: ['files'],
|
|
332
|
+
resolvable: false,
|
|
333
|
+
message: 'Dot import detected — can lead to namespace pollution.',
|
|
334
|
+
docs: 'import-style',
|
|
335
|
+
thresholds: [],
|
|
336
|
+
thresholdRationale: 'Go analyzer: dot-import detection is structural (an import whose local name is "."), not a count. Hardcoded in the Go analyzer (not a TS config key).',
|
|
337
|
+
samples: {
|
|
338
|
+
valid: [
|
|
339
|
+
{
|
|
340
|
+
code: 'package main\n\nimport f "fmt"',
|
|
341
|
+
nearMiss: true,
|
|
342
|
+
},
|
|
343
|
+
],
|
|
344
|
+
invalid: [
|
|
345
|
+
{ code: 'package main\n\nimport . "fmt"' },
|
|
346
|
+
],
|
|
347
|
+
},
|
|
348
|
+
},
|
|
237
349
|
'solid/liskov-substitution': {
|
|
238
350
|
analyzer: 'solid',
|
|
239
351
|
field: 'rule',
|
|
@@ -343,6 +455,29 @@ export const RULE_REGISTRY = {
|
|
|
343
455
|
],
|
|
344
456
|
},
|
|
345
457
|
},
|
|
458
|
+
// Spec 13 R5 — a previously-identical clone pair whose similarity has fallen
|
|
459
|
+
// across consecutive runs (copy-paste then edit one side). Cross-run: emitted
|
|
460
|
+
// by the divergence-tracking pass in auditRunner, not the per-file DRY visitor.
|
|
461
|
+
'dry/diverging-clone': {
|
|
462
|
+
analyzer: 'dry',
|
|
463
|
+
field: 'rule',
|
|
464
|
+
input: ['files'],
|
|
465
|
+
resolvable: false,
|
|
466
|
+
message: 'Clone pair has diverged: similarity dropped {drop} (from {previous} to {current}) across {runs} consecutive runs. Review {file1}:{line1} and {file2}:{line2} for diverged logic.',
|
|
467
|
+
docs: 'dry/diverging-clone',
|
|
468
|
+
// No thresholds: the divergence knobs (divergenceThreshold, divergenceRuns,
|
|
469
|
+
// minPairSimilarity) live in DivergenceConfig (types.ts), read by auditRunner's
|
|
470
|
+
// cross-run pass — not keys the dry analyzer's own DEFAULT_DRY_CONFIG reads.
|
|
471
|
+
thresholds: [],
|
|
472
|
+
samples: {
|
|
473
|
+
valid: [
|
|
474
|
+
{ code: '// pair similarity 0.82 → 0.81 → 0.80 (below the 0.05 drop over 2 runs)', nearMiss: true },
|
|
475
|
+
],
|
|
476
|
+
invalid: [
|
|
477
|
+
{ code: '// pair similarity 0.82 → 0.70 → 0.58: a ≥0.05 drop for 2 consecutive runs' },
|
|
478
|
+
],
|
|
479
|
+
},
|
|
480
|
+
},
|
|
346
481
|
'duplicate-string-literal': {
|
|
347
482
|
analyzer: 'dry',
|
|
348
483
|
field: 'rule',
|
|
@@ -993,6 +1128,53 @@ export const RULE_REGISTRY = {
|
|
|
993
1128
|
],
|
|
994
1129
|
},
|
|
995
1130
|
},
|
|
1131
|
+
// Cross-file stale-table-reference detection → emitted by the schema Stage 3
|
|
1132
|
+
// reducer. Distinguishes "never existed" (unknown-table) from "existed and was
|
|
1133
|
+
// dropped in a migration" (stale-table-reference): the latter is a stale code
|
|
1134
|
+
// reference, not a typo, so the message names the dropping migration and the
|
|
1135
|
+
// tables it created in its place.
|
|
1136
|
+
'stale-table-reference': {
|
|
1137
|
+
analyzer: 'schema',
|
|
1138
|
+
field: 'rule',
|
|
1139
|
+
input: ['schema-code'],
|
|
1140
|
+
resolvable: true,
|
|
1141
|
+
message: 'Reference to dropped table "{table}" — dropped in {migration}.',
|
|
1142
|
+
docs: 'stale-table-reference',
|
|
1143
|
+
thresholds: [],
|
|
1144
|
+
samples: {
|
|
1145
|
+
valid: [
|
|
1146
|
+
{ code: 'db.query("SELECT * FROM users")', nearMiss: true },
|
|
1147
|
+
],
|
|
1148
|
+
invalid: [
|
|
1149
|
+
{
|
|
1150
|
+
code: 'db.query("SELECT * FROM legacy_orders")',
|
|
1151
|
+
resolution: { action: 'update-stale-reference', summary: 'The table "legacy_orders" was dropped in 002_drop_legacy.sql. That migration creates "orders" — update this reference to a table that still exists.', symbols: ['orders'] },
|
|
1152
|
+
},
|
|
1153
|
+
],
|
|
1154
|
+
},
|
|
1155
|
+
},
|
|
1156
|
+
// Per-function query-count ceiling → emitted by the schema-code visitor.
|
|
1157
|
+
// Tunable via maxQueriesPerFunction (default 5); listed under `schema`, which
|
|
1158
|
+
// (like the other schema rules) has no config shape in the threshold-validation
|
|
1159
|
+
// test, so the knob is documented here rather than declared in `thresholds`.
|
|
1160
|
+
'too-many-queries': {
|
|
1161
|
+
analyzer: 'schema',
|
|
1162
|
+
field: 'rule',
|
|
1163
|
+
configGate: 'validateQueryPatterns',
|
|
1164
|
+
input: ['schema-code'],
|
|
1165
|
+
resolvable: false,
|
|
1166
|
+
message: 'Function "{name}" has {count} queries, exceeding the maximum of {max}.',
|
|
1167
|
+
docs: 'too-many-queries',
|
|
1168
|
+
thresholds: [],
|
|
1169
|
+
samples: {
|
|
1170
|
+
valid: [
|
|
1171
|
+
{ code: 'function getUser(id) {\n return db.query("SELECT * FROM users WHERE id = ?", [id]);\n}', nearMiss: true },
|
|
1172
|
+
],
|
|
1173
|
+
invalid: [
|
|
1174
|
+
{ code: 'function loadDashboard() {\n db.query("SELECT * FROM users");\n db.query("SELECT * FROM orders");\n db.query("SELECT * FROM products");\n db.query("SELECT * FROM reviews");\n db.query("SELECT * FROM events");\n db.query("SELECT * FROM alerts");\n}' },
|
|
1175
|
+
],
|
|
1176
|
+
},
|
|
1177
|
+
},
|
|
996
1178
|
// Spec 58 R1 — DB-call SQL held in an unresolvable identifier (imported
|
|
997
1179
|
// constant, computed/concatenated expression, call result) is no longer a
|
|
998
1180
|
// violation rule. It moved to the coverage-diagnostics channel
|
|
@@ -1127,41 +1309,14 @@ export const RULE_REGISTRY = {
|
|
|
1127
1309
|
],
|
|
1128
1310
|
},
|
|
1129
1311
|
},
|
|
1130
|
-
// ── invariants (invariantsAnalyzer) — fixed
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
thresholds: [],
|
|
1139
|
-
samples: {
|
|
1140
|
-
valid: [
|
|
1141
|
-
{ code: 'export default { rules: [] };', nearMiss: true },
|
|
1142
|
-
],
|
|
1143
|
-
invalid: [
|
|
1144
|
-
{ code: 'export default { rules: [{ kind: "not-a-kind" }] };' },
|
|
1145
|
-
],
|
|
1146
|
-
},
|
|
1147
|
-
},
|
|
1148
|
-
'engine-error': {
|
|
1149
|
-
analyzer: 'invariants',
|
|
1150
|
-
field: 'rule',
|
|
1151
|
-
input: ['files'],
|
|
1152
|
-
resolvable: false,
|
|
1153
|
-
message: 'Invariant rule engine error: {error}.',
|
|
1154
|
-
docs: 'engine-error',
|
|
1155
|
-
thresholds: [],
|
|
1156
|
-
samples: {
|
|
1157
|
-
valid: [
|
|
1158
|
-
{ code: 'runRules([], { rules: [] });', nearMiss: true },
|
|
1159
|
-
],
|
|
1160
|
-
invalid: [
|
|
1161
|
-
{ code: 'runRules(null, { rules: [] });' },
|
|
1162
|
-
],
|
|
1163
|
-
},
|
|
1164
|
-
},
|
|
1312
|
+
// ── invariants (invariantsAnalyzer) — no fixed violation IDs ────────────
|
|
1313
|
+
// Spec 59 — `config-error` / `engine-error` moved off the severity ladder to
|
|
1314
|
+
// the coverage-diagnostics channel (`CoverageDiagnostic`, kinds `config-error`
|
|
1315
|
+
// / `engine-error`). A bad `.codeauditor.json` or a rule-engine failure is a
|
|
1316
|
+
// tool-side "couldn't do its job", not a defect in the audited code. The
|
|
1317
|
+
// registry entries are removed so `buildCoverageReport` doesn't classify them
|
|
1318
|
+
// `clean` (which would assert the tool checked something it no longer checks
|
|
1319
|
+
// as a finding).
|
|
1165
1320
|
// ── schema-validator (SchemaValidator) ──────────────────────────────────
|
|
1166
1321
|
'field-mismatch': {
|
|
1167
1322
|
analyzer: 'schema-validator',
|
|
@@ -1583,23 +1738,12 @@ export const RULE_REGISTRY = {
|
|
|
1583
1738
|
],
|
|
1584
1739
|
},
|
|
1585
1740
|
},
|
|
1586
|
-
|
|
1587
|
-
|
|
1588
|
-
|
|
1589
|
-
|
|
1590
|
-
|
|
1591
|
-
|
|
1592
|
-
docs: 'styles/undefined-class-disabled',
|
|
1593
|
-
thresholds: [],
|
|
1594
|
-
samples: {
|
|
1595
|
-
valid: [
|
|
1596
|
-
{ code: '// detection enabled, corpus present', nearMiss: true },
|
|
1597
|
-
],
|
|
1598
|
-
invalid: [
|
|
1599
|
-
{ code: '// no stylesheet corpus available' },
|
|
1600
|
-
],
|
|
1601
|
-
},
|
|
1602
|
-
},
|
|
1741
|
+
// Spec 59 — `styles/undefined-class-disabled` moved off the severity ladder
|
|
1742
|
+
// to the coverage-diagnostics channel (`CoverageDiagnostic`, kind
|
|
1743
|
+
// `undefined-class-disabled`). A Tailwind probe failure (with a Tailwind
|
|
1744
|
+
// config present) disables undefined-class detection — a tool-side "couldn't
|
|
1745
|
+
// do its job", not a defect. The registry entry is removed so coverage never
|
|
1746
|
+
// asserts the tool checked something it no longer checks as a finding.
|
|
1603
1747
|
'styles/token-bypass': {
|
|
1604
1748
|
analyzer: 'styles',
|
|
1605
1749
|
field: 'rule',
|