@liendev/core 0.19.5
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 +336 -0
- package/dist/config/loader.d.ts +12 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +46 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/merge.d.ts +20 -0
- package/dist/config/merge.d.ts.map +1 -0
- package/dist/config/merge.js +71 -0
- package/dist/config/merge.js.map +1 -0
- package/dist/config/migration-manager.d.ts +46 -0
- package/dist/config/migration-manager.d.ts.map +1 -0
- package/dist/config/migration-manager.js +119 -0
- package/dist/config/migration-manager.js.map +1 -0
- package/dist/config/migration.d.ts +20 -0
- package/dist/config/migration.d.ts.map +1 -0
- package/dist/config/migration.js +155 -0
- package/dist/config/migration.js.map +1 -0
- package/dist/config/schema.d.ts +101 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +58 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/config/service.d.ts +122 -0
- package/dist/config/service.d.ts.map +1 -0
- package/dist/config/service.js +477 -0
- package/dist/config/service.js.map +1 -0
- package/dist/constants.d.ts +20 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +43 -0
- package/dist/constants.js.map +1 -0
- package/dist/embeddings/cache.d.ts +45 -0
- package/dist/embeddings/cache.d.ts.map +1 -0
- package/dist/embeddings/cache.js +109 -0
- package/dist/embeddings/cache.js.map +1 -0
- package/dist/embeddings/local.d.ts +10 -0
- package/dist/embeddings/local.d.ts.map +1 -0
- package/dist/embeddings/local.js +63 -0
- package/dist/embeddings/local.js.map +1 -0
- package/dist/embeddings/types.d.ts +9 -0
- package/dist/embeddings/types.d.ts.map +1 -0
- package/dist/embeddings/types.js +5 -0
- package/dist/embeddings/types.js.map +1 -0
- package/dist/errors/codes.d.ts +18 -0
- package/dist/errors/codes.d.ts.map +1 -0
- package/dist/errors/codes.js +25 -0
- package/dist/errors/codes.js.map +1 -0
- package/dist/errors/index.d.ts +85 -0
- package/dist/errors/index.d.ts.map +1 -0
- package/dist/errors/index.js +134 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/frameworks/detector-service.d.ts +59 -0
- package/dist/frameworks/detector-service.d.ts.map +1 -0
- package/dist/frameworks/detector-service.js +219 -0
- package/dist/frameworks/detector-service.js.map +1 -0
- package/dist/frameworks/laravel/config.d.ts +6 -0
- package/dist/frameworks/laravel/config.d.ts.map +1 -0
- package/dist/frameworks/laravel/config.js +68 -0
- package/dist/frameworks/laravel/config.js.map +1 -0
- package/dist/frameworks/laravel/detector.d.ts +6 -0
- package/dist/frameworks/laravel/detector.d.ts.map +1 -0
- package/dist/frameworks/laravel/detector.js +96 -0
- package/dist/frameworks/laravel/detector.js.map +1 -0
- package/dist/frameworks/nodejs/config.d.ts +6 -0
- package/dist/frameworks/nodejs/config.d.ts.map +1 -0
- package/dist/frameworks/nodejs/config.js +57 -0
- package/dist/frameworks/nodejs/config.js.map +1 -0
- package/dist/frameworks/nodejs/detector.d.ts +6 -0
- package/dist/frameworks/nodejs/detector.d.ts.map +1 -0
- package/dist/frameworks/nodejs/detector.js +77 -0
- package/dist/frameworks/nodejs/detector.js.map +1 -0
- package/dist/frameworks/php/config.d.ts +6 -0
- package/dist/frameworks/php/config.d.ts.map +1 -0
- package/dist/frameworks/php/config.js +53 -0
- package/dist/frameworks/php/config.js.map +1 -0
- package/dist/frameworks/php/detector.d.ts +7 -0
- package/dist/frameworks/php/detector.d.ts.map +1 -0
- package/dist/frameworks/php/detector.js +101 -0
- package/dist/frameworks/php/detector.js.map +1 -0
- package/dist/frameworks/registry.d.ts +20 -0
- package/dist/frameworks/registry.d.ts.map +1 -0
- package/dist/frameworks/registry.js +38 -0
- package/dist/frameworks/registry.js.map +1 -0
- package/dist/frameworks/shopify/config.d.ts +6 -0
- package/dist/frameworks/shopify/config.d.ts.map +1 -0
- package/dist/frameworks/shopify/config.js +50 -0
- package/dist/frameworks/shopify/config.js.map +1 -0
- package/dist/frameworks/shopify/detector.d.ts +6 -0
- package/dist/frameworks/shopify/detector.d.ts.map +1 -0
- package/dist/frameworks/shopify/detector.js +103 -0
- package/dist/frameworks/shopify/detector.js.map +1 -0
- package/dist/frameworks/types.d.ts +51 -0
- package/dist/frameworks/types.d.ts.map +1 -0
- package/dist/frameworks/types.js +21 -0
- package/dist/frameworks/types.js.map +1 -0
- package/dist/git/tracker.d.ts +56 -0
- package/dist/git/tracker.d.ts.map +1 -0
- package/dist/git/tracker.js +189 -0
- package/dist/git/tracker.js.map +1 -0
- package/dist/git/utils.d.ts +60 -0
- package/dist/git/utils.d.ts.map +1 -0
- package/dist/git/utils.js +152 -0
- package/dist/git/utils.js.map +1 -0
- package/dist/index.d.ts +77 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +95 -0
- package/dist/index.js.map +1 -0
- package/dist/indexer/ast/chunker.d.ts +28 -0
- package/dist/indexer/ast/chunker.d.ts.map +1 -0
- package/dist/indexer/ast/chunker.js +268 -0
- package/dist/indexer/ast/chunker.js.map +1 -0
- package/dist/indexer/ast/complexity/cognitive.d.ts +16 -0
- package/dist/indexer/ast/complexity/cognitive.d.ts.map +1 -0
- package/dist/indexer/ast/complexity/cognitive.js +106 -0
- package/dist/indexer/ast/complexity/cognitive.js.map +1 -0
- package/dist/indexer/ast/complexity/cyclomatic.d.ts +12 -0
- package/dist/indexer/ast/complexity/cyclomatic.d.ts.map +1 -0
- package/dist/indexer/ast/complexity/cyclomatic.js +61 -0
- package/dist/indexer/ast/complexity/cyclomatic.js.map +1 -0
- package/dist/indexer/ast/complexity/halstead.d.ts +55 -0
- package/dist/indexer/ast/complexity/halstead.d.ts.map +1 -0
- package/dist/indexer/ast/complexity/halstead.js +290 -0
- package/dist/indexer/ast/complexity/halstead.js.map +1 -0
- package/dist/indexer/ast/complexity/index.d.ts +13 -0
- package/dist/indexer/ast/complexity/index.d.ts.map +1 -0
- package/dist/indexer/ast/complexity/index.js +12 -0
- package/dist/indexer/ast/complexity/index.js.map +1 -0
- package/dist/indexer/ast/parser.d.ts +27 -0
- package/dist/indexer/ast/parser.d.ts.map +1 -0
- package/dist/indexer/ast/parser.js +103 -0
- package/dist/indexer/ast/parser.js.map +1 -0
- package/dist/indexer/ast/symbols.d.ts +17 -0
- package/dist/indexer/ast/symbols.d.ts.map +1 -0
- package/dist/indexer/ast/symbols.js +265 -0
- package/dist/indexer/ast/symbols.js.map +1 -0
- package/dist/indexer/ast/traversers/index.d.ts +19 -0
- package/dist/indexer/ast/traversers/index.d.ts.map +1 -0
- package/dist/indexer/ast/traversers/index.js +42 -0
- package/dist/indexer/ast/traversers/index.js.map +1 -0
- package/dist/indexer/ast/traversers/php.d.ts +21 -0
- package/dist/indexer/ast/traversers/php.d.ts.map +1 -0
- package/dist/indexer/ast/traversers/php.js +67 -0
- package/dist/indexer/ast/traversers/php.js.map +1 -0
- package/dist/indexer/ast/traversers/python.d.ts +28 -0
- package/dist/indexer/ast/traversers/python.d.ts.map +1 -0
- package/dist/indexer/ast/traversers/python.js +67 -0
- package/dist/indexer/ast/traversers/python.js.map +1 -0
- package/dist/indexer/ast/traversers/types.d.ts +98 -0
- package/dist/indexer/ast/traversers/types.d.ts.map +1 -0
- package/dist/indexer/ast/traversers/types.js +2 -0
- package/dist/indexer/ast/traversers/types.js.map +1 -0
- package/dist/indexer/ast/traversers/typescript.d.ts +29 -0
- package/dist/indexer/ast/traversers/typescript.d.ts.map +1 -0
- package/dist/indexer/ast/traversers/typescript.js +88 -0
- package/dist/indexer/ast/traversers/typescript.js.map +1 -0
- package/dist/indexer/ast/types.d.ts +59 -0
- package/dist/indexer/ast/types.d.ts.map +1 -0
- package/dist/indexer/ast/types.js +2 -0
- package/dist/indexer/ast/types.js.map +1 -0
- package/dist/indexer/change-detector.d.ts +17 -0
- package/dist/indexer/change-detector.d.ts.map +1 -0
- package/dist/indexer/change-detector.js +207 -0
- package/dist/indexer/change-detector.js.map +1 -0
- package/dist/indexer/chunk-batch-processor.d.ts +103 -0
- package/dist/indexer/chunk-batch-processor.d.ts.map +1 -0
- package/dist/indexer/chunk-batch-processor.js +179 -0
- package/dist/indexer/chunk-batch-processor.js.map +1 -0
- package/dist/indexer/chunker.d.ts +10 -0
- package/dist/indexer/chunker.d.ts.map +1 -0
- package/dist/indexer/chunker.js +96 -0
- package/dist/indexer/chunker.js.map +1 -0
- package/dist/indexer/dependency-analyzer.d.ts +60 -0
- package/dist/indexer/dependency-analyzer.d.ts.map +1 -0
- package/dist/indexer/dependency-analyzer.js +261 -0
- package/dist/indexer/dependency-analyzer.js.map +1 -0
- package/dist/indexer/incremental.d.ts +47 -0
- package/dist/indexer/incremental.d.ts.map +1 -0
- package/dist/indexer/incremental.js +284 -0
- package/dist/indexer/incremental.js.map +1 -0
- package/dist/indexer/index.d.ts +80 -0
- package/dist/indexer/index.d.ts.map +1 -0
- package/dist/indexer/index.js +364 -0
- package/dist/indexer/index.js.map +1 -0
- package/dist/indexer/json-template-chunker.d.ts +9 -0
- package/dist/indexer/json-template-chunker.d.ts.map +1 -0
- package/dist/indexer/json-template-chunker.js +83 -0
- package/dist/indexer/json-template-chunker.js.map +1 -0
- package/dist/indexer/liquid-chunker.d.ts +13 -0
- package/dist/indexer/liquid-chunker.d.ts.map +1 -0
- package/dist/indexer/liquid-chunker.js +272 -0
- package/dist/indexer/liquid-chunker.js.map +1 -0
- package/dist/indexer/manifest.d.ts +122 -0
- package/dist/indexer/manifest.d.ts.map +1 -0
- package/dist/indexer/manifest.js +262 -0
- package/dist/indexer/manifest.js.map +1 -0
- package/dist/indexer/progress-tracker.d.ts +35 -0
- package/dist/indexer/progress-tracker.d.ts.map +1 -0
- package/dist/indexer/progress-tracker.js +33 -0
- package/dist/indexer/progress-tracker.js.map +1 -0
- package/dist/indexer/scanner.d.ts +16 -0
- package/dist/indexer/scanner.d.ts.map +1 -0
- package/dist/indexer/scanner.js +159 -0
- package/dist/indexer/scanner.js.map +1 -0
- package/dist/indexer/symbol-extractor.d.ts +18 -0
- package/dist/indexer/symbol-extractor.d.ts.map +1 -0
- package/dist/indexer/symbol-extractor.js +351 -0
- package/dist/indexer/symbol-extractor.js.map +1 -0
- package/dist/indexer/types.d.ts +34 -0
- package/dist/indexer/types.d.ts.map +1 -0
- package/dist/indexer/types.js +2 -0
- package/dist/indexer/types.js.map +1 -0
- package/dist/insights/complexity-analyzer.d.ts +82 -0
- package/dist/insights/complexity-analyzer.d.ts.map +1 -0
- package/dist/insights/complexity-analyzer.js +356 -0
- package/dist/insights/complexity-analyzer.js.map +1 -0
- package/dist/insights/formatters/index.d.ts +11 -0
- package/dist/insights/formatters/index.d.ts.map +1 -0
- package/dist/insights/formatters/index.js +20 -0
- package/dist/insights/formatters/index.js.map +1 -0
- package/dist/insights/formatters/json.d.ts +7 -0
- package/dist/insights/formatters/json.d.ts.map +1 -0
- package/dist/insights/formatters/json.js +14 -0
- package/dist/insights/formatters/json.js.map +1 -0
- package/dist/insights/formatters/sarif.d.ts +6 -0
- package/dist/insights/formatters/sarif.d.ts.map +1 -0
- package/dist/insights/formatters/sarif.js +113 -0
- package/dist/insights/formatters/sarif.js.map +1 -0
- package/dist/insights/formatters/text.d.ts +6 -0
- package/dist/insights/formatters/text.d.ts.map +1 -0
- package/dist/insights/formatters/text.js +154 -0
- package/dist/insights/formatters/text.js.map +1 -0
- package/dist/insights/types.d.ts +73 -0
- package/dist/insights/types.d.ts.map +1 -0
- package/dist/insights/types.js +9 -0
- package/dist/insights/types.js.map +1 -0
- package/dist/types/index.d.ts +14 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +8 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/path-matching.d.ts +69 -0
- package/dist/utils/path-matching.d.ts.map +1 -0
- package/dist/utils/path-matching.js +123 -0
- package/dist/utils/path-matching.js.map +1 -0
- package/dist/utils/result.d.ts +65 -0
- package/dist/utils/result.d.ts.map +1 -0
- package/dist/utils/result.js +67 -0
- package/dist/utils/result.js.map +1 -0
- package/dist/utils/version.d.ts +22 -0
- package/dist/utils/version.d.ts.map +1 -0
- package/dist/utils/version.js +28 -0
- package/dist/utils/version.js.map +1 -0
- package/dist/vectordb/batch-insert.d.ts +14 -0
- package/dist/vectordb/batch-insert.d.ts.map +1 -0
- package/dist/vectordb/batch-insert.js +185 -0
- package/dist/vectordb/batch-insert.js.map +1 -0
- package/dist/vectordb/boosting/composer.d.ts +51 -0
- package/dist/vectordb/boosting/composer.d.ts.map +1 -0
- package/dist/vectordb/boosting/composer.js +65 -0
- package/dist/vectordb/boosting/composer.js.map +1 -0
- package/dist/vectordb/boosting/index.d.ts +22 -0
- package/dist/vectordb/boosting/index.d.ts.map +1 -0
- package/dist/vectordb/boosting/index.js +22 -0
- package/dist/vectordb/boosting/index.js.map +1 -0
- package/dist/vectordb/boosting/strategies.d.ts +40 -0
- package/dist/vectordb/boosting/strategies.d.ts.map +1 -0
- package/dist/vectordb/boosting/strategies.js +174 -0
- package/dist/vectordb/boosting/strategies.js.map +1 -0
- package/dist/vectordb/boosting/types.d.ts +20 -0
- package/dist/vectordb/boosting/types.d.ts.map +1 -0
- package/dist/vectordb/boosting/types.js +2 -0
- package/dist/vectordb/boosting/types.js.map +1 -0
- package/dist/vectordb/intent-classifier.d.ts +99 -0
- package/dist/vectordb/intent-classifier.d.ts.map +1 -0
- package/dist/vectordb/intent-classifier.js +193 -0
- package/dist/vectordb/intent-classifier.js.map +1 -0
- package/dist/vectordb/lancedb.d.ts +45 -0
- package/dist/vectordb/lancedb.d.ts.map +1 -0
- package/dist/vectordb/lancedb.js +203 -0
- package/dist/vectordb/lancedb.js.map +1 -0
- package/dist/vectordb/maintenance.d.ts +18 -0
- package/dist/vectordb/maintenance.d.ts.map +1 -0
- package/dist/vectordb/maintenance.js +87 -0
- package/dist/vectordb/maintenance.js.map +1 -0
- package/dist/vectordb/query.d.ts +34 -0
- package/dist/vectordb/query.d.ts.map +1 -0
- package/dist/vectordb/query.js +303 -0
- package/dist/vectordb/query.js.map +1 -0
- package/dist/vectordb/relevance.d.ts +15 -0
- package/dist/vectordb/relevance.d.ts.map +1 -0
- package/dist/vectordb/relevance.js +19 -0
- package/dist/vectordb/relevance.js.map +1 -0
- package/dist/vectordb/types.d.ts +29 -0
- package/dist/vectordb/types.d.ts.map +1 -0
- package/dist/vectordb/types.js +2 -0
- package/dist/vectordb/types.js.map +1 -0
- package/dist/vectordb/version.d.ts +16 -0
- package/dist/vectordb/version.d.ts.map +1 -0
- package/dist/vectordb/version.js +40 -0
- package/dist/vectordb/version.js.map +1 -0
- package/package.json +66 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"symbol-extractor.js","sourceRoot":"","sources":["../../src/indexer/symbol-extractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export interface CodeChunk {
|
|
2
|
+
content: string;
|
|
3
|
+
metadata: ChunkMetadata;
|
|
4
|
+
}
|
|
5
|
+
export interface ChunkMetadata {
|
|
6
|
+
file: string;
|
|
7
|
+
startLine: number;
|
|
8
|
+
endLine: number;
|
|
9
|
+
type: 'function' | 'class' | 'block' | 'template';
|
|
10
|
+
language: string;
|
|
11
|
+
symbols?: {
|
|
12
|
+
functions: string[];
|
|
13
|
+
classes: string[];
|
|
14
|
+
interfaces: string[];
|
|
15
|
+
};
|
|
16
|
+
symbolName?: string;
|
|
17
|
+
symbolType?: 'function' | 'method' | 'class' | 'interface' | 'schema' | 'style' | 'javascript' | 'template';
|
|
18
|
+
parentClass?: string;
|
|
19
|
+
complexity?: number;
|
|
20
|
+
cognitiveComplexity?: number;
|
|
21
|
+
parameters?: string[];
|
|
22
|
+
signature?: string;
|
|
23
|
+
imports?: string[];
|
|
24
|
+
halsteadVolume?: number;
|
|
25
|
+
halsteadDifficulty?: number;
|
|
26
|
+
halsteadEffort?: number;
|
|
27
|
+
halsteadBugs?: number;
|
|
28
|
+
}
|
|
29
|
+
export interface ScanOptions {
|
|
30
|
+
rootDir: string;
|
|
31
|
+
includePatterns?: string[];
|
|
32
|
+
excludePatterns?: string[];
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/indexer/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,aAAa,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,UAAU,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,CAAC;IAClD,QAAQ,EAAE,MAAM,CAAC;IAEjB,OAAO,CAAC,EAAE;QACR,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,UAAU,EAAE,MAAM,EAAE,CAAC;KACtB,CAAC;IAGF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,WAAW,GAAG,QAAQ,GAAG,OAAO,GAAG,YAAY,GAAG,UAAU,CAAC;IAC5G,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAGnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/indexer/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { VectorDB } from '../vectordb/lancedb.js';
|
|
2
|
+
import { LienConfig } from '../config/schema.js';
|
|
3
|
+
import { ComplexityReport } from './types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Analyzer for code complexity based on indexed codebase
|
|
6
|
+
*/
|
|
7
|
+
export declare class ComplexityAnalyzer {
|
|
8
|
+
private vectorDB;
|
|
9
|
+
private config;
|
|
10
|
+
constructor(vectorDB: VectorDB, config: LienConfig);
|
|
11
|
+
/**
|
|
12
|
+
* Analyze complexity of codebase or specific files
|
|
13
|
+
* @param files - Optional list of specific files to analyze
|
|
14
|
+
* @returns Complexity report with violations and summary
|
|
15
|
+
*/
|
|
16
|
+
analyze(files?: string[]): Promise<ComplexityReport>;
|
|
17
|
+
/**
|
|
18
|
+
* Normalize a file path to a consistent relative format
|
|
19
|
+
* Converts absolute paths to relative paths from workspace root
|
|
20
|
+
*/
|
|
21
|
+
private normalizeFilePath;
|
|
22
|
+
/**
|
|
23
|
+
* Check if a chunk's file matches any of the target files
|
|
24
|
+
* Uses exact match or suffix matching to avoid unintended matches
|
|
25
|
+
*/
|
|
26
|
+
private matchesAnyFile;
|
|
27
|
+
/**
|
|
28
|
+
* Create a violation if complexity exceeds threshold
|
|
29
|
+
*/
|
|
30
|
+
private createViolation;
|
|
31
|
+
/**
|
|
32
|
+
* Deduplicate and filter chunks to only function/method types.
|
|
33
|
+
* Handles potential index duplicates by tracking file+line ranges.
|
|
34
|
+
*/
|
|
35
|
+
private getUniqueFunctionChunks;
|
|
36
|
+
/**
|
|
37
|
+
* Convert Halstead effort to time in minutes.
|
|
38
|
+
* Formula: Time (seconds) = Effort / 18 (Stroud number for mental discrimination)
|
|
39
|
+
* Time (minutes) = Effort / (18 * 60) = Effort / 1080
|
|
40
|
+
*/
|
|
41
|
+
private effortToMinutes;
|
|
42
|
+
/**
|
|
43
|
+
* Format minutes as human-readable time (e.g., "2h 30m" or "45m")
|
|
44
|
+
*/
|
|
45
|
+
private formatTime;
|
|
46
|
+
/**
|
|
47
|
+
* Create a Halstead violation if metrics exceed thresholds
|
|
48
|
+
*/
|
|
49
|
+
private createHalsteadViolation;
|
|
50
|
+
/**
|
|
51
|
+
* Check complexity metrics and create violations for a single chunk.
|
|
52
|
+
*/
|
|
53
|
+
private checkChunkComplexity;
|
|
54
|
+
/**
|
|
55
|
+
* Convert time in minutes to Halstead effort.
|
|
56
|
+
* This is the inverse of effortToMinutes().
|
|
57
|
+
* Formula: Time (seconds) = Effort / 18 (Stroud number)
|
|
58
|
+
* So: Effort = Time (minutes) * 60 * 18 = Time * 1080
|
|
59
|
+
*/
|
|
60
|
+
private minutesToEffort;
|
|
61
|
+
/**
|
|
62
|
+
* Find all complexity violations based on thresholds.
|
|
63
|
+
* Checks cyclomatic, cognitive, and Halstead complexity.
|
|
64
|
+
*/
|
|
65
|
+
private findViolations;
|
|
66
|
+
/**
|
|
67
|
+
* Build the final report with summary and per-file data
|
|
68
|
+
*/
|
|
69
|
+
private buildReport;
|
|
70
|
+
/**
|
|
71
|
+
* Calculate risk level based on violations
|
|
72
|
+
*/
|
|
73
|
+
private calculateRiskLevel;
|
|
74
|
+
/**
|
|
75
|
+
* Enrich files with violations with dependency data
|
|
76
|
+
* This adds:
|
|
77
|
+
* - List of dependent files (who imports this?)
|
|
78
|
+
* - Boosted risk level based on dependents + complexity
|
|
79
|
+
*/
|
|
80
|
+
private enrichWithDependencies;
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=complexity-analyzer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"complexity-analyzer.d.ts","sourceRoot":"","sources":["../../src/insights/complexity-analyzer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAuB,gBAAgB,EAA8D,MAAM,YAAY,CAAC;AAY/H;;GAEG;AACH,qBAAa,kBAAkB;IAE3B,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,MAAM;gBADN,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,UAAU;IAG5B;;;;OAIG;IACG,OAAO,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAuB1D;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAgBzB;;;OAGG;IACH,OAAO,CAAC,cAAc;IAYtB;;OAEG;IACH,OAAO,CAAC,eAAe;IAkCvB;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAmB/B;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAIvB;;OAEG;IACH,OAAO,CAAC,UAAU;IASlB;;OAEG;IACH,OAAO,CAAC,uBAAuB;IA8D/B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAiC5B;;;;;OAKG;IACH,OAAO,CAAC,eAAe;IAIvB;;;OAGG;IACH,OAAO,CAAC,cAAc;IAqBtB;;OAEG;IACH,OAAO,CAAC,WAAW;IA2DnB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAY1B;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;CAqC/B"}
|
|
@@ -0,0 +1,356 @@
|
|
|
1
|
+
import { RISK_ORDER } from './types.js';
|
|
2
|
+
import { analyzeDependencies } from '../indexer/dependency-analyzer.js';
|
|
3
|
+
/**
|
|
4
|
+
* Hardcoded severity multipliers:
|
|
5
|
+
* - Warning: triggers at 1x threshold (e.g., testPaths >= 15)
|
|
6
|
+
* - Error: triggers at 2x threshold (e.g., testPaths >= 30)
|
|
7
|
+
*/
|
|
8
|
+
const SEVERITY = { warning: 1.0, error: 2.0 };
|
|
9
|
+
/**
|
|
10
|
+
* Analyzer for code complexity based on indexed codebase
|
|
11
|
+
*/
|
|
12
|
+
export class ComplexityAnalyzer {
|
|
13
|
+
vectorDB;
|
|
14
|
+
config;
|
|
15
|
+
constructor(vectorDB, config) {
|
|
16
|
+
this.vectorDB = vectorDB;
|
|
17
|
+
this.config = config;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Analyze complexity of codebase or specific files
|
|
21
|
+
* @param files - Optional list of specific files to analyze
|
|
22
|
+
* @returns Complexity report with violations and summary
|
|
23
|
+
*/
|
|
24
|
+
async analyze(files) {
|
|
25
|
+
// 1. Get all chunks from index (uses full scan internally for LanceDB)
|
|
26
|
+
// Note: We fetch all chunks even with --files filter because dependency analysis
|
|
27
|
+
// needs the complete dataset to find dependents accurately
|
|
28
|
+
const allChunks = await this.vectorDB.scanAll();
|
|
29
|
+
// 2. Filter to specified files if provided
|
|
30
|
+
const chunks = files
|
|
31
|
+
? allChunks.filter(c => this.matchesAnyFile(c.metadata.file, files))
|
|
32
|
+
: allChunks;
|
|
33
|
+
// 3. Find violations from filtered chunks
|
|
34
|
+
const violations = this.findViolations(chunks);
|
|
35
|
+
// 4. Build report - pass filtered chunks for file list, but keep violations from those files
|
|
36
|
+
const report = this.buildReport(violations, chunks);
|
|
37
|
+
// 5. Enrich files with violations with dependency data
|
|
38
|
+
this.enrichWithDependencies(report, allChunks);
|
|
39
|
+
return report;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Normalize a file path to a consistent relative format
|
|
43
|
+
* Converts absolute paths to relative paths from workspace root
|
|
44
|
+
*/
|
|
45
|
+
normalizeFilePath(filepath) {
|
|
46
|
+
const workspaceRoot = process.cwd();
|
|
47
|
+
// Convert to forward slashes first
|
|
48
|
+
const normalized = filepath.replace(/\\/g, '/');
|
|
49
|
+
const normalizedRoot = workspaceRoot.replace(/\\/g, '/');
|
|
50
|
+
// Convert absolute paths to relative
|
|
51
|
+
if (normalized.startsWith(normalizedRoot + '/')) {
|
|
52
|
+
return normalized.slice(normalizedRoot.length + 1);
|
|
53
|
+
}
|
|
54
|
+
if (normalized.startsWith(normalizedRoot)) {
|
|
55
|
+
return normalized.slice(normalizedRoot.length);
|
|
56
|
+
}
|
|
57
|
+
return normalized;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Check if a chunk's file matches any of the target files
|
|
61
|
+
* Uses exact match or suffix matching to avoid unintended matches
|
|
62
|
+
*/
|
|
63
|
+
matchesAnyFile(chunkFile, targetFiles) {
|
|
64
|
+
// Normalize to forward slashes for cross-platform consistency
|
|
65
|
+
// Don't use path.normalize() as its behavior is platform-dependent
|
|
66
|
+
const normalizedChunkFile = chunkFile.replace(/\\/g, '/');
|
|
67
|
+
return targetFiles.some(target => {
|
|
68
|
+
const normalizedTarget = target.replace(/\\/g, '/');
|
|
69
|
+
// Exact match or target is a suffix of the chunk file
|
|
70
|
+
return normalizedChunkFile === normalizedTarget ||
|
|
71
|
+
normalizedChunkFile.endsWith('/' + normalizedTarget);
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Create a violation if complexity exceeds threshold
|
|
76
|
+
*/
|
|
77
|
+
createViolation(metadata, complexity, baseThreshold, metricType) {
|
|
78
|
+
const warningThreshold = baseThreshold * SEVERITY.warning;
|
|
79
|
+
const errorThreshold = baseThreshold * SEVERITY.error;
|
|
80
|
+
if (complexity < warningThreshold)
|
|
81
|
+
return null;
|
|
82
|
+
const violationSeverity = complexity >= errorThreshold ? 'error' : 'warning';
|
|
83
|
+
const effectiveThreshold = violationSeverity === 'error' ? errorThreshold : warningThreshold;
|
|
84
|
+
// Human-friendly messages
|
|
85
|
+
const message = metricType === 'cyclomatic'
|
|
86
|
+
? `Needs ~${complexity} test cases for full coverage (threshold: ${Math.round(effectiveThreshold)})`
|
|
87
|
+
: `Mental load ${complexity} exceeds threshold ${Math.round(effectiveThreshold)} (hard to follow)`;
|
|
88
|
+
return {
|
|
89
|
+
filepath: metadata.file,
|
|
90
|
+
startLine: metadata.startLine,
|
|
91
|
+
endLine: metadata.endLine,
|
|
92
|
+
symbolName: metadata.symbolName || 'unknown',
|
|
93
|
+
symbolType: metadata.symbolType,
|
|
94
|
+
language: metadata.language,
|
|
95
|
+
complexity,
|
|
96
|
+
threshold: Math.round(effectiveThreshold),
|
|
97
|
+
severity: violationSeverity,
|
|
98
|
+
message,
|
|
99
|
+
metricType,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Deduplicate and filter chunks to only function/method types.
|
|
104
|
+
* Handles potential index duplicates by tracking file+line ranges.
|
|
105
|
+
*/
|
|
106
|
+
getUniqueFunctionChunks(chunks) {
|
|
107
|
+
const seen = new Set();
|
|
108
|
+
const result = [];
|
|
109
|
+
for (const { metadata } of chunks) {
|
|
110
|
+
if (metadata.symbolType !== 'function' && metadata.symbolType !== 'method')
|
|
111
|
+
continue;
|
|
112
|
+
const key = `${metadata.file}:${metadata.startLine}-${metadata.endLine}`;
|
|
113
|
+
if (seen.has(key))
|
|
114
|
+
continue;
|
|
115
|
+
seen.add(key);
|
|
116
|
+
result.push(metadata);
|
|
117
|
+
}
|
|
118
|
+
return result;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Convert Halstead effort to time in minutes.
|
|
122
|
+
* Formula: Time (seconds) = Effort / 18 (Stroud number for mental discrimination)
|
|
123
|
+
* Time (minutes) = Effort / (18 * 60) = Effort / 1080
|
|
124
|
+
*/
|
|
125
|
+
effortToMinutes(effort) {
|
|
126
|
+
return effort / 1080;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Format minutes as human-readable time (e.g., "2h 30m" or "45m")
|
|
130
|
+
*/
|
|
131
|
+
formatTime(minutes) {
|
|
132
|
+
if (minutes >= 60) {
|
|
133
|
+
const hours = Math.floor(minutes / 60);
|
|
134
|
+
const mins = Math.round(minutes % 60);
|
|
135
|
+
return mins > 0 ? `${hours}h ${mins}m` : `${hours}h`;
|
|
136
|
+
}
|
|
137
|
+
return `${Math.round(minutes)}m`;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Create a Halstead violation if metrics exceed thresholds
|
|
141
|
+
*/
|
|
142
|
+
createHalsteadViolation(metadata, metricValue, threshold, metricType) {
|
|
143
|
+
const warningThreshold = threshold * SEVERITY.warning;
|
|
144
|
+
const errorThreshold = threshold * SEVERITY.error;
|
|
145
|
+
if (metricValue < warningThreshold)
|
|
146
|
+
return null;
|
|
147
|
+
const violationSeverity = metricValue >= errorThreshold ? 'error' : 'warning';
|
|
148
|
+
const effectiveThreshold = violationSeverity === 'error' ? errorThreshold : warningThreshold;
|
|
149
|
+
// For effort, show time in minutes; for bugs, show decimal with 2 places
|
|
150
|
+
let message;
|
|
151
|
+
if (metricType === 'halstead_effort') {
|
|
152
|
+
const timeMinutes = this.effortToMinutes(metricValue);
|
|
153
|
+
const thresholdMinutes = this.effortToMinutes(effectiveThreshold);
|
|
154
|
+
message = `Time to understand ~${this.formatTime(timeMinutes)} exceeds threshold ${this.formatTime(thresholdMinutes)}`;
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
message = `Estimated bugs ${metricValue.toFixed(2)} exceeds threshold ${effectiveThreshold.toFixed(1)}`;
|
|
158
|
+
}
|
|
159
|
+
const halsteadDetails = {
|
|
160
|
+
volume: metadata.halsteadVolume || 0,
|
|
161
|
+
difficulty: metadata.halsteadDifficulty || 0,
|
|
162
|
+
effort: metadata.halsteadEffort || 0,
|
|
163
|
+
bugs: metadata.halsteadBugs || 0,
|
|
164
|
+
};
|
|
165
|
+
// Store human-scale values for complexity/threshold:
|
|
166
|
+
// - halstead_effort: rounded to integer minutes for readability (typical values 60-300)
|
|
167
|
+
// - halstead_bugs: kept as decimal for precision (typical values < 5, e.g. 1.5, 2.27)
|
|
168
|
+
let complexity;
|
|
169
|
+
let displayThreshold;
|
|
170
|
+
if (metricType === 'halstead_effort') {
|
|
171
|
+
// Convert raw effort to minutes and round for comparable deltas
|
|
172
|
+
complexity = Math.round(this.effortToMinutes(metricValue));
|
|
173
|
+
displayThreshold = Math.round(this.effortToMinutes(effectiveThreshold));
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
// halstead_bugs: store as decimal for precision in small values
|
|
177
|
+
complexity = metricValue;
|
|
178
|
+
displayThreshold = effectiveThreshold;
|
|
179
|
+
}
|
|
180
|
+
return {
|
|
181
|
+
filepath: metadata.file,
|
|
182
|
+
startLine: metadata.startLine,
|
|
183
|
+
endLine: metadata.endLine,
|
|
184
|
+
symbolName: metadata.symbolName || 'unknown',
|
|
185
|
+
symbolType: metadata.symbolType,
|
|
186
|
+
language: metadata.language,
|
|
187
|
+
complexity,
|
|
188
|
+
threshold: displayThreshold,
|
|
189
|
+
severity: violationSeverity,
|
|
190
|
+
message,
|
|
191
|
+
metricType,
|
|
192
|
+
halsteadDetails,
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Check complexity metrics and create violations for a single chunk.
|
|
197
|
+
*/
|
|
198
|
+
checkChunkComplexity(metadata, thresholds) {
|
|
199
|
+
const violations = [];
|
|
200
|
+
// Check test paths (cyclomatic complexity)
|
|
201
|
+
if (metadata.complexity) {
|
|
202
|
+
const v = this.createViolation(metadata, metadata.complexity, thresholds.testPaths, 'cyclomatic');
|
|
203
|
+
if (v)
|
|
204
|
+
violations.push(v);
|
|
205
|
+
}
|
|
206
|
+
// Check mental load (cognitive complexity)
|
|
207
|
+
if (metadata.cognitiveComplexity) {
|
|
208
|
+
const v = this.createViolation(metadata, metadata.cognitiveComplexity, thresholds.mentalLoad, 'cognitive');
|
|
209
|
+
if (v)
|
|
210
|
+
violations.push(v);
|
|
211
|
+
}
|
|
212
|
+
// Check time to understand (Halstead effort)
|
|
213
|
+
if (thresholds.halsteadEffort && metadata.halsteadEffort) {
|
|
214
|
+
const v = this.createHalsteadViolation(metadata, metadata.halsteadEffort, thresholds.halsteadEffort, 'halstead_effort');
|
|
215
|
+
if (v)
|
|
216
|
+
violations.push(v);
|
|
217
|
+
}
|
|
218
|
+
// Check estimated bugs
|
|
219
|
+
if (thresholds.estimatedBugs && metadata.halsteadBugs) {
|
|
220
|
+
const v = this.createHalsteadViolation(metadata, metadata.halsteadBugs, thresholds.estimatedBugs, 'halstead_bugs');
|
|
221
|
+
if (v)
|
|
222
|
+
violations.push(v);
|
|
223
|
+
}
|
|
224
|
+
return violations;
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Convert time in minutes to Halstead effort.
|
|
228
|
+
* This is the inverse of effortToMinutes().
|
|
229
|
+
* Formula: Time (seconds) = Effort / 18 (Stroud number)
|
|
230
|
+
* So: Effort = Time (minutes) * 60 * 18 = Time * 1080
|
|
231
|
+
*/
|
|
232
|
+
minutesToEffort(minutes) {
|
|
233
|
+
return minutes * 1080;
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Find all complexity violations based on thresholds.
|
|
237
|
+
* Checks cyclomatic, cognitive, and Halstead complexity.
|
|
238
|
+
*/
|
|
239
|
+
findViolations(chunks) {
|
|
240
|
+
const configThresholds = this.config.complexity?.thresholds;
|
|
241
|
+
// Convert timeToUnderstandMinutes to effort internally
|
|
242
|
+
const halsteadEffort = configThresholds?.timeToUnderstandMinutes
|
|
243
|
+
? this.minutesToEffort(configThresholds.timeToUnderstandMinutes)
|
|
244
|
+
: this.minutesToEffort(60); // Default: 60 minutes = 64,800 effort
|
|
245
|
+
const thresholds = {
|
|
246
|
+
testPaths: configThresholds?.testPaths ?? 15,
|
|
247
|
+
mentalLoad: configThresholds?.mentalLoad ?? 15,
|
|
248
|
+
halsteadEffort, // Converted from minutes to effort internally (see above)
|
|
249
|
+
estimatedBugs: configThresholds?.estimatedBugs ?? 1.5, // Direct decimal value (no conversion needed)
|
|
250
|
+
};
|
|
251
|
+
const functionChunks = this.getUniqueFunctionChunks(chunks);
|
|
252
|
+
return functionChunks.flatMap(metadata => this.checkChunkComplexity(metadata, thresholds));
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Build the final report with summary and per-file data
|
|
256
|
+
*/
|
|
257
|
+
buildReport(violations, allChunks) {
|
|
258
|
+
// Normalize violation filepaths and group by normalized path
|
|
259
|
+
const fileViolationsMap = new Map();
|
|
260
|
+
for (const violation of violations) {
|
|
261
|
+
const normalizedPath = this.normalizeFilePath(violation.filepath);
|
|
262
|
+
// Update violation's filepath to normalized form
|
|
263
|
+
violation.filepath = normalizedPath;
|
|
264
|
+
const existing = fileViolationsMap.get(normalizedPath) || [];
|
|
265
|
+
existing.push(violation);
|
|
266
|
+
fileViolationsMap.set(normalizedPath, existing);
|
|
267
|
+
}
|
|
268
|
+
// Get unique files from all analyzed chunks, normalized to relative paths
|
|
269
|
+
const analyzedFiles = new Set(allChunks.map(c => this.normalizeFilePath(c.metadata.file)));
|
|
270
|
+
// Build file data
|
|
271
|
+
const files = {};
|
|
272
|
+
for (const filepath of analyzedFiles) {
|
|
273
|
+
const fileViolations = fileViolationsMap.get(filepath) || [];
|
|
274
|
+
files[filepath] = {
|
|
275
|
+
violations: fileViolations,
|
|
276
|
+
dependents: [], // Will be enriched later if needed
|
|
277
|
+
testAssociations: [], // Will be enriched later if needed
|
|
278
|
+
riskLevel: this.calculateRiskLevel(fileViolations),
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
// Calculate summary statistics
|
|
282
|
+
const errorCount = violations.filter(v => v.severity === 'error').length;
|
|
283
|
+
const warningCount = violations.filter(v => v.severity === 'warning').length;
|
|
284
|
+
// Calculate average and max complexity from all chunks with complexity data
|
|
285
|
+
const complexityValues = allChunks
|
|
286
|
+
.filter(c => c.metadata.complexity !== undefined && c.metadata.complexity > 0)
|
|
287
|
+
.map(c => c.metadata.complexity);
|
|
288
|
+
const avgComplexity = complexityValues.length > 0
|
|
289
|
+
? complexityValues.reduce((sum, val) => sum + val, 0) / complexityValues.length
|
|
290
|
+
: 0;
|
|
291
|
+
const maxComplexity = complexityValues.length > 0
|
|
292
|
+
? Math.max(...complexityValues)
|
|
293
|
+
: 0;
|
|
294
|
+
return {
|
|
295
|
+
summary: {
|
|
296
|
+
filesAnalyzed: analyzedFiles.size,
|
|
297
|
+
totalViolations: violations.length,
|
|
298
|
+
bySeverity: { error: errorCount, warning: warningCount },
|
|
299
|
+
avgComplexity: Math.round(avgComplexity * 10) / 10, // Round to 1 decimal
|
|
300
|
+
maxComplexity,
|
|
301
|
+
},
|
|
302
|
+
files,
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Calculate risk level based on violations
|
|
307
|
+
*/
|
|
308
|
+
calculateRiskLevel(violations) {
|
|
309
|
+
if (violations.length === 0)
|
|
310
|
+
return 'low';
|
|
311
|
+
const hasErrors = violations.some(v => v.severity === 'error');
|
|
312
|
+
const errorCount = violations.filter(v => v.severity === 'error').length;
|
|
313
|
+
if (errorCount >= 3)
|
|
314
|
+
return 'critical';
|
|
315
|
+
if (hasErrors)
|
|
316
|
+
return 'high';
|
|
317
|
+
if (violations.length >= 3)
|
|
318
|
+
return 'medium';
|
|
319
|
+
return 'low';
|
|
320
|
+
}
|
|
321
|
+
/**
|
|
322
|
+
* Enrich files with violations with dependency data
|
|
323
|
+
* This adds:
|
|
324
|
+
* - List of dependent files (who imports this?)
|
|
325
|
+
* - Boosted risk level based on dependents + complexity
|
|
326
|
+
*/
|
|
327
|
+
enrichWithDependencies(report, allChunks) {
|
|
328
|
+
const workspaceRoot = process.cwd();
|
|
329
|
+
// Only enrich files that have violations (to save computation)
|
|
330
|
+
const filesWithViolations = Object.entries(report.files)
|
|
331
|
+
.filter(([_, data]) => data.violations.length > 0)
|
|
332
|
+
.map(([filepath, _]) => filepath);
|
|
333
|
+
for (const filepath of filesWithViolations) {
|
|
334
|
+
const fileData = report.files[filepath];
|
|
335
|
+
// Analyze dependencies for this file
|
|
336
|
+
const depAnalysis = analyzeDependencies(filepath, allChunks, workspaceRoot);
|
|
337
|
+
// Update file data with dependency information
|
|
338
|
+
fileData.dependents = depAnalysis.dependents.map(d => d.filepath);
|
|
339
|
+
fileData.dependentCount = depAnalysis.dependentCount;
|
|
340
|
+
// Boost risk level based on dependency analysis
|
|
341
|
+
// Take the higher of the two risk levels
|
|
342
|
+
if (RISK_ORDER[depAnalysis.riskLevel] > RISK_ORDER[fileData.riskLevel]) {
|
|
343
|
+
fileData.riskLevel = depAnalysis.riskLevel;
|
|
344
|
+
}
|
|
345
|
+
// Add complexity metrics if available
|
|
346
|
+
if (depAnalysis.complexityMetrics) {
|
|
347
|
+
fileData.dependentComplexityMetrics = {
|
|
348
|
+
averageComplexity: depAnalysis.complexityMetrics.averageComplexity,
|
|
349
|
+
maxComplexity: depAnalysis.complexityMetrics.maxComplexity,
|
|
350
|
+
filesWithComplexityData: depAnalysis.complexityMetrics.filesWithComplexityData,
|
|
351
|
+
};
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
//# sourceMappingURL=complexity-analyzer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"complexity-analyzer.js","sourceRoot":"","sources":["../../src/insights/complexity-analyzer.ts"],"names":[],"mappings":"AAEA,OAAO,EAA6D,UAAU,EAA8B,MAAM,YAAY,CAAC;AAE/H,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AAGxE;;;;GAIG;AACH,MAAM,QAAQ,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAW,CAAC;AAEvD;;GAEG;AACH,MAAM,OAAO,kBAAkB;IAEnB;IACA;IAFV,YACU,QAAkB,EAClB,MAAkB;QADlB,aAAQ,GAAR,QAAQ,CAAU;QAClB,WAAM,GAAN,MAAM,CAAY;IACzB,CAAC;IAEJ;;;;OAIG;IACH,KAAK,CAAC,OAAO,CAAC,KAAgB;QAC5B,uEAAuE;QACvE,iFAAiF;QACjF,2DAA2D;QAC3D,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QAEhD,2CAA2C;QAC3C,MAAM,MAAM,GAAG,KAAK;YAClB,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACpE,CAAC,CAAC,SAAS,CAAC;QAEd,0CAA0C;QAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAE/C,6FAA6F;QAC7F,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAEpD,uDAAuD;QACvD,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,SAA2B,CAAC,CAAC;QAEjE,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;OAGG;IACK,iBAAiB,CAAC,QAAgB;QACxC,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QACpC,mCAAmC;QACnC,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAChD,MAAM,cAAc,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAEzD,qCAAqC;QACrC,IAAI,UAAU,CAAC,UAAU,CAAC,cAAc,GAAG,GAAG,CAAC,EAAE,CAAC;YAChD,OAAO,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACrD,CAAC;QACD,IAAI,UAAU,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YAC1C,OAAO,UAAU,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;;OAGG;IACK,cAAc,CAAC,SAAiB,EAAE,WAAqB;QAC7D,8DAA8D;QAC9D,mEAAmE;QACnE,MAAM,mBAAmB,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC1D,OAAO,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YAC/B,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YACpD,sDAAsD;YACtD,OAAO,mBAAmB,KAAK,gBAAgB;gBACxC,mBAAmB,CAAC,QAAQ,CAAC,GAAG,GAAG,gBAAgB,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,eAAe,CACrB,QAAuB,EACvB,UAAkB,EAClB,aAAqB,EACrB,UAA6C;QAE7C,MAAM,gBAAgB,GAAG,aAAa,GAAG,QAAQ,CAAC,OAAO,CAAC;QAC1D,MAAM,cAAc,GAAG,aAAa,GAAG,QAAQ,CAAC,KAAK,CAAC;QAEtD,IAAI,UAAU,GAAG,gBAAgB;YAAE,OAAO,IAAI,CAAC;QAE/C,MAAM,iBAAiB,GAAG,UAAU,IAAI,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7E,MAAM,kBAAkB,GAAG,iBAAiB,KAAK,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,gBAAgB,CAAC;QAE7F,0BAA0B;QAC1B,MAAM,OAAO,GAAG,UAAU,KAAK,YAAY;YACzC,CAAC,CAAC,UAAU,UAAU,6CAA6C,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,GAAG;YACpG,CAAC,CAAC,eAAe,UAAU,sBAAsB,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,mBAAmB,CAAC;QAErG,OAAO;YACL,QAAQ,EAAE,QAAQ,CAAC,IAAI;YACvB,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,UAAU,EAAE,QAAQ,CAAC,UAAU,IAAI,SAAS;YAC5C,UAAU,EAAE,QAAQ,CAAC,UAAmC;YACxD,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,UAAU;YACV,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC;YACzC,QAAQ,EAAE,iBAAiB;YAC3B,OAAO;YACP,UAAU;SACX,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,uBAAuB,CAC7B,MAA2D;QAE3D,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,MAAM,MAAM,GAAoB,EAAE,CAAC;QAEnC,KAAK,MAAM,EAAE,QAAQ,EAAE,IAAI,MAAM,EAAE,CAAC;YAClC,IAAI,QAAQ,CAAC,UAAU,KAAK,UAAU,IAAI,QAAQ,CAAC,UAAU,KAAK,QAAQ;gBAAE,SAAS;YAErF,MAAM,GAAG,GAAG,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACzE,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,SAAS;YAE5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACxB,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACK,eAAe,CAAC,MAAc;QACpC,OAAO,MAAM,GAAG,IAAI,CAAC;IACvB,CAAC;IAED;;OAEG;IACK,UAAU,CAAC,OAAe;QAChC,IAAI,OAAO,IAAI,EAAE,EAAE,CAAC;YAClB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;YACvC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;YACtC,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC;QACvD,CAAC;QACD,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;IACnC,CAAC;IAED;;OAEG;IACK,uBAAuB,CAC7B,QAAuB,EACvB,WAAmB,EACnB,SAAiB,EACjB,UAA+C;QAE/C,MAAM,gBAAgB,GAAG,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC;QACtD,MAAM,cAAc,GAAG,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC;QAElD,IAAI,WAAW,GAAG,gBAAgB;YAAE,OAAO,IAAI,CAAC;QAEhD,MAAM,iBAAiB,GAAG,WAAW,IAAI,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QAC9E,MAAM,kBAAkB,GAAG,iBAAiB,KAAK,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,gBAAgB,CAAC;QAE7F,yEAAyE;QACzE,IAAI,OAAe,CAAC;QACpB,IAAI,UAAU,KAAK,iBAAiB,EAAE,CAAC;YACrC,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;YACtD,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC;YAClE,OAAO,GAAG,uBAAuB,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,sBAAsB,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACzH,CAAC;aAAM,CAAC;YACN,OAAO,GAAG,kBAAkB,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAsB,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1G,CAAC;QAED,MAAM,eAAe,GAAoB;YACvC,MAAM,EAAE,QAAQ,CAAC,cAAc,IAAI,CAAC;YACpC,UAAU,EAAE,QAAQ,CAAC,kBAAkB,IAAI,CAAC;YAC5C,MAAM,EAAE,QAAQ,CAAC,cAAc,IAAI,CAAC;YACpC,IAAI,EAAE,QAAQ,CAAC,YAAY,IAAI,CAAC;SACjC,CAAC;QAEF,qDAAqD;QACrD,wFAAwF;QACxF,sFAAsF;QACtF,IAAI,UAAkB,CAAC;QACvB,IAAI,gBAAwB,CAAC;QAC7B,IAAI,UAAU,KAAK,iBAAiB,EAAE,CAAC;YACrC,gEAAgE;YAChE,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC;YAC3D,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC1E,CAAC;aAAM,CAAC;YACN,gEAAgE;YAChE,UAAU,GAAG,WAAW,CAAC;YACzB,gBAAgB,GAAG,kBAAkB,CAAC;QACxC,CAAC;QAED,OAAO;YACL,QAAQ,EAAE,QAAQ,CAAC,IAAI;YACvB,SAAS,EAAE,QAAQ,CAAC,SAAS;YAC7B,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,UAAU,EAAE,QAAQ,CAAC,UAAU,IAAI,SAAS;YAC5C,UAAU,EAAE,QAAQ,CAAC,UAAmC;YACxD,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,UAAU;YACV,SAAS,EAAE,gBAAgB;YAC3B,QAAQ,EAAE,iBAAiB;YAC3B,OAAO;YACP,UAAU;YACV,eAAe;SAChB,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,oBAAoB,CAC1B,QAAuB,EACvB,UAAsG;QAEtG,MAAM,UAAU,GAA0B,EAAE,CAAC;QAE7C,2CAA2C;QAC3C,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC;YACxB,MAAM,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;YAClG,IAAI,CAAC;gBAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;QAED,2CAA2C;QAC3C,IAAI,QAAQ,CAAC,mBAAmB,EAAE,CAAC;YACjC,MAAM,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,mBAAmB,EAAE,UAAU,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;YAC3G,IAAI,CAAC;gBAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;QAED,6CAA6C;QAC7C,IAAI,UAAU,CAAC,cAAc,IAAI,QAAQ,CAAC,cAAc,EAAE,CAAC;YACzD,MAAM,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,CAAC,cAAc,EAAE,UAAU,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;YACxH,IAAI,CAAC;gBAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;QAED,uBAAuB;QACvB,IAAI,UAAU,CAAC,aAAa,IAAI,QAAQ,CAAC,YAAY,EAAE,CAAC;YACtD,MAAM,CAAC,GAAG,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;YACnH,IAAI,CAAC;gBAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5B,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;;;;OAKG;IACK,eAAe,CAAC,OAAe;QACrC,OAAO,OAAO,GAAG,IAAI,CAAC;IACxB,CAAC;IAED;;;OAGG;IACK,cAAc,CAAC,MAA2D;QAChF,MAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC;QAE5D,uDAAuD;QACvD,MAAM,cAAc,GAAG,gBAAgB,EAAE,uBAAuB;YAC9D,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,uBAAuB,CAAC;YAChE,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,sCAAsC;QAEpE,MAAM,UAAU,GAAG;YACjB,SAAS,EAAE,gBAAgB,EAAE,SAAS,IAAI,EAAE;YAC5C,UAAU,EAAE,gBAAgB,EAAE,UAAU,IAAI,EAAE;YAC9C,cAAc,EAAE,0DAA0D;YAC1E,aAAa,EAAE,gBAAgB,EAAE,aAAa,IAAI,GAAG,EAAE,8CAA8C;SACtG,CAAC;QACF,MAAM,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;QAE5D,OAAO,cAAc,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CACvC,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAChD,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,WAAW,CACjB,UAAiC,EACjC,SAA8D;QAE9D,6DAA6D;QAC7D,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAiC,CAAC;QACnE,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAClE,iDAAiD;YACjD,SAAS,CAAC,QAAQ,GAAG,cAAc,CAAC;YACpC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;YAC7D,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACzB,iBAAiB,CAAC,GAAG,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;QAClD,CAAC;QAED,0EAA0E;QAC1E,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAE3F,kBAAkB;QAClB,MAAM,KAAK,GAAuC,EAAE,CAAC;QACrD,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;YACrC,MAAM,cAAc,GAAG,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YAC7D,KAAK,CAAC,QAAQ,CAAC,GAAG;gBAChB,UAAU,EAAE,cAAc;gBAC1B,UAAU,EAAE,EAAE,EAAE,mCAAmC;gBACnD,gBAAgB,EAAE,EAAE,EAAE,mCAAmC;gBACzD,SAAS,EAAE,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC;aACnD,CAAC;QACJ,CAAC;QAED,+BAA+B;QAC/B,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;QACzE,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,MAAM,CAAC;QAE7E,4EAA4E;QAC5E,MAAM,gBAAgB,GAAG,SAAS;aAC/B,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,GAAG,CAAC,CAAC;aAC7E,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,UAAW,CAAC,CAAC;QAEpC,MAAM,aAAa,GAAG,gBAAgB,CAAC,MAAM,GAAG,CAAC;YAC/C,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,GAAG,gBAAgB,CAAC,MAAM;YAC/E,CAAC,CAAC,CAAC,CAAC;QAEN,MAAM,aAAa,GAAG,gBAAgB,CAAC,MAAM,GAAG,CAAC;YAC/C,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC;YAC/B,CAAC,CAAC,CAAC,CAAC;QAEN,OAAO;YACL,OAAO,EAAE;gBACP,aAAa,EAAE,aAAa,CAAC,IAAI;gBACjC,eAAe,EAAE,UAAU,CAAC,MAAM;gBAClC,UAAU,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE;gBACxD,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,qBAAqB;gBACzE,aAAa;aACd;YACD,KAAK;SACN,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,UAAiC;QAC1D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAE1C,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC;QAC/D,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC;QAEzE,IAAI,UAAU,IAAI,CAAC;YAAE,OAAO,UAAU,CAAC;QACvC,IAAI,SAAS;YAAE,OAAO,MAAM,CAAC;QAC7B,IAAI,UAAU,CAAC,MAAM,IAAI,CAAC;YAAE,OAAO,QAAQ,CAAC;QAC5C,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;OAKG;IACK,sBAAsB,CAC5B,MAAwB,EACxB,SAAyB;QAEzB,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAEpC,+DAA+D;QAC/D,MAAM,mBAAmB,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;aACrD,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;aACjD,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC;QAEpC,KAAK,MAAM,QAAQ,IAAI,mBAAmB,EAAE,CAAC;YAC3C,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAExC,qCAAqC;YACrC,MAAM,WAAW,GAAG,mBAAmB,CAAC,QAAQ,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;YAE5E,+CAA+C;YAC/C,QAAQ,CAAC,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAClE,QAAQ,CAAC,cAAc,GAAG,WAAW,CAAC,cAAc,CAAC;YAErD,gDAAgD;YAChD,yCAAyC;YACzC,IAAI,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBACvE,QAAQ,CAAC,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC;YAC7C,CAAC;YAED,sCAAsC;YACtC,IAAI,WAAW,CAAC,iBAAiB,EAAE,CAAC;gBAClC,QAAQ,CAAC,0BAA0B,GAAG;oBACpC,iBAAiB,EAAE,WAAW,CAAC,iBAAiB,CAAC,iBAAiB;oBAClE,aAAa,EAAE,WAAW,CAAC,iBAAiB,CAAC,aAAa;oBAC1D,uBAAuB,EAAE,WAAW,CAAC,iBAAiB,CAAC,uBAAuB;iBAC/E,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ComplexityReport } from '../types.js';
|
|
2
|
+
import { formatTextReport } from './text.js';
|
|
3
|
+
import { formatJsonReport } from './json.js';
|
|
4
|
+
import { formatSarifReport } from './sarif.js';
|
|
5
|
+
export type OutputFormat = 'text' | 'json' | 'sarif';
|
|
6
|
+
/**
|
|
7
|
+
* Format complexity report in the specified format
|
|
8
|
+
*/
|
|
9
|
+
export declare function formatReport(report: ComplexityReport, format: OutputFormat): string;
|
|
10
|
+
export { formatTextReport, formatJsonReport, formatSarifReport };
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/insights/formatters/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAErD;;GAEG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,YAAY,GACnB,MAAM,CAUR;AAGD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { formatTextReport } from './text.js';
|
|
2
|
+
import { formatJsonReport } from './json.js';
|
|
3
|
+
import { formatSarifReport } from './sarif.js';
|
|
4
|
+
/**
|
|
5
|
+
* Format complexity report in the specified format
|
|
6
|
+
*/
|
|
7
|
+
export function formatReport(report, format) {
|
|
8
|
+
switch (format) {
|
|
9
|
+
case 'json':
|
|
10
|
+
return formatJsonReport(report);
|
|
11
|
+
case 'sarif':
|
|
12
|
+
return formatSarifReport(report);
|
|
13
|
+
case 'text':
|
|
14
|
+
default:
|
|
15
|
+
return formatTextReport(report);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
// Export individual formatters
|
|
19
|
+
export { formatTextReport, formatJsonReport, formatSarifReport };
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/insights/formatters/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAI/C;;GAEG;AACH,MAAM,UAAU,YAAY,CAC1B,MAAwB,EACxB,MAAoB;IAEpB,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,MAAM;YACT,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAClC,KAAK,OAAO;YACV,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACnC,KAAK,MAAM,CAAC;QACZ;YACE,OAAO,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;AACH,CAAC;AAED,+BAA+B;AAC/B,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ComplexityReport } from '../types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Format complexity report as JSON for consumption by GitHub Action.
|
|
4
|
+
* Only includes files with violations to reduce noise.
|
|
5
|
+
*/
|
|
6
|
+
export declare function formatJsonReport(report: ComplexityReport): string;
|
|
7
|
+
//# sourceMappingURL=json.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../../src/insights/formatters/json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/C;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAYjE"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Format complexity report as JSON for consumption by GitHub Action.
|
|
3
|
+
* Only includes files with violations to reduce noise.
|
|
4
|
+
*/
|
|
5
|
+
export function formatJsonReport(report) {
|
|
6
|
+
// Filter to only files with violations - no point showing files with empty arrays
|
|
7
|
+
const filesWithViolations = Object.fromEntries(Object.entries(report.files).filter(([_, data]) => data.violations.length > 0));
|
|
8
|
+
const filteredReport = {
|
|
9
|
+
summary: report.summary,
|
|
10
|
+
files: filesWithViolations,
|
|
11
|
+
};
|
|
12
|
+
return JSON.stringify(filteredReport, null, 2);
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json.js","sourceRoot":"","sources":["../../../src/insights/formatters/json.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAwB;IACvD,kFAAkF;IAClF,MAAM,mBAAmB,GAAG,MAAM,CAAC,WAAW,CAC5C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAC/E,CAAC;IAEF,MAAM,cAAc,GAAqB;QACvC,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,KAAK,EAAE,mBAAmB;KAC3B,CAAC;IAEF,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACjD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sarif.d.ts","sourceRoot":"","sources":["../../../src/insights/formatters/sarif.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAyE/C;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAqGlE"}
|