code-auditor-mcp 2.6.2 → 3.0.1
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/README.md +23 -196
- package/dist/analyzers/analyzerUtils.d.ts +13 -11
- package/dist/analyzers/analyzerUtils.d.ts.map +1 -1
- package/dist/analyzers/analyzerUtils.js +22 -56
- package/dist/analyzers/analyzerUtils.js.map +1 -1
- package/dist/analyzers/cross-language/APIContractAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/cross-language/CrossLanguageSOLIDAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/cross-language/CrossLanguageSOLIDAnalyzer.js.map +1 -1
- package/dist/analyzers/cross-language/DependencyGraphBuilder.d.ts.map +1 -1
- package/dist/analyzers/cross-language/DependencyGraphBuilder.js.map +1 -1
- package/dist/analyzers/cross-language/SchemaValidator.d.ts.map +1 -1
- package/dist/analyzers/cross-language/SchemaValidator.js.map +1 -1
- package/dist/analyzers/dataAccessAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/dataAccessAnalyzer.js +50 -24
- package/dist/analyzers/dataAccessAnalyzer.js.map +1 -1
- package/dist/analyzers/documentationAnalyzer.d.ts +4 -1
- package/dist/analyzers/documentationAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/documentationAnalyzer.js +210 -111
- package/dist/analyzers/documentationAnalyzer.js.map +1 -1
- package/dist/analyzers/dryAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/dryAnalyzer.js +190 -58
- package/dist/analyzers/dryAnalyzer.js.map +1 -1
- package/dist/analyzers/invariantsAnalyzer.d.ts +20 -0
- package/dist/analyzers/invariantsAnalyzer.d.ts.map +1 -0
- package/dist/analyzers/invariantsAnalyzer.js +148 -0
- package/dist/analyzers/invariantsAnalyzer.js.map +1 -0
- package/dist/analyzers/reactAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/reactAnalyzer.js +2 -2
- package/dist/analyzers/reactAnalyzer.js.map +1 -1
- package/dist/analyzers/schemaAnalyzer.d.ts +2 -0
- package/dist/analyzers/schemaAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/schemaAnalyzer.js +306 -147
- package/dist/analyzers/schemaAnalyzer.js.map +1 -1
- package/dist/analyzers/solidAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/solidAnalyzer.js +145 -119
- package/dist/analyzers/solidAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalDRYAnalyzer.d.ts +3 -1
- package/dist/analyzers/universal/UniversalDRYAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalDRYAnalyzer.js +41 -1
- 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 +8 -8
- package/dist/analyzers/universal/UniversalDataAccessAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalDocumentationAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js +6 -6
- package/dist/analyzers/universal/UniversalDocumentationAnalyzer.js.map +1 -1
- package/dist/analyzers/universal/UniversalSOLIDAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalSchemaAnalyzer.d.ts.map +1 -1
- package/dist/analyzers/universal/UniversalSchemaAnalyzer.js +1 -1
- package/dist/analyzers/universal/UniversalSchemaAnalyzer.js.map +1 -1
- package/dist/api/index.js +1 -0
- package/dist/api/index.js.map +1 -1
- package/dist/auditRunner.d.ts.map +1 -1
- package/dist/auditRunner.js +367 -24
- package/dist/auditRunner.js.map +1 -1
- package/dist/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +740 -18
- package/dist/cli.js.map +1 -1
- package/dist/codeIndexDB-enhanced.d.ts +35 -13
- package/dist/codeIndexDB-enhanced.d.ts.map +1 -1
- package/dist/codeIndexDB-enhanced.js +311 -214
- package/dist/codeIndexDB-enhanced.js.map +1 -1
- package/dist/{codeIndexDb.d.ts → codeIndexDB.d.ts} +51 -224
- package/dist/codeIndexDB.d.ts.map +1 -0
- package/dist/codeIndexDB.js +2042 -0
- package/dist/codeIndexDB.js.map +1 -0
- package/dist/codeIndexService.d.ts.map +1 -1
- package/dist/codeIndexService.js.map +1 -1
- package/dist/componentScanner.d.ts +14 -8
- package/dist/componentScanner.d.ts.map +1 -1
- package/dist/componentScanner.js +136 -113
- package/dist/componentScanner.js.map +1 -1
- package/dist/config/configLoader.d.ts.map +1 -1
- package/dist/config/configLoader.js +10 -7
- package/dist/config/configLoader.js.map +1 -1
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/constants.js.map +1 -1
- package/dist/fingerprint.d.ts +15 -0
- package/dist/fingerprint.d.ts.map +1 -0
- package/dist/fingerprint.js +32 -0
- package/dist/fingerprint.js.map +1 -0
- package/dist/functionScanner.d.ts +5 -0
- package/dist/functionScanner.d.ts.map +1 -1
- package/dist/functionScanner.js +417 -341
- package/dist/functionScanner.js.map +1 -1
- package/dist/generators/AWSQConfigGenerator.d.ts.map +1 -1
- package/dist/generators/AiderConfigGenerator.d.ts.map +1 -1
- package/dist/generators/BaseConfigGenerator.d.ts.map +1 -1
- package/dist/generators/BaseConfigGenerator.js.map +1 -1
- package/dist/generators/ClaudeConfigGenerator.d.ts.map +1 -1
- package/dist/generators/ClineConfigGenerator.d.ts.map +1 -1
- package/dist/generators/CodeiumConfigGenerator.d.ts.map +1 -1
- package/dist/generators/ConfigGeneratorFactory.d.ts.map +1 -1
- package/dist/generators/ConfigGeneratorFactory.js.map +1 -1
- package/dist/generators/ContinueConfigGenerator.d.ts.map +1 -1
- package/dist/generators/CopilotConfigGenerator.d.ts.map +1 -1
- package/dist/generators/CursorConfigGenerator.d.ts.map +1 -1
- package/dist/generators/JetBrainsConfigGenerator.d.ts.map +1 -1
- package/dist/generators/VSCodeConfigGenerator.d.ts.map +1 -1
- package/dist/grammars/tree-sitter-go.wasm +0 -0
- package/dist/grammars/tree-sitter-javascript.wasm +0 -0
- package/dist/grammars/tree-sitter-tsx.wasm +0 -0
- package/dist/grammars/tree-sitter-typescript.wasm +0 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/invariants/index.d.ts +9 -0
- package/dist/invariants/index.d.ts.map +1 -0
- package/dist/invariants/index.js +4 -0
- package/dist/invariants/index.js.map +1 -0
- package/dist/invariants/invariant-rules.schema.json +137 -0
- package/dist/invariants/ruleEngine.d.ts +32 -0
- package/dist/invariants/ruleEngine.d.ts.map +1 -0
- package/dist/invariants/ruleEngine.js +536 -0
- package/dist/invariants/ruleEngine.js.map +1 -0
- package/dist/invariants/ruleValidator.d.ts +17 -0
- package/dist/invariants/ruleValidator.d.ts.map +1 -0
- package/dist/invariants/ruleValidator.js +264 -0
- package/dist/invariants/ruleValidator.js.map +1 -0
- package/dist/invariants/types.d.ts +78 -0
- package/dist/invariants/types.d.ts.map +1 -0
- package/dist/invariants/types.js +5 -0
- package/dist/invariants/types.js.map +1 -0
- package/dist/languages/LanguageOrchestrator.d.ts.map +1 -1
- package/dist/languages/LanguageOrchestrator.js.map +1 -1
- package/dist/languages/LanguageRegistry.d.ts.map +1 -1
- package/dist/languages/RuntimeManager.d.ts.map +1 -1
- package/dist/languages/RuntimeManager.js +1 -1
- package/dist/languages/RuntimeManager.js.map +1 -1
- package/dist/languages/UniversalAnalyzer.d.ts.map +1 -1
- package/dist/languages/UniversalAnalyzer.js.map +1 -1
- package/dist/languages/adapterBridge.d.ts +102 -0
- package/dist/languages/adapterBridge.d.ts.map +1 -0
- package/dist/languages/adapterBridge.js +382 -0
- package/dist/languages/adapterBridge.js.map +1 -0
- package/dist/languages/go/GoAdapter.d.ts +37 -26
- package/dist/languages/go/GoAdapter.d.ts.map +1 -1
- package/dist/languages/go/GoAdapter.js +560 -281
- package/dist/languages/go/GoAdapter.js.map +1 -1
- package/dist/languages/index.d.ts +5 -2
- package/dist/languages/index.d.ts.map +1 -1
- package/dist/languages/index.js +11 -9
- package/dist/languages/index.js.map +1 -1
- package/dist/languages/tree-sitter/converter.d.ts +43 -0
- package/dist/languages/tree-sitter/converter.d.ts.map +1 -0
- package/dist/languages/tree-sitter/converter.js +150 -0
- package/dist/languages/tree-sitter/converter.js.map +1 -0
- package/dist/languages/tree-sitter/parser.d.ts +36 -0
- package/dist/languages/tree-sitter/parser.d.ts.map +1 -0
- package/dist/languages/tree-sitter/parser.js +114 -0
- package/dist/languages/tree-sitter/parser.js.map +1 -0
- package/dist/languages/types.d.ts +11 -0
- package/dist/languages/types.d.ts.map +1 -1
- package/dist/languages/typescript/TreeSitterTypeScriptAdapter.d.ts +92 -0
- package/dist/languages/typescript/TreeSitterTypeScriptAdapter.d.ts.map +1 -0
- package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js +951 -0
- package/dist/languages/typescript/TreeSitterTypeScriptAdapter.js.map +1 -0
- package/dist/mcp-tools/projectTasks.d.ts +58 -22
- package/dist/mcp-tools/projectTasks.d.ts.map +1 -1
- package/dist/mcp-tools/projectTasks.js +172 -10
- package/dist/mcp-tools/projectTasks.js.map +1 -1
- package/dist/mcp-tools/whitelistTools.d.ts +21 -21
- package/dist/mcp-tools/whitelistTools.d.ts.map +1 -1
- package/dist/mcp-tools/workflowGuide.d.ts.map +1 -1
- package/dist/mcp-tools/workflowGuide.js +130 -126
- package/dist/mcp-tools/workflowGuide.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/mcp-ui-simple.js +1 -1
- package/dist/mcp-ui-simple.js.map +1 -1
- package/dist/mcp.d.ts +1 -1
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +1376 -1181
- package/dist/mcp.js.map +1 -1
- package/dist/mcpAuditJobs.d.ts +4 -0
- package/dist/mcpAuditJobs.d.ts.map +1 -1
- package/dist/mcpAuditJobs.js +49 -2
- package/dist/mcpAuditJobs.js.map +1 -1
- package/dist/mcpToolErrors.d.ts.map +1 -1
- package/dist/mcpToolErrors.js.map +1 -1
- package/dist/native/ast-grep-napi.darwin-arm64.node +0 -0
- package/dist/native/ast-grep-napi.darwin-x64.node +0 -0
- package/dist/native/ast-grep-napi.linux-arm64-gnu.node +0 -0
- package/dist/native/ast-grep-napi.linux-arm64-musl.node +0 -0
- package/dist/native/ast-grep-napi.linux-x64-gnu.node +0 -0
- package/dist/native/ast-grep-napi.linux-x64-musl.node +0 -0
- package/dist/native/ast-grep-napi.win32-x64-msvc.node +0 -0
- package/dist/native-bootstrap.d.ts +15 -0
- package/dist/native-bootstrap.d.ts.map +1 -0
- package/dist/native-bootstrap.js +75 -0
- package/dist/native-bootstrap.js.map +1 -0
- package/dist/reporting/csvReportGenerator.d.ts.map +1 -1
- package/dist/reporting/htmlReportGenerator.d.ts.map +1 -1
- package/dist/reporting/jsonReportGenerator.d.ts.map +1 -1
- package/dist/reporting/reportGenerator.d.ts.map +1 -1
- package/dist/reporting/reportGenerator.js +4 -0
- package/dist/reporting/reportGenerator.js.map +1 -1
- package/dist/reporting/sarifReportGenerator.d.ts +39 -0
- package/dist/reporting/sarifReportGenerator.d.ts.map +1 -0
- package/dist/reporting/sarifReportGenerator.js +229 -0
- package/dist/reporting/sarifReportGenerator.js.map +1 -0
- package/dist/search/QueryParser.d.ts +41 -0
- package/dist/search/QueryParser.d.ts.map +1 -1
- package/dist/search/QueryParser.js +200 -19
- package/dist/search/QueryParser.js.map +1 -1
- package/dist/services/CodeMapGenerator.d.ts.map +1 -1
- package/dist/services/CodeMapGenerator.js +4 -4
- package/dist/services/CodeMapGenerator.js.map +1 -1
- package/dist/services/ProjectTaskRepository.d.ts +15 -2
- package/dist/services/ProjectTaskRepository.d.ts.map +1 -1
- package/dist/services/ProjectTaskRepository.js +16 -1
- package/dist/services/ProjectTaskRepository.js.map +1 -1
- package/dist/services/SchemaParser.d.ts.map +1 -1
- package/dist/services/SchemaParser.js +5 -8
- package/dist/services/SchemaParser.js.map +1 -1
- package/dist/services/auditJobService.d.ts +1 -1
- package/dist/services/projectTaskHelpers.js.map +1 -1
- package/dist/services/whitelistService.d.ts.map +1 -1
- package/dist/services/whitelistService.js +1 -1
- package/dist/services/whitelistService.js.map +1 -1
- package/dist/tool-registry.d.ts +79 -0
- package/dist/tool-registry.d.ts.map +1 -0
- package/dist/tool-registry.js +139 -0
- package/dist/tool-registry.js.map +1 -0
- package/dist/types/projectTask.d.ts +4 -0
- package/dist/types/projectTask.d.ts.map +1 -1
- package/dist/types.d.ts +26 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/ui/InteractivePrompts.d.ts.map +1 -1
- package/dist/ui/InteractivePrompts.js.map +1 -1
- package/dist/utils/astParser.d.ts +31 -38
- package/dist/utils/astParser.d.ts.map +1 -1
- package/dist/utils/astParser.js +138 -196
- package/dist/utils/astParser.js.map +1 -1
- package/dist/utils/astUtils.d.ts +87 -58
- package/dist/utils/astUtils.d.ts.map +1 -1
- package/dist/utils/astUtils.js +852 -581
- package/dist/utils/astUtils.js.map +1 -1
- package/dist/utils/componentPatterns.js.map +1 -1
- package/dist/utils/componentResponsibility.d.ts +13 -9
- package/dist/utils/componentResponsibility.d.ts.map +1 -1
- package/dist/utils/componentResponsibility.js +236 -206
- package/dist/utils/componentResponsibility.js.map +1 -1
- package/dist/utils/dependencyExtractor.d.ts +11 -6
- package/dist/utils/dependencyExtractor.d.ts.map +1 -1
- package/dist/utils/dependencyExtractor.js +200 -119
- package/dist/utils/dependencyExtractor.js.map +1 -1
- package/dist/utils/fileDiscovery.d.ts +1 -1
- package/dist/utils/fileDiscovery.d.ts.map +1 -1
- package/dist/utils/fileDiscovery.js +15 -6
- package/dist/utils/fileDiscovery.js.map +1 -1
- package/dist/utils/jsDocParser.d.ts +27 -30
- package/dist/utils/jsDocParser.d.ts.map +1 -1
- package/dist/utils/jsDocParser.js +271 -207
- package/dist/utils/jsDocParser.js.map +1 -1
- package/dist/utils/reactDetection.d.ts +27 -12
- package/dist/utils/reactDetection.d.ts.map +1 -1
- package/dist/utils/reactDetection.js +331 -219
- package/dist/utils/reactDetection.js.map +1 -1
- package/dist/workers/auditWorker.js +17 -3
- package/dist/workers/auditWorker.js.map +1 -1
- package/package.json +54 -51
- package/dist/adapters/GoAdapter.d.ts +0 -53
- package/dist/adapters/GoAdapter.d.ts.map +0 -1
- package/dist/adapters/GoAdapter.js +0 -611
- package/dist/adapters/GoAdapter.js.map +0 -1
- package/dist/adapters/GoConfig.d.ts +0 -35
- package/dist/adapters/GoConfig.d.ts.map +0 -1
- package/dist/adapters/GoConfig.js +0 -155
- package/dist/adapters/GoConfig.js.map +0 -1
- package/dist/adapters/LanguageAdapter.d.ts +0 -135
- package/dist/adapters/LanguageAdapter.d.ts.map +0 -1
- package/dist/adapters/LanguageAdapter.js +0 -47
- package/dist/adapters/LanguageAdapter.js.map +0 -1
- package/dist/adapters/TypeScriptAdapter.d.ts +0 -43
- package/dist/adapters/TypeScriptAdapter.d.ts.map +0 -1
- package/dist/adapters/TypeScriptAdapter.js +0 -386
- package/dist/adapters/TypeScriptAdapter.js.map +0 -1
- package/dist/adapters/UniversalAnalyzer.d.ts +0 -42
- package/dist/adapters/UniversalAnalyzer.d.ts.map +0 -1
- package/dist/adapters/UniversalAnalyzer.js +0 -103
- package/dist/adapters/UniversalAnalyzer.js.map +0 -1
- package/dist/adapters/UniversalSOLIDAnalyzer.d.ts +0 -48
- package/dist/adapters/UniversalSOLIDAnalyzer.d.ts.map +0 -1
- package/dist/adapters/UniversalSOLIDAnalyzer.js +0 -178
- package/dist/adapters/UniversalSOLIDAnalyzer.js.map +0 -1
- package/dist/adapters/solidAnalyzerCompat.d.ts +0 -21
- package/dist/adapters/solidAnalyzerCompat.d.ts.map +0 -1
- package/dist/adapters/solidAnalyzerCompat.js +0 -78
- package/dist/adapters/solidAnalyzerCompat.js.map +0 -1
- package/dist/analyzers/dataAccessAnalyzerCompat.d.ts +0 -20
- package/dist/analyzers/dataAccessAnalyzerCompat.d.ts.map +0 -1
- package/dist/analyzers/dataAccessAnalyzerCompat.js +0 -59
- package/dist/analyzers/dataAccessAnalyzerCompat.js.map +0 -1
- package/dist/analyzers/documentationAnalyzerCompat.d.ts +0 -20
- package/dist/analyzers/documentationAnalyzerCompat.d.ts.map +0 -1
- package/dist/analyzers/documentationAnalyzerCompat.js +0 -52
- package/dist/analyzers/documentationAnalyzerCompat.js.map +0 -1
- package/dist/analyzers/dryAnalyzerCompat.d.ts +0 -20
- package/dist/analyzers/dryAnalyzerCompat.d.ts.map +0 -1
- package/dist/analyzers/dryAnalyzerCompat.js +0 -44
- package/dist/analyzers/dryAnalyzerCompat.js.map +0 -1
- package/dist/analyzers/schemaAnalyzerCompat.d.ts +0 -20
- package/dist/analyzers/schemaAnalyzerCompat.d.ts.map +0 -1
- package/dist/analyzers/schemaAnalyzerCompat.js +0 -69
- package/dist/analyzers/schemaAnalyzerCompat.js.map +0 -1
- package/dist/analyzers/solidAnalyzerCompat.d.ts +0 -20
- package/dist/analyzers/solidAnalyzerCompat.d.ts.map +0 -1
- package/dist/analyzers/solidAnalyzerCompat.js +0 -78
- package/dist/analyzers/solidAnalyzerCompat.js.map +0 -1
- package/dist/codeIndexDb.d.ts.map +0 -1
- package/dist/codeIndexDb.js +0 -2102
- package/dist/codeIndexDb.js.map +0 -1
- package/dist/languages/typescript/TypeScriptAdapter.d.ts +0 -108
- package/dist/languages/typescript/TypeScriptAdapter.d.ts.map +0 -1
- package/dist/languages/typescript/TypeScriptAdapter.js +0 -567
- package/dist/languages/typescript/TypeScriptAdapter.js.map +0 -1
- package/dist/languages/typescript/test-extraction.d.ts +0 -2
- package/dist/languages/typescript/test-extraction.d.ts.map +0 -1
- package/dist/languages/typescript/test-extraction.js +0 -36
- package/dist/languages/typescript/test-extraction.js.map +0 -1
- package/dist/mcp-hybrid.d.ts +0 -10
- package/dist/mcp-hybrid.d.ts.map +0 -1
- package/dist/mcp-hybrid.js +0 -41
- package/dist/mcp-hybrid.js.map +0 -1
- package/dist/mcp-index.d.ts +0 -13
- package/dist/mcp-index.d.ts.map +0 -1
- package/dist/mcp-index.js +0 -136
- package/dist/mcp-index.js.map +0 -1
- package/dist/mcp-standalone.d.ts +0 -3
- package/dist/mcp-standalone.d.ts.map +0 -1
- package/dist/mcp-standalone.js +0 -1324
- package/dist/mcp-standalone.js.map +0 -1
- package/dist/mcp-ui-server.d.ts +0 -27
- package/dist/mcp-ui-server.d.ts.map +0 -1
- package/dist/mcp-ui-server.js +0 -484
- package/dist/mcp-ui-server.js.map +0 -1
- package/dist/test-multi-strategy-search.d.ts +0 -3
- package/dist/test-multi-strategy-search.d.ts.map +0 -1
- package/dist/test-multi-strategy-search.js +0 -170
- package/dist/test-multi-strategy-search.js.map +0 -1
|
@@ -1,178 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Universal SOLID Analyzer
|
|
3
|
-
*
|
|
4
|
-
* Implements SOLID principle analysis using the language adapter pattern.
|
|
5
|
-
* This analyzer works across multiple languages by using the abstraction layer.
|
|
6
|
-
*/
|
|
7
|
-
import { UniversalAnalyzer } from './UniversalAnalyzer.js';
|
|
8
|
-
const DEFAULT_CONFIG = {
|
|
9
|
-
maxMethodsPerClass: 15,
|
|
10
|
-
maxLinesPerMethod: 50,
|
|
11
|
-
maxParametersPerMethod: 4,
|
|
12
|
-
maxClassComplexity: 50,
|
|
13
|
-
maxInterfaceMembers: 10,
|
|
14
|
-
checkDependencyInversion: true,
|
|
15
|
-
checkInterfaceSegregation: true,
|
|
16
|
-
checkLiskovSubstitution: true,
|
|
17
|
-
srp: {
|
|
18
|
-
maxResponsibilities: 3,
|
|
19
|
-
maxLinesPerFunction: 50,
|
|
20
|
-
maxParametersPerFunction: 4
|
|
21
|
-
},
|
|
22
|
-
ocp: {
|
|
23
|
-
checkForDirectModification: true
|
|
24
|
-
},
|
|
25
|
-
lsp: {
|
|
26
|
-
checkForExceptions: true
|
|
27
|
-
},
|
|
28
|
-
isp: {
|
|
29
|
-
maxMethodsPerInterface: 10
|
|
30
|
-
},
|
|
31
|
-
dip: {
|
|
32
|
-
checkForConcreteClasses: true
|
|
33
|
-
}
|
|
34
|
-
};
|
|
35
|
-
export class UniversalSOLIDAnalyzer extends UniversalAnalyzer {
|
|
36
|
-
name = 'solid';
|
|
37
|
-
description = 'Analyzes code for SOLID principle violations across multiple languages';
|
|
38
|
-
async analyzeAST(ast, adapter, config) {
|
|
39
|
-
console.error(`[DEBUG] SOLID: analyzeAST called for: ${ast.filePath}`);
|
|
40
|
-
const solidConfig = { ...DEFAULT_CONFIG, ...config };
|
|
41
|
-
const violations = [];
|
|
42
|
-
// For Go files, check if pre-computed violations are available from the Go analyzer
|
|
43
|
-
if (adapter.name === 'go' && ast.root.raw?.violations) {
|
|
44
|
-
console.error(`[DEBUG] SOLID: Using pre-computed Go violations for ${ast.filePath}`);
|
|
45
|
-
console.error(`[DEBUG] SOLID: Found ${ast.root.raw.violations.length} pre-computed violations`);
|
|
46
|
-
// Convert Go violations to our format
|
|
47
|
-
const goViolations = ast.root.raw.violations.map((gv) => ({
|
|
48
|
-
file: ast.filePath,
|
|
49
|
-
line: gv.Line,
|
|
50
|
-
column: 1, // Go analyzer doesn't provide column info
|
|
51
|
-
severity: gv.Severity.toLowerCase(),
|
|
52
|
-
message: gv.Message,
|
|
53
|
-
rule: gv.Category || 'solid',
|
|
54
|
-
analyzer: 'solid',
|
|
55
|
-
metadata: gv.Details
|
|
56
|
-
}));
|
|
57
|
-
violations.push(...goViolations);
|
|
58
|
-
console.error(`[DEBUG] SOLID: Converted ${goViolations.length} Go violations`);
|
|
59
|
-
return violations;
|
|
60
|
-
}
|
|
61
|
-
// For other languages (TypeScript, JavaScript), do traditional analysis
|
|
62
|
-
console.error(`[DEBUG] SOLID: Performing traditional analysis for ${adapter.name} file: ${ast.filePath}`);
|
|
63
|
-
// Extract language-agnostic entities
|
|
64
|
-
const functions = adapter.extractFunctions(ast);
|
|
65
|
-
const classes = adapter.extractClasses(ast);
|
|
66
|
-
console.error(`[DEBUG] SOLID: Found ${functions.length} functions and ${classes.length} classes in ${ast.filePath}`);
|
|
67
|
-
// Analyze Single Responsibility Principle
|
|
68
|
-
violations.push(...this.analyzeSRP(functions, classes, solidConfig, ast.filePath));
|
|
69
|
-
// Analyze Open/Closed Principle
|
|
70
|
-
violations.push(...this.analyzeOCP(classes, solidConfig, ast.filePath));
|
|
71
|
-
// Analyze Interface Segregation Principle
|
|
72
|
-
violations.push(...this.analyzeISP(ast, adapter, solidConfig));
|
|
73
|
-
// Analyze Dependency Inversion Principle
|
|
74
|
-
violations.push(...this.analyzeDIP(classes, solidConfig, ast.filePath));
|
|
75
|
-
console.error(`[DEBUG] SOLID: Analysis complete for ${ast.filePath}, found ${violations.length} violations`);
|
|
76
|
-
return violations;
|
|
77
|
-
}
|
|
78
|
-
analyzeSRP(functions, classes, config, filePath) {
|
|
79
|
-
const violations = [];
|
|
80
|
-
// Check functions for too many responsibilities
|
|
81
|
-
for (const func of functions) {
|
|
82
|
-
// Check function length
|
|
83
|
-
if (this.countFunctionLines(func) > config.srp.maxLinesPerFunction) {
|
|
84
|
-
violations.push(this.createViolation(filePath, func.location.start.line, func.location.start.column, `Function "${func.name}" has ${this.countFunctionLines(func)} lines, exceeding the maximum of ${config.srp.maxLinesPerFunction}. Consider breaking it down.`, 'warning', 'single-responsibility', { principle: 'single-responsibility' }));
|
|
85
|
-
}
|
|
86
|
-
// Check parameter count
|
|
87
|
-
if (func.parameters.length > config.srp.maxParametersPerFunction) {
|
|
88
|
-
violations.push(this.createViolation(filePath, func.location.start.line, func.location.start.column, `Function "${func.name}" has ${func.parameters.length} parameters, exceeding the maximum of ${config.srp.maxParametersPerFunction}. Consider using an options object.`, 'warning', 'single-responsibility', { principle: 'single-responsibility' }));
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
// Check classes for too many responsibilities
|
|
92
|
-
for (const cls of classes) {
|
|
93
|
-
// Check method count
|
|
94
|
-
if (cls.methods.length > config.maxMethodsPerClass) {
|
|
95
|
-
violations.push(this.createViolation(filePath, cls.location.start.line, cls.location.start.column, `Class "${cls.name}" has ${cls.methods.length} methods, exceeding the maximum of ${config.maxMethodsPerClass}. Consider splitting responsibilities.`, 'warning', 'single-responsibility', { principle: 'single-responsibility' }));
|
|
96
|
-
}
|
|
97
|
-
// Check class complexity (simplified calculation)
|
|
98
|
-
const complexity = this.calculateClassComplexity(cls);
|
|
99
|
-
if (complexity > config.maxClassComplexity) {
|
|
100
|
-
violations.push(this.createViolation(filePath, cls.location.start.line, cls.location.start.column, `Class "${cls.name}" has a complexity of ${complexity}, exceeding the maximum of ${config.maxClassComplexity}. Consider refactoring.`, 'critical', 'single-responsibility', { principle: 'single-responsibility' }));
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
return violations;
|
|
104
|
-
}
|
|
105
|
-
analyzeOCP(classes, config, filePath) {
|
|
106
|
-
const violations = [];
|
|
107
|
-
if (!config.ocp.checkForDirectModification) {
|
|
108
|
-
return violations;
|
|
109
|
-
}
|
|
110
|
-
// Check for classes that appear to be frequently modified
|
|
111
|
-
// This is a simplified heuristic - in practice you'd analyze git history
|
|
112
|
-
for (const cls of classes) {
|
|
113
|
-
// Look for classes with many conditional branches or switch statements
|
|
114
|
-
// This suggests the class needs modification for new functionality
|
|
115
|
-
const methodCount = cls.methods.length;
|
|
116
|
-
const hasComplexMethods = cls.methods.some(method => this.countFunctionLines(method) > config.maxLinesPerMethod);
|
|
117
|
-
if (methodCount > config.maxMethodsPerClass && hasComplexMethods) {
|
|
118
|
-
violations.push(this.createViolation(filePath, cls.location.start.line, cls.location.start.column, `Class "${cls.name}" appears to be frequently modified. Consider using composition or inheritance for extension.`, 'warning', 'open-closed', { principle: 'open-closed' }));
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
return violations;
|
|
122
|
-
}
|
|
123
|
-
analyzeISP(ast, adapter, config) {
|
|
124
|
-
const violations = [];
|
|
125
|
-
if (!config.checkInterfaceSegregation) {
|
|
126
|
-
return violations;
|
|
127
|
-
}
|
|
128
|
-
// Find interface-like structures in the AST
|
|
129
|
-
const interfaces = adapter.findNodes(ast, {
|
|
130
|
-
custom: (node) => adapter.isInterface(node)
|
|
131
|
-
});
|
|
132
|
-
for (const interfaceNode of interfaces) {
|
|
133
|
-
const children = adapter.getChildren(interfaceNode);
|
|
134
|
-
const methods = children.filter(child => adapter.isFunction(child));
|
|
135
|
-
if (methods.length > config.isp.maxMethodsPerInterface) {
|
|
136
|
-
const location = this.getSourceLocation(adapter, interfaceNode);
|
|
137
|
-
const name = adapter.getNodeName(interfaceNode) || '<anonymous>';
|
|
138
|
-
violations.push(this.createViolation(ast.filePath, location.line, location.column, `Interface "${name}" has ${methods.length} methods, exceeding the maximum of ${config.isp.maxMethodsPerInterface}. Consider splitting into smaller interfaces.`, 'warning', 'interface-segregation', { principle: 'interface-segregation' }));
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
return violations;
|
|
142
|
-
}
|
|
143
|
-
analyzeDIP(classes, config, filePath) {
|
|
144
|
-
const violations = [];
|
|
145
|
-
if (!config.checkDependencyInversion) {
|
|
146
|
-
return violations;
|
|
147
|
-
}
|
|
148
|
-
// Check for classes that directly instantiate dependencies
|
|
149
|
-
// This is a simplified check - in practice you'd analyze constructor patterns
|
|
150
|
-
for (const cls of classes) {
|
|
151
|
-
// Look for classes with many concrete dependencies (simplified heuristic)
|
|
152
|
-
if (cls.methods.length > 0) {
|
|
153
|
-
const hasConstructor = cls.methods.some(method => method.name === 'constructor' || method.name === cls.name);
|
|
154
|
-
if (hasConstructor) {
|
|
155
|
-
// In practice, you'd analyze the constructor to see if it's directly
|
|
156
|
-
// instantiating dependencies instead of accepting them as parameters
|
|
157
|
-
violations.push(this.createViolation(filePath, cls.location.start.line, cls.location.start.column, `Class "${cls.name}" directly instantiates dependencies. Consider dependency injection.`, 'warning', 'dependency-inversion', { principle: 'dependency-inversion' }));
|
|
158
|
-
}
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
return violations;
|
|
162
|
-
}
|
|
163
|
-
countFunctionLines(func) {
|
|
164
|
-
// Simplified line counting - in practice you'd analyze the actual function body
|
|
165
|
-
return func.location.end.line - func.location.start.line + 1;
|
|
166
|
-
}
|
|
167
|
-
calculateClassComplexity(cls) {
|
|
168
|
-
// Simplified complexity calculation
|
|
169
|
-
let complexity = cls.methods.length * 2; // Base complexity for methods
|
|
170
|
-
complexity += cls.properties.length; // Add property count
|
|
171
|
-
// Add complexity for method parameter counts
|
|
172
|
-
for (const method of cls.methods) {
|
|
173
|
-
complexity += method.parameters.length;
|
|
174
|
-
}
|
|
175
|
-
return complexity;
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
//# sourceMappingURL=UniversalSOLIDAnalyzer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"UniversalSOLIDAnalyzer.js","sourceRoot":"","sources":["../../src/adapters/UniversalSOLIDAnalyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* SOLID Analyzer Compatibility Layer
|
|
3
|
-
*
|
|
4
|
-
* This bridges the new Universal Analyzer system with the existing audit infrastructure.
|
|
5
|
-
* It allows gradual migration without breaking existing functionality.
|
|
6
|
-
*/
|
|
7
|
-
import { AnalyzerDefinition, AnalyzerResult } from '../types.js';
|
|
8
|
-
/**
|
|
9
|
-
* Compatibility wrapper that makes the Universal SOLID analyzer work with existing infrastructure
|
|
10
|
-
*/
|
|
11
|
-
export declare class SOLIDAnalyzerCompat implements AnalyzerDefinition {
|
|
12
|
-
name: string;
|
|
13
|
-
description: string;
|
|
14
|
-
private universalAnalyzer;
|
|
15
|
-
private initialized;
|
|
16
|
-
constructor();
|
|
17
|
-
private initializeAdapters;
|
|
18
|
-
analyze(files: string[], config?: any, options?: any): Promise<AnalyzerResult>;
|
|
19
|
-
}
|
|
20
|
-
export declare function createSOLIDAnalyzer(): AnalyzerDefinition;
|
|
21
|
-
//# sourceMappingURL=solidAnalyzerCompat.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"solidAnalyzerCompat.d.ts","sourceRoot":"","sources":["../../src/adapters/solidAnalyzerCompat.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAa,MAAM,aAAa,CAAC;AAM5E;;GAEG;AACH,qBAAa,mBAAoB,YAAW,kBAAkB;IAC5D,IAAI,SAAW;IACf,WAAW,SAA2D;IAEtE,OAAO,CAAC,iBAAiB,CAAyB;IAClD,OAAO,CAAC,WAAW,CAAS;;YAOd,kBAAkB;IAiC1B,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,cAAc,CAAC;CA0BrF;AAGD,wBAAgB,mBAAmB,IAAI,kBAAkB,CAExD"}
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* SOLID Analyzer Compatibility Layer
|
|
3
|
-
*
|
|
4
|
-
* This bridges the new Universal Analyzer system with the existing audit infrastructure.
|
|
5
|
-
* It allows gradual migration without breaking existing functionality.
|
|
6
|
-
*/
|
|
7
|
-
import { UniversalSOLIDAnalyzer } from './UniversalSOLIDAnalyzer.js';
|
|
8
|
-
import { TypeScriptAdapter } from './TypeScriptAdapter.js';
|
|
9
|
-
import { LanguageRegistry } from './LanguageAdapter.js';
|
|
10
|
-
import { createGoAdapter, getGoConfigFromEnv } from './GoConfig.js';
|
|
11
|
-
/**
|
|
12
|
-
* Compatibility wrapper that makes the Universal SOLID analyzer work with existing infrastructure
|
|
13
|
-
*/
|
|
14
|
-
export class SOLIDAnalyzerCompat {
|
|
15
|
-
name = 'solid';
|
|
16
|
-
description = 'SOLID principles analyzer with multi-language support';
|
|
17
|
-
universalAnalyzer;
|
|
18
|
-
initialized = false;
|
|
19
|
-
constructor() {
|
|
20
|
-
this.universalAnalyzer = new UniversalSOLIDAnalyzer();
|
|
21
|
-
// Note: initializeAdapters() is now async and called in analyze()
|
|
22
|
-
}
|
|
23
|
-
async initializeAdapters() {
|
|
24
|
-
if (this.initialized)
|
|
25
|
-
return;
|
|
26
|
-
console.error('[DEBUG] SOLID compat layer: Initializing language adapters...');
|
|
27
|
-
const registry = LanguageRegistry.getInstance();
|
|
28
|
-
// Register TypeScript adapter (always available)
|
|
29
|
-
const tsAdapter = new TypeScriptAdapter();
|
|
30
|
-
registry.register(tsAdapter);
|
|
31
|
-
console.error('[DEBUG] SOLID compat layer: TypeScript adapter registered');
|
|
32
|
-
// Conditionally register Go adapter
|
|
33
|
-
const goEnvConfig = getGoConfigFromEnv();
|
|
34
|
-
if (goEnvConfig.disabled) {
|
|
35
|
-
console.error('[DEBUG] SOLID compat layer: Go support disabled via environment variable');
|
|
36
|
-
}
|
|
37
|
-
else {
|
|
38
|
-
console.error('[DEBUG] SOLID compat layer: Detecting Go configuration...');
|
|
39
|
-
const goAdapter = await createGoAdapter(goEnvConfig.customPath);
|
|
40
|
-
if (goAdapter) {
|
|
41
|
-
registry.register(goAdapter);
|
|
42
|
-
console.error('[DEBUG] SOLID compat layer: Go adapter registered successfully');
|
|
43
|
-
}
|
|
44
|
-
else {
|
|
45
|
-
console.error('[DEBUG] SOLID compat layer: Go adapter not available - continuing with TypeScript-only support');
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
this.initialized = true;
|
|
49
|
-
console.error('[DEBUG] SOLID compat layer: Language adapters initialization complete');
|
|
50
|
-
}
|
|
51
|
-
async analyze(files, config, options) {
|
|
52
|
-
console.error('[DEBUG] SOLID compat layer called with files:', files.map(f => f.substring(f.lastIndexOf('/') + 1)));
|
|
53
|
-
console.error('[DEBUG] SOLID compat layer: File extensions in input:', files.map(f => f.substring(f.lastIndexOf('.'))));
|
|
54
|
-
console.error('[DEBUG] SOLID compat layer: Go files count:', files.filter(f => f.endsWith('.go')).length);
|
|
55
|
-
console.error('[DEBUG] SOLID compat layer: Total files count:', files.length);
|
|
56
|
-
// Ensure adapters are initialized before analysis
|
|
57
|
-
await this.initializeAdapters();
|
|
58
|
-
try {
|
|
59
|
-
const result = await this.universalAnalyzer.analyze(files, config, options);
|
|
60
|
-
console.error(`[DEBUG] SOLID compat layer: Universal analyzer returned ${result.violations.length} violations`);
|
|
61
|
-
return result;
|
|
62
|
-
}
|
|
63
|
-
catch (error) {
|
|
64
|
-
console.error('[DEBUG] SOLID compat layer: Error in universal analyzer:', error);
|
|
65
|
-
// Return empty result on error to prevent breaking the audit
|
|
66
|
-
return {
|
|
67
|
-
violations: [],
|
|
68
|
-
filesProcessed: 0,
|
|
69
|
-
executionTime: 0
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
// Export a function that creates the compat analyzer (matches existing pattern)
|
|
75
|
-
export function createSOLIDAnalyzer() {
|
|
76
|
-
return new SOLIDAnalyzerCompat();
|
|
77
|
-
}
|
|
78
|
-
//# sourceMappingURL=solidAnalyzerCompat.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"solidAnalyzerCompat.js","sourceRoot":"","sources":["../../src/adapters/solidAnalyzerCompat.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Compatibility layer for Data Access Analyzer
|
|
3
|
-
* Ensures the new universal analyzer produces similar results to the legacy one
|
|
4
|
-
*/
|
|
5
|
-
import type { AnalyzerFunction } from '../types.js';
|
|
6
|
-
/**
|
|
7
|
-
* Legacy-compatible data access analyzer function
|
|
8
|
-
* This wraps the new UniversalDataAccessAnalyzer to maintain API compatibility
|
|
9
|
-
*/
|
|
10
|
-
export declare const analyzeDataAccess: AnalyzerFunction;
|
|
11
|
-
/**
|
|
12
|
-
* Analyzer definition for registration
|
|
13
|
-
*/
|
|
14
|
-
export declare const dataAccessAnalyzer: {
|
|
15
|
-
name: string;
|
|
16
|
-
description: string;
|
|
17
|
-
category: string;
|
|
18
|
-
analyze: AnalyzerFunction;
|
|
19
|
-
};
|
|
20
|
-
//# sourceMappingURL=dataAccessAnalyzerCompat.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dataAccessAnalyzerCompat.d.ts","sourceRoot":"","sources":["../../src/analyzers/dataAccessAnalyzerCompat.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAOpD;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,gBAqC/B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;;CAK9B,CAAC"}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Compatibility layer for Data Access Analyzer
|
|
3
|
-
* Ensures the new universal analyzer produces similar results to the legacy one
|
|
4
|
-
*/
|
|
5
|
-
import { UniversalDataAccessAnalyzer } from './universal/UniversalDataAccessAnalyzer.js';
|
|
6
|
-
import { initializeLanguages } from '../languages/index.js';
|
|
7
|
-
// Initialize language system on module load
|
|
8
|
-
initializeLanguages();
|
|
9
|
-
/**
|
|
10
|
-
* Legacy-compatible data access analyzer function
|
|
11
|
-
* This wraps the new UniversalDataAccessAnalyzer to maintain API compatibility
|
|
12
|
-
*/
|
|
13
|
-
export const analyzeDataAccess = async (files, config = {}, options = {}, progressCallback) => {
|
|
14
|
-
const analyzer = new UniversalDataAccessAnalyzer();
|
|
15
|
-
// Map legacy config to universal config, only including defined values
|
|
16
|
-
const universalConfig = {};
|
|
17
|
-
if (config.databases !== undefined)
|
|
18
|
-
universalConfig.databases = config.databases;
|
|
19
|
-
if (config.organizationPatterns !== undefined)
|
|
20
|
-
universalConfig.organizationPatterns = config.organizationPatterns;
|
|
21
|
-
if (config.tablePatterns !== undefined)
|
|
22
|
-
universalConfig.tablePatterns = config.tablePatterns;
|
|
23
|
-
if (config.performanceThresholds !== undefined)
|
|
24
|
-
universalConfig.performanceThresholds = config.performanceThresholds;
|
|
25
|
-
if (config.securityPatterns !== undefined)
|
|
26
|
-
universalConfig.securityPatterns = config.securityPatterns;
|
|
27
|
-
if (config.checkOrgFilters !== undefined)
|
|
28
|
-
universalConfig.checkOrgFilters = config.checkOrgFilters;
|
|
29
|
-
if (config.checkSQLInjection !== undefined)
|
|
30
|
-
universalConfig.checkSQLInjection = config.checkSQLInjection;
|
|
31
|
-
if (config.checkPerformance !== undefined)
|
|
32
|
-
universalConfig.checkPerformance = config.checkPerformance;
|
|
33
|
-
// Call the universal analyzer
|
|
34
|
-
const result = await analyzer.analyze(files, universalConfig, {
|
|
35
|
-
progressCallback: progressCallback ? (progress) => {
|
|
36
|
-
progressCallback({
|
|
37
|
-
current: Math.floor(progress * 100),
|
|
38
|
-
total: 100,
|
|
39
|
-
analyzer: 'data-access',
|
|
40
|
-
phase: 'analyzing'
|
|
41
|
-
});
|
|
42
|
-
} : undefined,
|
|
43
|
-
...options
|
|
44
|
-
});
|
|
45
|
-
// Transform result to include data access patterns
|
|
46
|
-
// Note: The universal analyzer focuses on violations, while the legacy one
|
|
47
|
-
// also returned DataAccessPattern objects. For now, we'll just return violations.
|
|
48
|
-
return result;
|
|
49
|
-
};
|
|
50
|
-
/**
|
|
51
|
-
* Analyzer definition for registration
|
|
52
|
-
*/
|
|
53
|
-
export const dataAccessAnalyzer = {
|
|
54
|
-
name: 'data-access',
|
|
55
|
-
description: 'Analyzes database access patterns and data layer interactions',
|
|
56
|
-
category: 'security',
|
|
57
|
-
analyze: analyzeDataAccess
|
|
58
|
-
};
|
|
59
|
-
//# sourceMappingURL=dataAccessAnalyzerCompat.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dataAccessAnalyzerCompat.js","sourceRoot":"","sources":["../../src/analyzers/dataAccessAnalyzerCompat.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,2BAA2B,EAAE,MAAM,4CAA4C,CAAC;AACzF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,4CAA4C;AAC5C,mBAAmB,EAAE,CAAC;AAEtB;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAqB,KAAK,EACtD,KAAe,EACf,SAAc,EAAE,EAChB,OAAO,GAAG,EAAE,EACZ,gBAAgB,EAChB,EAAE;IACF,MAAM,QAAQ,GAAG,IAAI,2BAA2B,EAAE,CAAC;IAEnD,uEAAuE;IACvE,MAAM,eAAe,GAAQ,EAAE,CAAC;IAEhC,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS;QAAE,eAAe,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IACjF,IAAI,MAAM,CAAC,oBAAoB,KAAK,SAAS;QAAE,eAAe,CAAC,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,CAAC;IAClH,IAAI,MAAM,CAAC,aAAa,KAAK,SAAS;QAAE,eAAe,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;IAC7F,IAAI,MAAM,CAAC,qBAAqB,KAAK,SAAS;QAAE,eAAe,CAAC,qBAAqB,GAAG,MAAM,CAAC,qBAAqB,CAAC;IACrH,IAAI,MAAM,CAAC,gBAAgB,KAAK,SAAS;QAAE,eAAe,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;IACtG,IAAI,MAAM,CAAC,eAAe,KAAK,SAAS;QAAE,eAAe,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;IACnG,IAAI,MAAM,CAAC,iBAAiB,KAAK,SAAS;QAAE,eAAe,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;IACzG,IAAI,MAAM,CAAC,gBAAgB,KAAK,SAAS;QAAE,eAAe,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAEtG,8BAA8B;IAC9B,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,eAAe,EAAE;QAC5D,gBAAgB,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,QAAgB,EAAE,EAAE;YACxD,gBAAgB,CAAC;gBACf,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC;gBACnC,KAAK,EAAE,GAAG;gBACV,QAAQ,EAAE,aAAa;gBACvB,KAAK,EAAE,WAAW;aACnB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC,CAAC,SAAS;QACb,GAAG,OAAO;KACX,CAAC,CAAC;IAEH,mDAAmD;IACnD,2EAA2E;IAC3E,kFAAkF;IAClF,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,+DAA+D;IAC5E,QAAQ,EAAE,UAAU;IACpB,OAAO,EAAE,iBAAiB;CAC3B,CAAC"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Compatibility layer for DocumentationAnalyzer
|
|
3
|
-
* Ensures the new universal analyzer produces identical results to the legacy one
|
|
4
|
-
*/
|
|
5
|
-
import type { AnalyzerFunction } from '../types.js';
|
|
6
|
-
/**
|
|
7
|
-
* Legacy-compatible documentation analyzer function
|
|
8
|
-
* This wraps the new UniversalDocumentationAnalyzer to maintain API compatibility
|
|
9
|
-
*/
|
|
10
|
-
export declare const analyzeDocumentation: AnalyzerFunction;
|
|
11
|
-
/**
|
|
12
|
-
* Analyzer definition for registration
|
|
13
|
-
*/
|
|
14
|
-
export declare const documentationAnalyzer: {
|
|
15
|
-
name: string;
|
|
16
|
-
description: string;
|
|
17
|
-
category: string;
|
|
18
|
-
analyze: AnalyzerFunction;
|
|
19
|
-
};
|
|
20
|
-
//# sourceMappingURL=documentationAnalyzerCompat.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"documentationAnalyzerCompat.d.ts","sourceRoot":"","sources":["../../src/analyzers/documentationAnalyzerCompat.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAOpD;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,gBAqClC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;;CAKjC,CAAC"}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Compatibility layer for DocumentationAnalyzer
|
|
3
|
-
* Ensures the new universal analyzer produces identical results to the legacy one
|
|
4
|
-
*/
|
|
5
|
-
import { UniversalDocumentationAnalyzer } from './universal/UniversalDocumentationAnalyzer.js';
|
|
6
|
-
import { initializeLanguages } from '../languages/index.js';
|
|
7
|
-
// Initialize language system on module load
|
|
8
|
-
initializeLanguages();
|
|
9
|
-
/**
|
|
10
|
-
* Legacy-compatible documentation analyzer function
|
|
11
|
-
* This wraps the new UniversalDocumentationAnalyzer to maintain API compatibility
|
|
12
|
-
*/
|
|
13
|
-
export const analyzeDocumentation = async (files, config = {}, options = {}, progressCallback) => {
|
|
14
|
-
console.log('[DEBUG] DocumentationAnalyzerCompat called with files:', files);
|
|
15
|
-
console.log('[DEBUG] DocumentationAnalyzerCompat config:', config);
|
|
16
|
-
const analyzer = new UniversalDocumentationAnalyzer();
|
|
17
|
-
// Convert legacy config format if needed
|
|
18
|
-
const universalConfig = {
|
|
19
|
-
requireFunctionDocs: config.requireFunctionDocs ?? true,
|
|
20
|
-
requireClassDocs: config.requireComponentDocs ?? true, // Map component → class
|
|
21
|
-
requireFileDocs: config.requireFileDocs ?? true,
|
|
22
|
-
requireParamDocs: config.requireParamDocs ?? true,
|
|
23
|
-
requireReturnDocs: config.requireReturnDocs ?? true,
|
|
24
|
-
minDescriptionLength: config.minDescriptionLength ?? 10,
|
|
25
|
-
checkExportedOnly: config.checkExportedOnly ?? false,
|
|
26
|
-
exemptPatterns: config.exemptPatterns ?? ['test', 'spec', '\\.d\\.ts$', 'mock', 'fixture']
|
|
27
|
-
};
|
|
28
|
-
// Call the universal analyzer
|
|
29
|
-
const result = await analyzer.analyze(files, universalConfig, {
|
|
30
|
-
progressCallback: progressCallback ? (progress) => {
|
|
31
|
-
progressCallback({
|
|
32
|
-
current: Math.floor(progress * 100),
|
|
33
|
-
total: 100,
|
|
34
|
-
analyzer: 'documentation',
|
|
35
|
-
phase: 'analyzing'
|
|
36
|
-
});
|
|
37
|
-
} : undefined,
|
|
38
|
-
...options
|
|
39
|
-
});
|
|
40
|
-
// The result format should be identical, but we can add any necessary transformations here
|
|
41
|
-
return result;
|
|
42
|
-
};
|
|
43
|
-
/**
|
|
44
|
-
* Analyzer definition for registration
|
|
45
|
-
*/
|
|
46
|
-
export const documentationAnalyzer = {
|
|
47
|
-
name: 'documentation',
|
|
48
|
-
description: 'Analyzes documentation quality across the codebase',
|
|
49
|
-
category: 'documentation',
|
|
50
|
-
analyze: analyzeDocumentation
|
|
51
|
-
};
|
|
52
|
-
//# sourceMappingURL=documentationAnalyzerCompat.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"documentationAnalyzerCompat.js","sourceRoot":"","sources":["../../src/analyzers/documentationAnalyzerCompat.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,8BAA8B,EAAE,MAAM,+CAA+C,CAAC;AAC/F,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,4CAA4C;AAC5C,mBAAmB,EAAE,CAAC;AAEtB;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAqB,KAAK,EACzD,KAAe,EACf,SAAc,EAAE,EAChB,OAAO,GAAG,EAAE,EACZ,gBAAgB,EAChB,EAAE;IACF,OAAO,CAAC,GAAG,CAAC,wDAAwD,EAAE,KAAK,CAAC,CAAC;IAC7E,OAAO,CAAC,GAAG,CAAC,6CAA6C,EAAE,MAAM,CAAC,CAAC;IACnE,MAAM,QAAQ,GAAG,IAAI,8BAA8B,EAAE,CAAC;IAEtD,yCAAyC;IACzC,MAAM,eAAe,GAAG;QACtB,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,IAAI,IAAI;QACvD,gBAAgB,EAAE,MAAM,CAAC,oBAAoB,IAAI,IAAI,EAAG,wBAAwB;QAChF,eAAe,EAAE,MAAM,CAAC,eAAe,IAAI,IAAI;QAC/C,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,IAAI,IAAI;QACjD,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,IAAI,IAAI;QACnD,oBAAoB,EAAE,MAAM,CAAC,oBAAoB,IAAI,EAAE;QACvD,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,IAAI,KAAK;QACpD,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,CAAC;KAC3F,CAAC;IAEF,8BAA8B;IAC9B,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,eAAe,EAAE;QAC5D,gBAAgB,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,QAAgB,EAAE,EAAE;YACxD,gBAAgB,CAAC;gBACf,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC;gBACnC,KAAK,EAAE,GAAG;gBACV,QAAQ,EAAE,eAAe;gBACzB,KAAK,EAAE,WAAW;aACnB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC,CAAC,SAAS;QACb,GAAG,OAAO;KACX,CAAC,CAAC;IAEH,2FAA2F;IAC3F,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,IAAI,EAAE,eAAe;IACrB,WAAW,EAAE,oDAAoD;IACjE,QAAQ,EAAE,eAAe;IACzB,OAAO,EAAE,oBAAoB;CAC9B,CAAC"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Compatibility layer for DRY Analyzer
|
|
3
|
-
* Ensures the new universal analyzer produces identical results to the legacy one
|
|
4
|
-
*/
|
|
5
|
-
import type { AnalyzerFunction } from '../types.js';
|
|
6
|
-
/**
|
|
7
|
-
* Legacy-compatible DRY analyzer function
|
|
8
|
-
* This wraps the new UniversalDRYAnalyzer to maintain API compatibility
|
|
9
|
-
*/
|
|
10
|
-
export declare const analyzeDRY: AnalyzerFunction;
|
|
11
|
-
/**
|
|
12
|
-
* Analyzer definition for registration
|
|
13
|
-
*/
|
|
14
|
-
export declare const dryAnalyzer: {
|
|
15
|
-
name: string;
|
|
16
|
-
description: string;
|
|
17
|
-
category: string;
|
|
18
|
-
analyze: AnalyzerFunction;
|
|
19
|
-
};
|
|
20
|
-
//# sourceMappingURL=dryAnalyzerCompat.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dryAnalyzerCompat.d.ts","sourceRoot":"","sources":["../../src/analyzers/dryAnalyzerCompat.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAOpD;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,gBA6BxB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW;;;;;CAKvB,CAAC"}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Compatibility layer for DRY Analyzer
|
|
3
|
-
* Ensures the new universal analyzer produces identical results to the legacy one
|
|
4
|
-
*/
|
|
5
|
-
import { UniversalDRYAnalyzer } from './universal/UniversalDRYAnalyzer.js';
|
|
6
|
-
import { initializeLanguages } from '../languages/index.js';
|
|
7
|
-
// Initialize language system on module load
|
|
8
|
-
initializeLanguages();
|
|
9
|
-
/**
|
|
10
|
-
* Legacy-compatible DRY analyzer function
|
|
11
|
-
* This wraps the new UniversalDRYAnalyzer to maintain API compatibility
|
|
12
|
-
*/
|
|
13
|
-
export const analyzeDRY = async (files, config = {}, options = {}, progressCallback) => {
|
|
14
|
-
const analyzer = new UniversalDRYAnalyzer();
|
|
15
|
-
// The config format should be mostly compatible
|
|
16
|
-
const universalConfig = {
|
|
17
|
-
...config,
|
|
18
|
-
// Map any legacy config fields if needed
|
|
19
|
-
};
|
|
20
|
-
// Call the universal analyzer
|
|
21
|
-
const result = await analyzer.analyze(files, universalConfig, {
|
|
22
|
-
progressCallback: progressCallback ? (progress) => {
|
|
23
|
-
progressCallback({
|
|
24
|
-
current: Math.floor(progress * 100),
|
|
25
|
-
total: 100,
|
|
26
|
-
analyzer: 'dry',
|
|
27
|
-
phase: 'analyzing'
|
|
28
|
-
});
|
|
29
|
-
} : undefined,
|
|
30
|
-
...options
|
|
31
|
-
});
|
|
32
|
-
// The result format should be identical, but we can add any necessary transformations here
|
|
33
|
-
return result;
|
|
34
|
-
};
|
|
35
|
-
/**
|
|
36
|
-
* Analyzer definition for registration
|
|
37
|
-
*/
|
|
38
|
-
export const dryAnalyzer = {
|
|
39
|
-
name: 'dry',
|
|
40
|
-
description: 'Detects code duplication across the codebase',
|
|
41
|
-
category: 'maintainability',
|
|
42
|
-
analyze: analyzeDRY
|
|
43
|
-
};
|
|
44
|
-
//# sourceMappingURL=dryAnalyzerCompat.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dryAnalyzerCompat.js","sourceRoot":"","sources":["../../src/analyzers/dryAnalyzerCompat.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,4CAA4C;AAC5C,mBAAmB,EAAE,CAAC;AAEtB;;;GAGG;AACH,MAAM,CAAC,MAAM,UAAU,GAAqB,KAAK,EAC/C,KAAe,EACf,SAAc,EAAE,EAChB,OAAO,GAAG,EAAE,EACZ,gBAAgB,EAChB,EAAE;IACF,MAAM,QAAQ,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAE5C,gDAAgD;IAChD,MAAM,eAAe,GAAG;QACtB,GAAG,MAAM;QACT,yCAAyC;KAC1C,CAAC;IAEF,8BAA8B;IAC9B,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,eAAe,EAAE;QAC5D,gBAAgB,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,QAAgB,EAAE,EAAE;YACxD,gBAAgB,CAAC;gBACf,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC;gBACnC,KAAK,EAAE,GAAG;gBACV,QAAQ,EAAE,KAAK;gBACf,KAAK,EAAE,WAAW;aACnB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC,CAAC,SAAS;QACb,GAAG,OAAO;KACX,CAAC,CAAC;IAEH,2FAA2F;IAC3F,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,IAAI,EAAE,KAAK;IACX,WAAW,EAAE,8CAA8C;IAC3D,QAAQ,EAAE,iBAAiB;IAC3B,OAAO,EAAE,UAAU;CACpB,CAAC"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Compatibility layer for Schema Analyzer
|
|
3
|
-
* Ensures the new universal analyzer produces similar results to the legacy one
|
|
4
|
-
*/
|
|
5
|
-
import type { AnalyzerFunction } from '../types.js';
|
|
6
|
-
/**
|
|
7
|
-
* Legacy-compatible schema analyzer function
|
|
8
|
-
* This wraps the new UniversalSchemaAnalyzer to maintain API compatibility
|
|
9
|
-
*/
|
|
10
|
-
export declare const analyzeSchema: AnalyzerFunction;
|
|
11
|
-
/**
|
|
12
|
-
* Analyzer definition for registration
|
|
13
|
-
*/
|
|
14
|
-
export declare const schemaAnalyzer: {
|
|
15
|
-
name: string;
|
|
16
|
-
description: string;
|
|
17
|
-
category: string;
|
|
18
|
-
analyze: AnalyzerFunction;
|
|
19
|
-
};
|
|
20
|
-
//# sourceMappingURL=schemaAnalyzerCompat.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"schemaAnalyzerCompat.d.ts","sourceRoot":"","sources":["../../src/analyzers/schemaAnalyzerCompat.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAQpD;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,gBAyD3B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;CAK1B,CAAC"}
|