code-auditor-mcp 3.4.12 → 3.4.14
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 +74 -1
- package/dist/analyzers/__verify_self_probe.d.ts +2 -0
- package/dist/analyzers/__verify_self_probe.d.ts.map +1 -0
- package/dist/analyzers/__verify_self_probe.js +5 -0
- package/dist/analyzers/__verify_self_probe.js.map +1 -0
- package/dist/analyzers/analyzerUtils.d.ts +34 -1
- package/dist/analyzers/analyzerUtils.d.ts.map +1 -1
- package/dist/analyzers/analyzerUtils.js +61 -22
- package/dist/analyzers/analyzerUtils.js.map +1 -1
- package/dist/analyzers/cross-language/APIContractAnalyzer.d.ts +18 -23
- package/dist/analyzers/cross-language/APIContractAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/cross-language/APIContractAnalyzer.js +198 -186
- package/dist/analyzers/cross-language/APIContractAnalyzer.js.map +1 -1
- package/dist/analyzers/cross-language/DependencyGraphBuilder.d.ts +78 -55
- package/dist/analyzers/cross-language/DependencyGraphBuilder.d.ts.map +1 -1
- package/dist/analyzers/cross-language/DependencyGraphBuilder.js +244 -243
- package/dist/analyzers/cross-language/DependencyGraphBuilder.js.map +1 -1
- package/dist/analyzers/cross-language/SchemaValidator.d.ts +27 -37
- package/dist/analyzers/cross-language/SchemaValidator.d.ts.map +1 -1
- package/dist/analyzers/cross-language/SchemaValidator.js +314 -275
- package/dist/analyzers/cross-language/SchemaValidator.js.map +1 -1
- package/dist/analyzers/crossDomain/CrossDomainAnalyzer.d.ts +17 -46
- package/dist/analyzers/crossDomain/CrossDomainAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/crossDomain/CrossDomainAnalyzer.js +620 -523
- package/dist/analyzers/crossDomain/CrossDomainAnalyzer.js.map +1 -1
- package/dist/analyzers/documentationAnalyzer.d.ts +7 -2
- package/dist/analyzers/documentationAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/documentationAnalyzer.js +259 -198
- package/dist/analyzers/documentationAnalyzer.js.map +1 -1
- package/dist/analyzers/invariantsAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/invariantsAnalyzer.js +57 -50
- package/dist/analyzers/invariantsAnalyzer.js.map +1 -1
- package/dist/analyzers/orm/adapterRegistry.d.ts +10 -0
- package/dist/analyzers/orm/adapterRegistry.d.ts.map +1 -1
- package/dist/analyzers/orm/adapterRegistry.js +10 -0
- package/dist/analyzers/orm/adapterRegistry.js.map +1 -1
- package/dist/analyzers/orm/drizzleAdapter.d.ts +22 -0
- package/dist/analyzers/orm/drizzleAdapter.d.ts.map +1 -1
- package/dist/analyzers/orm/drizzleAdapter.js +42 -44
- package/dist/analyzers/orm/drizzleAdapter.js.map +1 -1
- package/dist/analyzers/orm/prismaAdapter.d.ts +30 -0
- package/dist/analyzers/orm/prismaAdapter.d.ts.map +1 -1
- package/dist/analyzers/orm/prismaAdapter.js +30 -0
- package/dist/analyzers/orm/prismaAdapter.js.map +1 -1
- package/dist/analyzers/provenance.d.ts +62 -2
- package/dist/analyzers/provenance.d.ts.map +1 -1
- package/dist/analyzers/provenance.js +443 -349
- package/dist/analyzers/provenance.js.map +1 -1
- package/dist/analyzers/reactAnalyzer.d.ts +11 -0
- package/dist/analyzers/reactAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/reactAnalyzer.js +188 -125
- package/dist/analyzers/reactAnalyzer.js.map +1 -1
- package/dist/analyzers/ruleRegistry.d.ts +110 -1
- package/dist/analyzers/ruleRegistry.d.ts.map +1 -1
- package/dist/analyzers/ruleRegistry.js +1714 -124
- package/dist/analyzers/ruleRegistry.js.map +1 -1
- package/dist/analyzers/ruleTiming.d.ts +54 -0
- package/dist/analyzers/ruleTiming.d.ts.map +1 -0
- package/dist/analyzers/ruleTiming.js +71 -0
- package/dist/analyzers/ruleTiming.js.map +1 -0
- package/dist/analyzers/universal/UniversalConventionsAnalyzer.d.ts +13 -0
- package/dist/analyzers/universal/UniversalConventionsAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalConventionsAnalyzer.js +362 -283
- package/dist/analyzers/universal/UniversalConventionsAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalDRYAnalyzer.d.ts +26 -68
- package/dist/analyzers/universal/UniversalDRYAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalDRYAnalyzer.js +430 -391
- package/dist/analyzers/universal/UniversalDRYAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts +17 -202
- package/dist/analyzers/universal/UniversalDataAccessAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js +1073 -1121
- package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalDocumentationAnalyzer.d.ts +3 -49
- package/dist/analyzers/universal/UniversalDocumentationAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js +414 -340
- package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalSOLIDAnalyzer.d.ts +48 -5
- package/dist/analyzers/universal/UniversalSOLIDAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js +262 -134
- package/dist/analyzers/universal/UniversalSOLIDAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts +23 -214
- package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalSchemaAnalyzer.js +139 -1521
- package/dist/analyzers/universal/UniversalSchemaAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalStylesAnalyzer.d.ts +78 -79
- package/dist/analyzers/universal/UniversalStylesAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalStylesAnalyzer.js +613 -480
- package/dist/analyzers/universal/UniversalStylesAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/schema/codeAnalysis.d.ts +307 -0
- package/dist/analyzers/universal/schema/codeAnalysis.d.ts.map +1 -0
- package/dist/analyzers/universal/schema/codeAnalysis.js +965 -0
- package/dist/analyzers/universal/schema/codeAnalysis.js.map +1 -0
- package/dist/analyzers/universal/schema/config.d.ts +31 -0
- package/dist/analyzers/universal/schema/config.d.ts.map +1 -0
- package/dist/analyzers/universal/schema/config.js +57 -0
- package/dist/analyzers/universal/schema/config.js.map +1 -0
- package/dist/analyzers/universal/schema/discovery.d.ts +167 -0
- package/dist/analyzers/universal/schema/discovery.d.ts.map +1 -0
- package/dist/analyzers/universal/schema/discovery.js +616 -0
- package/dist/analyzers/universal/schema/discovery.js.map +1 -0
- package/dist/analyzers/universal/schema/jsonSchema.d.ts +27 -0
- package/dist/analyzers/universal/schema/jsonSchema.d.ts.map +1 -0
- package/dist/analyzers/universal/schema/jsonSchema.js +368 -0
- package/dist/analyzers/universal/schema/jsonSchema.js.map +1 -0
- package/dist/analyzers/universal/schema/migrations.d.ts +90 -0
- package/dist/analyzers/universal/schema/migrations.d.ts.map +1 -0
- package/dist/analyzers/universal/schema/migrations.js +238 -0
- package/dist/analyzers/universal/schema/migrations.js.map +1 -0
- package/dist/analyzers/universal/schema/types.d.ts +131 -0
- package/dist/analyzers/universal/schema/types.d.ts.map +1 -0
- package/dist/analyzers/universal/schema/types.js +10 -0
- package/dist/analyzers/universal/schema/types.js.map +1 -0
- package/dist/analyzers/universal/schema/violations.d.ts +44 -0
- package/dist/analyzers/universal/schema/violations.d.ts.map +1 -0
- package/dist/analyzers/universal/schema/violations.js +54 -0
- package/dist/analyzers/universal/schema/violations.js.map +1 -0
- package/dist/auditRunner.d.ts.map +1 -1
- package/dist/auditRunner.js +89 -13
- package/dist/auditRunner.js.map +1 -1
- package/dist/cli.js +315 -40
- package/dist/cli.js.map +1 -1
- package/dist/config/configLoader.d.ts.map +1 -1
- package/dist/config/configLoader.js +9 -7
- package/dist/config/configLoader.js.map +1 -1
- package/dist/config/defaults.d.ts +12 -3
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +16 -6
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/effectiveConfig.d.ts +75 -0
- package/dist/config/effectiveConfig.d.ts.map +1 -0
- package/dist/config/effectiveConfig.js +213 -0
- package/dist/config/effectiveConfig.js.map +1 -0
- package/dist/config/pathProfiles.d.ts +7 -4
- package/dist/config/pathProfiles.d.ts.map +1 -1
- package/dist/config/pathProfiles.js +8 -10
- package/dist/config/pathProfiles.js.map +1 -1
- package/dist/config/thresholdRationales.d.ts +45 -0
- package/dist/config/thresholdRationales.d.ts.map +1 -0
- package/dist/config/thresholdRationales.js +67 -0
- package/dist/config/thresholdRationales.js.map +1 -0
- package/dist/conventions/conventionMiner.d.ts.map +1 -1
- package/dist/conventions/conventionMiner.js +6 -2
- package/dist/conventions/conventionMiner.js.map +1 -1
- package/dist/enforcement/diffGate.d.ts +55 -0
- package/dist/enforcement/diffGate.d.ts.map +1 -0
- package/dist/enforcement/diffGate.js +136 -0
- package/dist/enforcement/diffGate.js.map +1 -0
- package/dist/enforcement/gate.d.ts +36 -0
- package/dist/enforcement/gate.d.ts.map +1 -0
- package/dist/enforcement/gate.js +72 -0
- package/dist/enforcement/gate.js.map +1 -0
- package/dist/enforcement/suppressions.d.ts +41 -0
- package/dist/enforcement/suppressions.d.ts.map +1 -0
- package/dist/enforcement/suppressions.js +170 -0
- package/dist/enforcement/suppressions.js.map +1 -0
- package/dist/fingerprint.d.ts.map +1 -1
- package/dist/fingerprint.js +4 -1
- package/dist/fingerprint.js.map +1 -1
- package/dist/invariants/ruleEngine.d.ts +3 -4
- package/dist/invariants/ruleEngine.d.ts.map +1 -1
- package/dist/invariants/ruleEngine.js +2 -2
- package/dist/invariants/ruleEngine.js.map +1 -1
- package/dist/languages/LanguageOrchestrator.d.ts +14 -0
- package/dist/languages/LanguageOrchestrator.d.ts.map +1 -1
- package/dist/languages/LanguageOrchestrator.js +93 -55
- package/dist/languages/LanguageOrchestrator.js.map +1 -1
- package/dist/languages/LanguageRegistry.d.ts +8 -0
- package/dist/languages/LanguageRegistry.d.ts.map +1 -1
- package/dist/languages/LanguageRegistry.js +8 -0
- package/dist/languages/LanguageRegistry.js.map +1 -1
- package/dist/languages/RuntimeManager.d.ts +82 -60
- package/dist/languages/RuntimeManager.d.ts.map +1 -1
- package/dist/languages/RuntimeManager.js +404 -349
- package/dist/languages/RuntimeManager.js.map +1 -1
- package/dist/languages/UniversalAnalyzer.d.ts +51 -6
- package/dist/languages/UniversalAnalyzer.d.ts.map +1 -1
- package/dist/languages/UniversalAnalyzer.js +127 -88
- package/dist/languages/UniversalAnalyzer.js.map +1 -1
- package/dist/languages/adapterBridge.d.ts +36 -0
- package/dist/languages/adapterBridge.d.ts.map +1 -1
- package/dist/languages/adapterBridge.js +89 -35
- package/dist/languages/adapterBridge.js.map +1 -1
- package/dist/languages/go/GoAdapter.d.ts +66 -23
- package/dist/languages/go/GoAdapter.d.ts.map +1 -1
- package/dist/languages/go/GoAdapter.js +553 -474
- package/dist/languages/go/GoAdapter.js.map +1 -1
- package/dist/languages/tree-sitter/TreeSitterCssAdapter.d.ts +33 -4
- package/dist/languages/tree-sitter/TreeSitterCssAdapter.d.ts.map +1 -1
- package/dist/languages/tree-sitter/TreeSitterCssAdapter.js +101 -66
- package/dist/languages/tree-sitter/TreeSitterCssAdapter.js.map +1 -1
- package/dist/languages/tree-sitter/converter.d.ts +18 -0
- package/dist/languages/tree-sitter/converter.d.ts.map +1 -1
- package/dist/languages/tree-sitter/converter.js +18 -0
- package/dist/languages/tree-sitter/converter.js.map +1 -1
- package/dist/languages/tree-sitter/parser.d.ts +39 -2
- package/dist/languages/tree-sitter/parser.d.ts.map +1 -1
- package/dist/languages/tree-sitter/parser.js +93 -12
- package/dist/languages/tree-sitter/parser.js.map +1 -1
- package/dist/languages/types.d.ts +67 -2
- package/dist/languages/types.d.ts.map +1 -1
- package/dist/languages/typescript/TreeSitterTypeScriptAdapter.d.ts +253 -72
- package/dist/languages/typescript/TreeSitterTypeScriptAdapter.d.ts.map +1 -1
- package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js +1419 -923
- package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js.map +1 -1
- package/dist/mcp-tools-shared.d.ts.map +1 -1
- package/dist/mcp-tools-shared.js.map +1 -1
- package/dist/pipeline.d.ts +13 -5
- package/dist/pipeline.d.ts.map +1 -1
- package/dist/pipeline.js +381 -200
- package/dist/pipeline.js.map +1 -1
- package/dist/pipelineAdapters.d.ts +3 -8
- package/dist/pipelineAdapters.d.ts.map +1 -1
- package/dist/pipelineAdapters.js +149 -94
- package/dist/pipelineAdapters.js.map +1 -1
- package/dist/presets/presets.d.ts +54 -0
- package/dist/presets/presets.d.ts.map +1 -0
- package/dist/presets/presets.js +181 -0
- package/dist/presets/presets.js.map +1 -0
- package/dist/reporting/sarifReportGenerator.d.ts.map +1 -1
- package/dist/reporting/sarifReportGenerator.js +6 -3
- package/dist/reporting/sarifReportGenerator.js.map +1 -1
- package/dist/ruleAliases.d.ts +67 -0
- package/dist/ruleAliases.d.ts.map +1 -0
- package/dist/ruleAliases.js +102 -0
- package/dist/ruleAliases.js.map +1 -0
- package/dist/styles/cssAstExtractor.d.ts.map +1 -1
- package/dist/styles/cssAstExtractor.js +78 -18
- package/dist/styles/cssAstExtractor.js.map +1 -1
- package/dist/styles/styleIndexer.d.ts +6 -0
- package/dist/styles/styleIndexer.d.ts.map +1 -1
- package/dist/styles/styleIndexer.js +26 -4
- package/dist/styles/styleIndexer.js.map +1 -1
- package/dist/styles/tailwindConfigLoader.d.ts +8 -6
- package/dist/styles/tailwindConfigLoader.d.ts.map +1 -1
- package/dist/styles/tailwindConfigLoader.js +61 -15
- package/dist/styles/tailwindConfigLoader.js.map +1 -1
- package/dist/styles/tailwindProbe.d.ts +31 -0
- package/dist/styles/tailwindProbe.d.ts.map +1 -1
- package/dist/styles/tailwindProbe.js +145 -4
- package/dist/styles/tailwindProbe.js.map +1 -1
- package/dist/styles/tailwindUtilityExpander.d.ts.map +1 -1
- package/dist/styles/tailwindUtilityExpander.js +13 -1
- package/dist/styles/tailwindUtilityExpander.js.map +1 -1
- package/dist/types.d.ts +181 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -1
- package/dist/utils/fileDiscovery.d.ts +9 -0
- package/dist/utils/fileDiscovery.d.ts.map +1 -1
- package/dist/utils/fileDiscovery.js +21 -0
- package/dist/utils/fileDiscovery.js.map +1 -1
- package/package.json +5 -3
- package/plugin/hooks/hooks.json +1 -1
- package/plugin/scripts/hook-audit.sh +25 -7
- package/plugin/skills/code-auditor/SKILL.md +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CrossDomainAnalyzer.js","sourceRoot":"","sources":["../../../src/analyzers/crossDomain/CrossDomainAnalyzer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"CrossDomainAnalyzer.js","sourceRoot":"","sources":["../../../src/analyzers/crossDomain/CrossDomainAnalyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,8 +38,13 @@ export interface DocumentationMetrics {
|
|
|
38
38
|
poorlyDocumentedFiles: string[];
|
|
39
39
|
}
|
|
40
40
|
/**
|
|
41
|
-
*
|
|
42
|
-
*
|
|
41
|
+
* Run the documentation analyzer across the given files.
|
|
42
|
+
*
|
|
43
|
+
* @param files Source file paths to analyze.
|
|
44
|
+
* @param config Documentation analyzer configuration overrides.
|
|
45
|
+
* @param options Audit options (progress reporting, project root, etc.).
|
|
46
|
+
* @param progressCallback Optional progress callback invoked per file.
|
|
47
|
+
* @returns The documentation analyzer result with violations and metrics.
|
|
43
48
|
*/
|
|
44
49
|
export declare function analyzeDocumentation(files: string[], config?: Partial<DocumentationAnalyzerConfig>, options?: AuditOptions, progressCallback?: ProgressCallback): Promise<AnalyzerResult>;
|
|
45
50
|
//# sourceMappingURL=documentationAnalyzer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"documentationAnalyzer.d.ts","sourceRoot":"","sources":["../../src/analyzers/documentationAnalyzer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAEL,cAAc,EACd,YAAY,EACZ,gBAAgB,EACjB,MAAM,aAAa,CAAC;AAyDrB;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,mBAAmB,EAAE,OAAO,CAAC;IAC7B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,eAAe,EAAE,OAAO,CAAC;IACzB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,eAAO,MAAM,4BAA4B,EAAE,2BAW1C,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,qBAAqB,EAAE,MAAM,EAAE,CAAC;CACjC;
|
|
1
|
+
{"version":3,"file":"documentationAnalyzer.d.ts","sourceRoot":"","sources":["../../src/analyzers/documentationAnalyzer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAEL,cAAc,EACd,YAAY,EACZ,gBAAgB,EACjB,MAAM,aAAa,CAAC;AAyDrB;;GAEG;AACH,MAAM,WAAW,2BAA2B;IAC1C,mBAAmB,EAAE,OAAO,CAAC;IAC7B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,eAAe,EAAE,OAAO,CAAC;IACzB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,EAAE,OAAO,CAAC;IAC3B,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,eAAO,MAAM,4BAA4B,EAAE,2BAW1C,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,qBAAqB,EAAE,MAAM,EAAE,CAAC;CACjC;AA4bD;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,MAAM,EAAE,EACf,MAAM,GAAE,OAAO,CAAC,2BAA2B,CAAM,EACjD,OAAO,GAAE,YAAiB,EAC1B,gBAAgB,CAAC,EAAE,gBAAgB,GAClC,OAAO,CAAC,cAAc,CAAC,CAkCzB"}
|
|
@@ -107,36 +107,170 @@ function hasReturnDocumentation(node, adapter) {
|
|
|
107
107
|
return false;
|
|
108
108
|
return /@returns?\b/i.test(jsDocText);
|
|
109
109
|
}
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
110
|
+
/** True for nodes the analyzer treats as "function-like" documentation targets. */
|
|
111
|
+
function isFunctionLikeNode(node) {
|
|
112
|
+
return node.type === 'function_declaration' ||
|
|
113
|
+
node.type === 'function_expression' ||
|
|
114
|
+
node.type === 'arrow_function' ||
|
|
115
|
+
node.type === 'method_definition';
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Check function-documentation quality for a single function-like node,
|
|
119
|
+
* mutating counters and appending violations.
|
|
120
|
+
*/
|
|
121
|
+
function checkFunctionDocumentation(node, ctx) {
|
|
122
|
+
const { adapter, config, counters } = ctx;
|
|
123
|
+
const nodeExported = adapterIsExported(node);
|
|
124
|
+
if (config.checkExportedOnly && !nodeExported)
|
|
125
|
+
return;
|
|
126
|
+
const jsDoc = adapter?.getDocumentation(node) ?? null;
|
|
127
|
+
const hasGoodDoc = jsDoc ? jsDoc.length >= config.minDescriptionLength : false;
|
|
128
|
+
if (hasGoodDoc) {
|
|
129
|
+
counters.documentedFunctions++;
|
|
130
|
+
}
|
|
131
|
+
else if (config.requireFunctionDocs) {
|
|
132
|
+
pushFunctionDocViolation(node, ctx);
|
|
133
|
+
}
|
|
134
|
+
// Parameter and return documentation only apply to declarations/expressions.
|
|
135
|
+
if (node.type !== 'function_declaration' && node.type !== 'function_expression') {
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
checkParamDocumentation(node, ctx, hasGoodDoc);
|
|
139
|
+
checkReturnDocumentation(node, ctx, hasGoodDoc);
|
|
140
|
+
}
|
|
141
|
+
/** Push a missing-function-documentation violation. */
|
|
142
|
+
function pushFunctionDocViolation(node, ctx) {
|
|
143
|
+
const { fileName, violations } = ctx;
|
|
144
|
+
const functionName = getNodeName(node) || 'anonymous function';
|
|
145
|
+
const position = getNodePosition(node);
|
|
146
|
+
violations.push({
|
|
147
|
+
file: fileName,
|
|
148
|
+
line: position.line,
|
|
149
|
+
column: position.column,
|
|
150
|
+
severity: 'suggestion',
|
|
151
|
+
rule: 'function-documentation',
|
|
152
|
+
message: `Function '${functionName}' lacks documentation`,
|
|
153
|
+
details: 'Functions should have JSDoc comments describing their purpose',
|
|
154
|
+
suggestion: 'Add JSDoc comment with function description and parameter/return documentation',
|
|
155
|
+
functionName
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
/** Check @param coverage for a function-like node. */
|
|
159
|
+
function checkParamDocumentation(node, ctx, hasGoodDoc) {
|
|
160
|
+
const { adapter, config, counters } = ctx;
|
|
161
|
+
const paramAnalysis = analyzeParamDocumentation(node, adapter);
|
|
162
|
+
if (paramAnalysis.totalParams === 0)
|
|
163
|
+
return;
|
|
164
|
+
counters.functionsWithParams++;
|
|
165
|
+
if (paramAnalysis.documentedParams === paramAnalysis.totalParams) {
|
|
166
|
+
counters.paramsDocumented++;
|
|
167
|
+
}
|
|
168
|
+
else if (config.requireParamDocs && hasGoodDoc) {
|
|
169
|
+
const { fileName, violations } = ctx;
|
|
170
|
+
const functionName = getNodeName(node) || 'function';
|
|
171
|
+
const position = getNodePosition(node);
|
|
172
|
+
violations.push({
|
|
173
|
+
file: fileName,
|
|
174
|
+
line: position.line,
|
|
175
|
+
column: position.column,
|
|
176
|
+
severity: 'suggestion',
|
|
177
|
+
rule: 'parameter-documentation',
|
|
178
|
+
message: `Function '${functionName}' has undocumented parameters`,
|
|
179
|
+
details: `${paramAnalysis.documentedParams}/${paramAnalysis.totalParams} parameters documented`,
|
|
180
|
+
suggestion: 'Add @param tags for all function parameters',
|
|
181
|
+
functionName
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
/** Check @returns coverage for a function-like node. */
|
|
186
|
+
function checkReturnDocumentation(node, ctx, hasGoodDoc) {
|
|
187
|
+
const { adapter, config, counters } = ctx;
|
|
188
|
+
const hasReturnType = !!findChild(node, 'type_annotation');
|
|
189
|
+
const body = findChild(node, 'statement_block');
|
|
190
|
+
const hasReturnStatements = body
|
|
191
|
+
? findNodesOfType(body, (n) => n.type === 'return_statement').length > 0
|
|
192
|
+
: false;
|
|
193
|
+
const hasReturn = hasReturnType || hasReturnStatements;
|
|
194
|
+
if (!hasReturn)
|
|
195
|
+
return;
|
|
196
|
+
counters.functionsWithReturns++;
|
|
197
|
+
if (hasReturnDocumentation(node, adapter)) {
|
|
198
|
+
counters.returnsDocumented++;
|
|
199
|
+
}
|
|
200
|
+
else if (config.requireReturnDocs && hasGoodDoc) {
|
|
201
|
+
const { fileName, violations } = ctx;
|
|
202
|
+
const functionName = getNodeName(node) || 'function';
|
|
203
|
+
const position = getNodePosition(node);
|
|
204
|
+
violations.push({
|
|
205
|
+
file: fileName,
|
|
206
|
+
line: position.line,
|
|
207
|
+
column: position.column,
|
|
208
|
+
severity: 'suggestion',
|
|
209
|
+
rule: 'return-documentation',
|
|
210
|
+
message: `Function '${functionName}' missing return documentation`,
|
|
211
|
+
details: 'Functions with return values should document what they return',
|
|
212
|
+
suggestion: 'Add @returns tag describing the return value',
|
|
213
|
+
functionName
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Check documentation quality for a single React component node.
|
|
219
|
+
*/
|
|
220
|
+
function checkComponentDocumentation(node, ctx) {
|
|
221
|
+
const { adapter, config, fileName, violations, counters } = ctx;
|
|
222
|
+
const componentExported = adapterIsExported(node);
|
|
223
|
+
const shouldCheck = !config.checkExportedOnly || componentExported;
|
|
224
|
+
if (!shouldCheck)
|
|
225
|
+
return;
|
|
226
|
+
const jsDoc = adapter?.getDocumentation(node) ?? null;
|
|
227
|
+
const hasGoodDoc = jsDoc ? jsDoc.length >= config.minDescriptionLength : false;
|
|
228
|
+
if (hasGoodDoc) {
|
|
229
|
+
counters.documentedComponents++;
|
|
230
|
+
}
|
|
231
|
+
else if (config.requireComponentDocs) {
|
|
232
|
+
const componentName = getComponentName(node) || 'Component';
|
|
233
|
+
const position = getNodePosition(node);
|
|
234
|
+
violations.push({
|
|
235
|
+
file: fileName,
|
|
236
|
+
line: position.line,
|
|
237
|
+
column: position.column,
|
|
238
|
+
severity: 'suggestion',
|
|
239
|
+
rule: 'class-documentation',
|
|
240
|
+
message: `Component '${componentName}' lacks documentation`,
|
|
241
|
+
details: 'React components should have JSDoc comments describing their purpose and props',
|
|
242
|
+
suggestion: 'Add JSDoc comment with component description and @param tags for props',
|
|
243
|
+
componentName
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
}
|
|
113
247
|
/**
|
|
114
248
|
* Analyzes a single file for documentation quality.
|
|
115
249
|
*
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
250
|
+
* @param ast - The root ASTNode for the file
|
|
251
|
+
* @param filePath - Path to the source file
|
|
252
|
+
* @param sourceCode - Full source text of the file
|
|
253
|
+
* @param config - Documentation analyzer configuration
|
|
120
254
|
*/
|
|
121
|
-
function
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
const hasFileDocs = !!
|
|
255
|
+
function createDocCounters() {
|
|
256
|
+
return {
|
|
257
|
+
documentedFunctions: 0,
|
|
258
|
+
documentedComponents: 0,
|
|
259
|
+
functionsWithParams: 0,
|
|
260
|
+
paramsDocumented: 0,
|
|
261
|
+
functionsWithReturns: 0,
|
|
262
|
+
returnsDocumented: 0,
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Check file-level purpose documentation and push a violation if missing.
|
|
267
|
+
* Returns whether the file has purpose docs (for metric aggregation).
|
|
268
|
+
*/
|
|
269
|
+
function checkFileDocumentation(ast, filePath, config, violations) {
|
|
270
|
+
const hasFileDocs = !!getFilePurpose(ast);
|
|
137
271
|
if (config.requireFileDocs && !hasFileDocs) {
|
|
138
272
|
violations.push({
|
|
139
|
-
file:
|
|
273
|
+
file: filePath,
|
|
140
274
|
line: 1,
|
|
141
275
|
column: 1,
|
|
142
276
|
severity: 'suggestion',
|
|
@@ -146,132 +280,32 @@ function analyzeFileDocumentation(ast, filePath, sourceCode, config) {
|
|
|
146
280
|
suggestion: "Add file-level documentation explaining the module's purpose"
|
|
147
281
|
});
|
|
148
282
|
}
|
|
149
|
-
|
|
283
|
+
return hasFileDocs;
|
|
284
|
+
}
|
|
285
|
+
function analyzeFileDocumentation(ast, filePath, sourceCode, config) {
|
|
286
|
+
const violations = [];
|
|
287
|
+
const adapter = LanguageRegistry.getInstance().getAdapterForFile(filePath);
|
|
288
|
+
let totalFunctions = 0;
|
|
289
|
+
let totalComponents = 0;
|
|
290
|
+
const counters = createDocCounters();
|
|
291
|
+
const hasFileDocs = checkFileDocumentation(ast, filePath, config, violations);
|
|
292
|
+
const ctx = { adapter, config, fileName: filePath, violations, counters };
|
|
150
293
|
walkAST(ast, (node) => {
|
|
151
|
-
|
|
152
|
-
if (node.type === 'function_declaration' ||
|
|
153
|
-
node.type === 'function_expression' ||
|
|
154
|
-
node.type === 'arrow_function' ||
|
|
155
|
-
node.type === 'method_definition') {
|
|
294
|
+
if (isFunctionLikeNode(node)) {
|
|
156
295
|
totalFunctions++;
|
|
157
|
-
|
|
158
|
-
const shouldCheck = !config.checkExportedOnly || nodeExported;
|
|
159
|
-
if (shouldCheck) {
|
|
160
|
-
const jsDoc = adapter?.getDocumentation(node) ?? null;
|
|
161
|
-
const hasGoodDoc = jsDoc ? jsDoc.length >= config.minDescriptionLength : false;
|
|
162
|
-
if (hasGoodDoc) {
|
|
163
|
-
documentedFunctions++;
|
|
164
|
-
}
|
|
165
|
-
else if (config.requireFunctionDocs) {
|
|
166
|
-
const functionName = getNodeName(node) || 'anonymous function';
|
|
167
|
-
const position = getNodePosition(node);
|
|
168
|
-
violations.push({
|
|
169
|
-
file: fileName,
|
|
170
|
-
line: position.line,
|
|
171
|
-
column: position.column,
|
|
172
|
-
severity: 'suggestion',
|
|
173
|
-
rule: 'function-documentation',
|
|
174
|
-
message: `Function '${functionName}' lacks documentation`,
|
|
175
|
-
details: 'Functions should have JSDoc comments describing their purpose',
|
|
176
|
-
suggestion: 'Add JSDoc comment with function description and parameter/return documentation',
|
|
177
|
-
functionName
|
|
178
|
-
});
|
|
179
|
-
}
|
|
180
|
-
// Check parameter documentation
|
|
181
|
-
if (node.type === 'function_declaration' || node.type === 'function_expression') {
|
|
182
|
-
const paramAnalysis = analyzeParamDocumentation(node, adapter);
|
|
183
|
-
if (paramAnalysis.totalParams > 0) {
|
|
184
|
-
functionsWithParams++;
|
|
185
|
-
if (paramAnalysis.documentedParams === paramAnalysis.totalParams) {
|
|
186
|
-
paramsDocumented++;
|
|
187
|
-
}
|
|
188
|
-
else if (config.requireParamDocs && hasGoodDoc) {
|
|
189
|
-
const functionName = getNodeName(node) || 'function';
|
|
190
|
-
const position = getNodePosition(node);
|
|
191
|
-
violations.push({
|
|
192
|
-
file: fileName,
|
|
193
|
-
line: position.line,
|
|
194
|
-
column: position.column,
|
|
195
|
-
severity: 'suggestion',
|
|
196
|
-
rule: 'parameter-documentation',
|
|
197
|
-
message: `Function '${functionName}' has undocumented parameters`,
|
|
198
|
-
details: `${paramAnalysis.documentedParams}/${paramAnalysis.totalParams} parameters documented`,
|
|
199
|
-
suggestion: 'Add @param tags for all function parameters',
|
|
200
|
-
functionName
|
|
201
|
-
});
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
// Check return documentation
|
|
205
|
-
const hasReturnType = !!findChild(node, 'type_annotation');
|
|
206
|
-
const body = findChild(node, 'statement_block');
|
|
207
|
-
const hasReturnStatements = body
|
|
208
|
-
? findNodesOfType(body, (n) => n.type === 'return_statement').length > 0
|
|
209
|
-
: false;
|
|
210
|
-
const hasReturn = hasReturnType || hasReturnStatements;
|
|
211
|
-
if (hasReturn) {
|
|
212
|
-
functionsWithReturns++;
|
|
213
|
-
if (hasReturnDocumentation(node, adapter)) {
|
|
214
|
-
returnsDocumented++;
|
|
215
|
-
}
|
|
216
|
-
else if (config.requireReturnDocs && hasGoodDoc) {
|
|
217
|
-
const functionName = getNodeName(node) || 'function';
|
|
218
|
-
const position = getNodePosition(node);
|
|
219
|
-
violations.push({
|
|
220
|
-
file: fileName,
|
|
221
|
-
line: position.line,
|
|
222
|
-
column: position.column,
|
|
223
|
-
severity: 'suggestion',
|
|
224
|
-
rule: 'return-documentation',
|
|
225
|
-
message: `Function '${functionName}' missing return documentation`,
|
|
226
|
-
details: 'Functions with return values should document what they return',
|
|
227
|
-
suggestion: 'Add @returns tag describing the return value',
|
|
228
|
-
functionName
|
|
229
|
-
});
|
|
230
|
-
}
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
}
|
|
296
|
+
checkFunctionDocumentation(node, ctx);
|
|
234
297
|
}
|
|
235
|
-
// --- React components ---
|
|
236
298
|
if (isReactComponent(node)) {
|
|
237
299
|
totalComponents++;
|
|
238
|
-
|
|
239
|
-
const shouldCheck = !config.checkExportedOnly || componentExported;
|
|
240
|
-
if (shouldCheck) {
|
|
241
|
-
const jsDoc = adapter?.getDocumentation(node) ?? null;
|
|
242
|
-
const hasGoodDoc = jsDoc ? jsDoc.length >= config.minDescriptionLength : false;
|
|
243
|
-
if (hasGoodDoc) {
|
|
244
|
-
documentedComponents++;
|
|
245
|
-
}
|
|
246
|
-
else if (config.requireComponentDocs) {
|
|
247
|
-
const componentName = getComponentName(node) || 'Component';
|
|
248
|
-
const position = getNodePosition(node);
|
|
249
|
-
violations.push({
|
|
250
|
-
file: fileName,
|
|
251
|
-
line: position.line,
|
|
252
|
-
column: position.column,
|
|
253
|
-
severity: 'suggestion',
|
|
254
|
-
rule: 'class-documentation',
|
|
255
|
-
message: `Component '${componentName}' lacks documentation`,
|
|
256
|
-
details: 'React components should have JSDoc comments describing their purpose and props',
|
|
257
|
-
suggestion: 'Add JSDoc comment with component description and @param tags for props',
|
|
258
|
-
componentName
|
|
259
|
-
});
|
|
260
|
-
}
|
|
261
|
-
}
|
|
300
|
+
checkComponentDocumentation(node, ctx);
|
|
262
301
|
}
|
|
263
302
|
});
|
|
264
303
|
return {
|
|
265
304
|
violations,
|
|
266
305
|
metrics: {
|
|
267
306
|
totalFunctions,
|
|
268
|
-
documentedFunctions,
|
|
269
307
|
totalComponents,
|
|
270
|
-
|
|
271
|
-
functionsWithParams,
|
|
272
|
-
paramsDocumented,
|
|
273
|
-
functionsWithReturns,
|
|
274
|
-
returnsDocumented,
|
|
308
|
+
...counters,
|
|
275
309
|
totalFiles: 1,
|
|
276
310
|
filesWithPurpose: hasFileDocs ? 1 : 0
|
|
277
311
|
}
|
|
@@ -281,28 +315,53 @@ function analyzeFileDocumentation(ast, filePath, sourceCode, config) {
|
|
|
281
315
|
// Main analyzer function
|
|
282
316
|
// ---------------------------------------------------------------------------
|
|
283
317
|
/**
|
|
284
|
-
*
|
|
285
|
-
*
|
|
318
|
+
* Aggregate per-file documentation metrics into a single corpus-level result,
|
|
319
|
+
* computing coverage score and classifying well/poorly documented files.
|
|
286
320
|
*/
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
const
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
321
|
+
const NUMERIC_METRIC_KEYS = [
|
|
322
|
+
'totalFunctions', 'documentedFunctions',
|
|
323
|
+
'totalComponents', 'documentedComponents',
|
|
324
|
+
'functionsWithParams', 'paramsDocumented',
|
|
325
|
+
'functionsWithReturns', 'returnsDocumented',
|
|
326
|
+
'totalFiles', 'filesWithPurpose'
|
|
327
|
+
];
|
|
328
|
+
/**
|
|
329
|
+
* Accumulate one file's metrics into the aggregated result and classify the
|
|
330
|
+
* file as well/poorly documented based on its per-file coverage ratio.
|
|
331
|
+
*/
|
|
332
|
+
function accumulateFileMetrics(aggregated, fileMetrics, filePath) {
|
|
333
|
+
for (const key of NUMERIC_METRIC_KEYS) {
|
|
334
|
+
const val = fileMetrics[key];
|
|
335
|
+
if (typeof val === 'number') {
|
|
336
|
+
aggregated[key] += val;
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
const fileTotal = (fileMetrics.totalFunctions || 0) +
|
|
340
|
+
(fileMetrics.totalComponents || 0) + 1;
|
|
341
|
+
const fileDocumented = (fileMetrics.documentedFunctions || 0) +
|
|
342
|
+
(fileMetrics.documentedComponents || 0) +
|
|
343
|
+
(fileMetrics.filesWithPurpose || 0);
|
|
344
|
+
const fileCoverage = fileTotal > 0 ? (fileDocumented / fileTotal) : 0;
|
|
345
|
+
if (fileCoverage >= 0.8) {
|
|
346
|
+
aggregated.wellDocumentedFiles.push(filePath);
|
|
347
|
+
}
|
|
348
|
+
else if (fileCoverage < 0.3) {
|
|
349
|
+
aggregated.poorlyDocumentedFiles.push(filePath);
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
/** Compute the overall documentation coverage score (0-100). */
|
|
353
|
+
function computeCoverageScore(aggregated) {
|
|
354
|
+
const totalItems = aggregated.totalFunctions +
|
|
355
|
+
aggregated.totalComponents +
|
|
356
|
+
aggregated.totalFiles;
|
|
357
|
+
const documentedItems = aggregated.documentedFunctions +
|
|
358
|
+
aggregated.documentedComponents +
|
|
359
|
+
aggregated.filesWithPurpose;
|
|
360
|
+
return totalItems > 0
|
|
361
|
+
? Math.round((documentedItems / totalItems) * 100)
|
|
362
|
+
: 100;
|
|
363
|
+
}
|
|
364
|
+
function aggregateDocumentationMetrics(allMetrics, filteredFiles) {
|
|
306
365
|
const aggregatedMetrics = {
|
|
307
366
|
totalFunctions: 0,
|
|
308
367
|
documentedFunctions: 0,
|
|
@@ -318,49 +377,51 @@ export async function analyzeDocumentation(files, config = {}, options = {}, pro
|
|
|
318
377
|
wellDocumentedFiles: [],
|
|
319
378
|
poorlyDocumentedFiles: []
|
|
320
379
|
};
|
|
321
|
-
// Combine metrics from all files
|
|
322
380
|
allMetrics.forEach((fileMetrics, index) => {
|
|
323
381
|
if (fileMetrics) {
|
|
324
|
-
|
|
325
|
-
const numericKeys = [
|
|
326
|
-
'totalFunctions', 'documentedFunctions',
|
|
327
|
-
'totalComponents', 'documentedComponents',
|
|
328
|
-
'functionsWithParams', 'paramsDocumented',
|
|
329
|
-
'functionsWithReturns', 'returnsDocumented',
|
|
330
|
-
'totalFiles', 'filesWithPurpose'
|
|
331
|
-
];
|
|
332
|
-
for (const key of numericKeys) {
|
|
333
|
-
const val = fileMetrics[key];
|
|
334
|
-
if (typeof val === 'number') {
|
|
335
|
-
aggregatedMetrics[key] += val;
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
// Identify well/poorly documented files
|
|
339
|
-
const fileTotal = (fileMetrics.totalFunctions || 0) +
|
|
340
|
-
(fileMetrics.totalComponents || 0) + 1;
|
|
341
|
-
const fileDocumented = (fileMetrics.documentedFunctions || 0) +
|
|
342
|
-
(fileMetrics.documentedComponents || 0) +
|
|
343
|
-
(fileMetrics.filesWithPurpose || 0);
|
|
344
|
-
const fileCoverage = fileTotal > 0 ? (fileDocumented / fileTotal) : 0;
|
|
345
|
-
const filePath = filteredFiles[index];
|
|
346
|
-
if (fileCoverage >= 0.8) {
|
|
347
|
-
aggregatedMetrics.wellDocumentedFiles.push(filePath);
|
|
348
|
-
}
|
|
349
|
-
else if (fileCoverage < 0.3) {
|
|
350
|
-
aggregatedMetrics.poorlyDocumentedFiles.push(filePath);
|
|
351
|
-
}
|
|
382
|
+
accumulateFileMetrics(aggregatedMetrics, fileMetrics, filteredFiles[index]);
|
|
352
383
|
}
|
|
353
384
|
});
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
385
|
+
aggregatedMetrics.coverageScore = computeCoverageScore(aggregatedMetrics);
|
|
386
|
+
return aggregatedMetrics;
|
|
387
|
+
}
|
|
388
|
+
/**
|
|
389
|
+
* Main documentation analyzer function.
|
|
390
|
+
* Runs across all provided files and aggregates results.
|
|
391
|
+
* @param config
|
|
392
|
+
* @param files
|
|
393
|
+
* @param options
|
|
394
|
+
* @param progressCallback
|
|
395
|
+
* @returns
|
|
396
|
+
*/
|
|
397
|
+
/** Build the per-file analyzer callback that collects metrics into `allMetrics`. */
|
|
398
|
+
function makePerFileAnalyzer(allMetrics, finalConfig) {
|
|
399
|
+
return (filePath, ast, _config, sourceCode) => {
|
|
400
|
+
const analysis = analyzeFileDocumentation(ast.root, filePath, sourceCode ?? '', finalConfig);
|
|
401
|
+
allMetrics.push(analysis.metrics);
|
|
402
|
+
return analysis.violations;
|
|
403
|
+
};
|
|
404
|
+
}
|
|
405
|
+
/**
|
|
406
|
+
* Run the documentation analyzer across the given files.
|
|
407
|
+
*
|
|
408
|
+
* @param files Source file paths to analyze.
|
|
409
|
+
* @param config Documentation analyzer configuration overrides.
|
|
410
|
+
* @param options Audit options (progress reporting, project root, etc.).
|
|
411
|
+
* @param progressCallback Optional progress callback invoked per file.
|
|
412
|
+
* @returns The documentation analyzer result with violations and metrics.
|
|
413
|
+
*/
|
|
414
|
+
export async function analyzeDocumentation(files, config = {}, options = {}, progressCallback) {
|
|
415
|
+
const finalConfig = { ...DEFAULT_DOCUMENTATION_CONFIG, ...config };
|
|
416
|
+
const startTime = Date.now();
|
|
417
|
+
const filteredFiles = files.filter(file => !finalConfig.exemptPatterns.some(pattern => new RegExp(pattern, 'i').test(file)));
|
|
418
|
+
const progressReporter = progressCallback ? (current, total, file) => {
|
|
419
|
+
progressCallback({ current, total, analyzer: 'documentation', file });
|
|
420
|
+
} : undefined;
|
|
421
|
+
const allMetrics = [];
|
|
422
|
+
const perFileAnalyzer = makePerFileAnalyzer(allMetrics, finalConfig);
|
|
423
|
+
const result = await processFiles(filteredFiles, perFileAnalyzer, 'documentation', { config: finalConfig, progressReporter });
|
|
424
|
+
const aggregatedMetrics = aggregateDocumentationMetrics(allMetrics, filteredFiles);
|
|
364
425
|
return {
|
|
365
426
|
violations: result.violations,
|
|
366
427
|
status: makeVisitorStatus(getFilesProcessed(result.status)),
|