tech-debt-score 0.1.8 → 0.1.10
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/dist/adapters/input/TypeScriptParser.d.ts +5 -0
- package/dist/adapters/input/TypeScriptParser.d.ts.map +1 -1
- package/dist/adapters/input/TypeScriptParser.js +15 -0
- package/dist/adapters/input/TypeScriptParser.js.map +1 -1
- package/dist/application/config/AnalysisConfig.d.ts.map +1 -1
- package/dist/application/config/AnalysisConfig.js +5 -0
- package/dist/application/config/AnalysisConfig.js.map +1 -1
- package/dist/application/services/AnalysisService.d.ts +0 -4
- package/dist/application/services/AnalysisService.d.ts.map +1 -1
- package/dist/application/services/AnalysisService.js +32 -35
- package/dist/application/services/AnalysisService.js.map +1 -1
- package/dist/application/services/DependencyAnalyzer.d.ts +5 -0
- package/dist/application/services/DependencyAnalyzer.d.ts.map +1 -1
- package/dist/application/services/DependencyAnalyzer.js +7 -0
- package/dist/application/services/DependencyAnalyzer.js.map +1 -1
- package/dist/application/services/DuplicationDetector.d.ts +5 -8
- package/dist/application/services/DuplicationDetector.d.ts.map +1 -1
- package/dist/application/services/DuplicationDetector.js +45 -75
- package/dist/application/services/DuplicationDetector.js.map +1 -1
- package/package.json +1 -1
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Input Adapter: TypeScript/JavaScript Parser
|
|
3
3
|
* Implements IParser using TypeScript Compiler API for AST-based analysis
|
|
4
4
|
*/
|
|
5
|
+
import * as ts from 'typescript';
|
|
5
6
|
import type { IParser, ParseResult } from '../../application/ports/IParser.js';
|
|
6
7
|
/**
|
|
7
8
|
* TypeScript Parser using native TypeScript Compiler API
|
|
@@ -9,6 +10,10 @@ import type { IParser, ParseResult } from '../../application/ports/IParser.js';
|
|
|
9
10
|
export declare class TypeScriptParser implements IParser {
|
|
10
11
|
supports(filePath: string): boolean;
|
|
11
12
|
parse(filePath: string, content: string): Promise<ParseResult>;
|
|
13
|
+
/**
|
|
14
|
+
* Parse an existing SourceFile (avoids re-parsing)
|
|
15
|
+
*/
|
|
16
|
+
parseSourceFile(sourceFile: ts.SourceFile, filePath: string): ParseResult;
|
|
12
17
|
/**
|
|
13
18
|
* Determine script kind from file extension
|
|
14
19
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypeScriptParser.d.ts","sourceRoot":"","sources":["../../../src/adapters/input/TypeScriptParser.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"TypeScriptParser.d.ts","sourceRoot":"","sources":["../../../src/adapters/input/TypeScriptParser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAwT/E;;GAEG;AACH,qBAAa,gBAAiB,YAAW,OAAO;IAC9C,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAO7B,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAqBpE;;OAEG;IACH,eAAe,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW;IAmBzE;;OAEG;IACH,OAAO,CAAC,aAAa;CAMtB"}
|
|
@@ -273,6 +273,21 @@ export class TypeScriptParser {
|
|
|
273
273
|
// Create source file from content
|
|
274
274
|
const sourceFile = ts.createSourceFile(filePath, content, ts.ScriptTarget.Latest, true, // setParentNodes
|
|
275
275
|
this.getScriptKind(filePath));
|
|
276
|
+
return this.parseSourceFile(sourceFile, filePath);
|
|
277
|
+
}
|
|
278
|
+
catch (error) {
|
|
279
|
+
return {
|
|
280
|
+
metrics: [],
|
|
281
|
+
success: false,
|
|
282
|
+
error: error instanceof Error ? error.message : 'Unknown parsing error',
|
|
283
|
+
};
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Parse an existing SourceFile (avoids re-parsing)
|
|
288
|
+
*/
|
|
289
|
+
parseSourceFile(sourceFile, filePath) {
|
|
290
|
+
try {
|
|
276
291
|
// Extract metrics using AST traversal
|
|
277
292
|
const extractor = new MetricExtractor(sourceFile, filePath);
|
|
278
293
|
const metrics = extractor.extract();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypeScriptParser.js","sourceRoot":"","sources":["../../../src/adapters/input/TypeScriptParser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAGjC,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAGhE;;GAEG;AACH,MAAM,eAAe;IAGnB,YACU,UAAyB,EACzB,QAAgB;QADhB,eAAU,GAAV,UAAU,CAAe;QACzB,aAAQ,GAAR,QAAQ,CAAQ;QAJlB,YAAO,GAAa,EAAE,CAAC;IAK5B,CAAC;IAgCJ;;OAEG;IACH,OAAO;QACL,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAElB,qBAAqB;QACrB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE1B,yBAAyB;QACzB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE5B,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;OAEG;IACK,kBAAkB;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;QAC9C,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC;QAE/B,qBAAqB;QACrB,IAAI,CAAC,OAAO,CAAC,IAAI,CACf,IAAI,aAAa,EAAE;aAChB,QAAQ,CAAC,aAAa,CAAC;aACvB,SAAS,CAAC,SAAS,CAAC;aACpB,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;aAC3B,KAAK,EAAE,CACX,CAAC;QAEF,4BAA4B;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM;YAC3C,CAAC,IAAI,CAAC,KAAK,CAAC,gCAAgC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QAC7E,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM;YAC5C,CAAC,IAAI,CAAC,KAAK,CAAC,iCAAiC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QAE/E,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YAClB,IAAI,CAAC,OAAO,CAAC,IAAI,CACf,IAAI,aAAa,EAAE;iBAChB,QAAQ,CAAC,eAAe,CAAC;iBACzB,SAAS,CAAC,SAAS,CAAC;iBACpB,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;iBAC3B,KAAK,EAAE,CACX,CAAC;QACJ,CAAC;QAED,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;YACnB,IAAI,CAAC,OAAO,CAAC,IAAI,CACf,IAAI,aAAa,EAAE;iBAChB,QAAQ,CAAC,gBAAgB,CAAC;iBAC1B,SAAS,CAAC,UAAU,CAAC;iBACrB,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;iBAC3B,KAAK,EAAE,CACX,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,IAAa;QACzB,mCAAmC;QACnC,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,sBAAsB,CAAC,IAAkC,CAAC,CAAC;QAClE,CAAC;QAED,sBAAsB;QACtB,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,IAAa;QAClC,OAAO,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC;YAC9B,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC;YAC5B,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC;YACxB,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC;YAC7B,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACK,sBAAsB,CAAC,IAAgC;QAC7D,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAExC,kBAAkB;QAClB,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,6BAA6B,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;QAC1F,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,6BAA6B,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;QACtF,MAAM,cAAc,GAAG,OAAO,GAAG,SAAS,GAAG,CAAC,CAAC;QAE/C,IAAI,CAAC,OAAO,CAAC,IAAI,CACf,IAAI,aAAa,EAAE;aAChB,QAAQ,CAAC,iBAAiB,CAAC;aAC3B,SAAS,CAAC,cAAc,CAAC;aACzB,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;aAC3B,WAAW,CAAC,YAAY,CAAC;aACzB,YAAY,CAAC,QAAQ,CAAC;aACtB,KAAK,EAAE,CACX,CAAC;QAEF,kBAAkB;QAClB,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QAC1C,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;YACnB,IAAI,CAAC,OAAO,CAAC,IAAI,CACf,IAAI,aAAa,EAAE;iBAChB,QAAQ,CAAC,iBAAiB,CAAC;iBAC3B,SAAS,CAAC,UAAU,CAAC;iBACrB,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;iBAC3B,WAAW,CAAC,YAAY,CAAC;iBACzB,YAAY,CAAC,QAAQ,CAAC;iBACtB,KAAK,EAAE,CACX,CAAC;QACJ,CAAC;QAED,wBAAwB;QACxB,MAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,OAAO,CAAC,IAAI,CACf,IAAI,aAAa,EAAE;aAChB,QAAQ,CAAC,uBAAuB,CAAC;aACjC,SAAS,CAAC,UAAU,CAAC;aACrB,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;aAC3B,WAAW,CAAC,YAAY,CAAC;aACzB,YAAY,CAAC,QAAQ,CAAC;aACtB,KAAK,EAAE,CACX,CAAC;QAEF,gBAAgB;QAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACjB,IAAI,CAAC,OAAO,CAAC,IAAI,CACf,IAAI,aAAa,EAAE;iBAChB,QAAQ,CAAC,eAAe,CAAC;iBACzB,SAAS,CAAC,QAAQ,CAAC;iBACnB,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;iBAC3B,WAAW,CAAC,YAAY,CAAC;iBACzB,YAAY,CAAC,QAAQ,CAAC;iBACtB,KAAK,EAAE,CACX,CAAC;QACJ,CAAC;QAED,0CAA0C;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,QAAQ,GAAG,CAAC,EAAE,CAAC;YACjB,IAAI,CAAC,OAAO,CAAC,IAAI,CACf,IAAI,aAAa,EAAE;iBAChB,QAAQ,CAAC,WAAW,CAAC;iBACrB,SAAS,CAAC,QAAQ,CAAC;iBACnB,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;iBAC3B,WAAW,CAAC,YAAY,CAAC;iBACzB,YAAY,CAAC,QAAQ,CAAC;iBACtB,KAAK,EAAE,CACX,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,mBAAmB,CAAC,IAAa;QACvC,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC,kBAAkB;QAEtC,MAAM,mBAAmB,GAAG,CAAC,CAAU,EAAQ,EAAE;YAC/C,IAAI,eAAe,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjD,UAAU,EAAE,CAAC;YACf,CAAC;iBAAM,IAAI,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpC,8BAA8B;gBAC9B,MAAM,EAAE,GAAG,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC;gBAChC,IAAI,EAAE,KAAK,EAAE,CAAC,UAAU,CAAC,uBAAuB;oBAC5C,EAAE,KAAK,EAAE,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;oBACrC,UAAU,EAAE,CAAC;gBACf,CAAC;YACH,CAAC;YAED,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAC;QAC1C,CAAC,CAAC;QAEF,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC1B,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;OAEG;IACK,qBAAqB,CAAC,IAAa;QACzC,IAAI,QAAQ,GAAG,CAAC,CAAC;QAEjB,MAAM,QAAQ,GAAG,CAAC,CAAU,EAAE,KAAa,EAAQ,EAAE;YACnD,IAAI,YAAY,GAAG,KAAK,CAAC;YAEzB,mEAAmE;YACnE,IAAI,eAAe,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9C,YAAY,EAAE,CAAC;gBACf,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;YAC9C,CAAC;YAED,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;QAC/D,CAAC,CAAC;QAEF,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAClB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,IAAgC;QACpD,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,mBAAmB;QACnB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpC,IAAI,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC7C,KAAK,EAAE,CAAC;YACV,CAAC;QACH,CAAC;QAED,oBAAoB;QACpB,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3C,KAAK,EAAE,CAAC;QACV,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACK,SAAS,CAAC,QAAqB;QACrC,OAAO,QAAQ,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;IACpD,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,IAAgC;QACtD,IAAI,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YAChD,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAC7B,CAAC;aAAM,IAAI,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACrD,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAC7B,CAAC;aAAM,IAAI,EAAE,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7C,OAAO,aAAa,CAAC;QACvB,CAAC;QACD,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,IAAa;QAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,6BAA6B,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC7E,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,6BAA6B,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAEzE,OAAO;YACL,SAAS,EAAE,KAAK,CAAC,IAAI,GAAG,CAAC;YACzB,OAAO,EAAE,GAAG,CAAC,IAAI,GAAG,CAAC;YACrB,WAAW,EAAE,KAAK,CAAC,SAAS;YAC5B,SAAS,EAAE,GAAG,CAAC,SAAS;SACzB,CAAC;IACJ,CAAC;;AArSD;;GAEG;AACqB,gCAAgB,GAAG,IAAI,GAAG,CAAgB;IAChE,EAAE,CAAC,UAAU,CAAC,WAAW;IACzB,EAAE,CAAC,UAAU,CAAC,YAAY;IAC1B,EAAE,CAAC,UAAU,CAAC,cAAc;IAC5B,EAAE,CAAC,UAAU,CAAC,cAAc;IAC5B,EAAE,CAAC,UAAU,CAAC,cAAc;IAC5B,EAAE,CAAC,UAAU,CAAC,WAAW;IACzB,EAAE,CAAC,UAAU,CAAC,UAAU;IACxB,EAAE,CAAC,UAAU,CAAC,qBAAqB;IACnC,EAAE,CAAC,UAAU,CAAC,WAAW;CAC1B,CAAC,AAVsC,CAUrC;AAEH;;GAEG;AACqB,6BAAa,GAAG,IAAI,GAAG,CAAgB;IAC7D,EAAE,CAAC,UAAU,CAAC,KAAK;IACnB,EAAE,CAAC,UAAU,CAAC,WAAW;IACzB,EAAE,CAAC,UAAU,CAAC,YAAY;IAC1B,EAAE,CAAC,UAAU,CAAC,cAAc;IAC5B,EAAE,CAAC,UAAU,CAAC,cAAc;IAC5B,EAAE,CAAC,UAAU,CAAC,cAAc;IAC5B,EAAE,CAAC,UAAU,CAAC,WAAW;IACzB,EAAE,CAAC,UAAU,CAAC,eAAe;IAC7B,EAAE,CAAC,UAAU,CAAC,YAAY;CAC3B,CAAC,AAVmC,CAUlC;AA4QL;;GAEG;AACH,MAAM,OAAO,gBAAgB;IAC3B,QAAQ,CAAC,QAAgB;QACvB,OAAO,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;YACxB,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;YACzB,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;YACxB,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,QAAgB,EAAE,OAAe;QAC3C,IAAI,CAAC;YACH,kCAAkC;YAClC,MAAM,UAAU,GAAG,EAAE,CAAC,gBAAgB,CACpC,QAAQ,EACR,OAAO,EACP,EAAE,CAAC,YAAY,CAAC,MAAM,EACtB,IAAI,EAAE,iBAAiB;YACvB,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAC7B,CAAC;YAEF,sCAAsC;YACtC,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAC5D,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;YAEpC,OAAO;gBACL,OAAO;gBACP,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,EAAE;gBACX,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,uBAAuB;aACxE,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,QAAgB;QACpC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;QACxD,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;QACxD,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;QACtD,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;IAC1B,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"TypeScriptParser.js","sourceRoot":"","sources":["../../../src/adapters/input/TypeScriptParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnalysisConfig.d.ts","sourceRoot":"","sources":["../../../src/application/config/AnalysisConfig.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,QAAQ,EAAE,MAAM,EAAE,CAAC;IAEnB;;;OAGG;IACH,MAAM,EAAE,MAAM,EAAE,CAAC;IAEjB;;;OAGG;IACH,OAAO,CAAC,EAAE;QACR,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"AnalysisConfig.d.ts","sourceRoot":"","sources":["../../../src/application/config/AnalysisConfig.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,QAAQ,EAAE,MAAM,EAAE,CAAC;IAEnB;;;OAGG;IACH,MAAM,EAAE,MAAM,EAAE,CAAC;IAEjB;;;OAGG;IACH,OAAO,CAAC,EAAE;QACR,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,WAAW,EAAE,MAAM,CAAC;QACpB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,UAAU,CAuB3D,CAAC"}
|
|
@@ -15,6 +15,11 @@ export const DEFAULT_CONFIG = {
|
|
|
15
15
|
'**/.git/**',
|
|
16
16
|
'**/.next/**',
|
|
17
17
|
'**/out/**',
|
|
18
|
+
'**/*.d.ts',
|
|
19
|
+
'**/*.test.{ts,tsx,js,jsx}',
|
|
20
|
+
'**/*.spec.{ts,tsx,js,jsx}',
|
|
21
|
+
'**/*.config.{ts,js,mjs,cjs}',
|
|
22
|
+
'**/.*rc.{ts,js,mjs,cjs}',
|
|
18
23
|
],
|
|
19
24
|
weights: {
|
|
20
25
|
complexity: 0.30,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnalysisConfig.js","sourceRoot":"","sources":["../../../src/application/config/AnalysisConfig.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAiCH;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAqC;IAC9D,QAAQ,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC;IACxD,MAAM,EAAE;QACN,oBAAoB;QACpB,YAAY;QACZ,aAAa;QACb,gBAAgB;QAChB,YAAY;QACZ,aAAa;QACb,WAAW;
|
|
1
|
+
{"version":3,"file":"AnalysisConfig.js","sourceRoot":"","sources":["../../../src/application/config/AnalysisConfig.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAiCH;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAqC;IAC9D,QAAQ,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC;IACxD,MAAM,EAAE;QACN,oBAAoB;QACpB,YAAY;QACZ,aAAa;QACb,gBAAgB;QAChB,YAAY;QACZ,aAAa;QACb,WAAW;QACX,WAAW;QACX,2BAA2B;QAC3B,2BAA2B;QAC3B,6BAA6B;QAC7B,yBAAyB;KAC1B;IACD,OAAO,EAAE;QACP,UAAU,EAAE,IAAI;QAChB,IAAI,EAAE,IAAI;QACV,UAAU,EAAE,IAAI;QAChB,WAAW,EAAE,IAAI;QACjB,SAAS,EAAE,IAAI;KAChB;CACF,CAAC"}
|
|
@@ -17,10 +17,6 @@ export declare class AnalysisService {
|
|
|
17
17
|
* Run the complete analysis workflow
|
|
18
18
|
*/
|
|
19
19
|
analyze(config: AnalysisConfig): Promise<AnalysisReport>;
|
|
20
|
-
/**
|
|
21
|
-
* Analyze dependencies and code duplication
|
|
22
|
-
*/
|
|
23
|
-
private analyzeAdvancedMetrics;
|
|
24
20
|
private getCategoryWeight;
|
|
25
21
|
/**
|
|
26
22
|
* Normalize weights so they sum to 1.0
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnalysisService.d.ts","sourceRoot":"","sources":["../../../src/application/services/AnalysisService.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"AnalysisService.d.ts","sourceRoot":"","sources":["../../../src/application/services/AnalysisService.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,OAAO,EAAe,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,+BAA+B,CAAC;AAM1D,qBAAa,eAAe;IAExB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAHR,UAAU,EAAE,WAAW,EACvB,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,IAAI,EAAE,EACb,QAAQ,EAAE,SAAS;IAGtC;;OAEG;IACG,OAAO,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IAmJ9D,OAAO,CAAC,iBAAiB;IAyBzB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;CAkBzB"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Application Service: Analysis Service
|
|
3
3
|
* Orchestrates the entire code analysis workflow
|
|
4
4
|
*/
|
|
5
|
+
import * as ts from 'typescript';
|
|
5
6
|
import { ScoreCalculator } from '../../domain/entities/Score.js';
|
|
6
7
|
export class AnalysisService {
|
|
7
8
|
constructor(fileReader, parser, rules, reporter) {
|
|
@@ -27,39 +28,60 @@ export class AnalysisService {
|
|
|
27
28
|
else {
|
|
28
29
|
console.log(` Found ${filePaths.length} files`);
|
|
29
30
|
}
|
|
31
|
+
// Initialize advanced analyzers
|
|
32
|
+
console.log('🔗 Initializing advanced analyzers...');
|
|
33
|
+
const { DependencyAnalyzer } = await import('./DependencyAnalyzer.js');
|
|
34
|
+
const { DuplicationDetector } = await import('./DuplicationDetector.js');
|
|
35
|
+
const depAnalyzer = new DependencyAnalyzer();
|
|
36
|
+
const dupDetector = new DuplicationDetector();
|
|
30
37
|
// 2. Read and parse files
|
|
31
|
-
console.log('🔍 Parsing files...');
|
|
38
|
+
console.log('🔍 Parsing and analyzing files...');
|
|
32
39
|
const allMetrics = [];
|
|
33
|
-
const fileContents = new Map();
|
|
34
40
|
let supportedFilesCount = 0;
|
|
35
41
|
for (const filePath of filePaths) {
|
|
36
42
|
try {
|
|
37
43
|
const fileResult = await this.fileReader.read(filePath);
|
|
38
|
-
fileContents.set(filePath, fileResult.content);
|
|
39
44
|
if (this.parser.supports(filePath)) {
|
|
40
45
|
supportedFilesCount++;
|
|
41
|
-
|
|
46
|
+
// Create AST once
|
|
47
|
+
const sourceFile = ts.createSourceFile(filePath, fileResult.content, ts.ScriptTarget.Latest, true);
|
|
48
|
+
// 1. Basic Metrics (Parser)
|
|
49
|
+
let parseResult;
|
|
50
|
+
// Optimistic cast to use optimization if available
|
|
51
|
+
if (typeof this.parser.parseSourceFile === 'function') {
|
|
52
|
+
parseResult = this.parser.parseSourceFile(sourceFile, filePath);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
parseResult = await this.parser.parse(filePath, fileResult.content);
|
|
56
|
+
}
|
|
42
57
|
if (parseResult.success) {
|
|
43
58
|
allMetrics.push(...parseResult.metrics);
|
|
44
59
|
}
|
|
45
60
|
else {
|
|
46
61
|
console.warn(` ⚠️ Failed to parse ${filePath}: ${parseResult.error}`);
|
|
47
62
|
}
|
|
63
|
+
// 2. Advanced Metrics (Dependencies & Duplication)
|
|
64
|
+
if (filePath.endsWith('.ts') || filePath.endsWith('.tsx') ||
|
|
65
|
+
filePath.endsWith('.js') || filePath.endsWith('.jsx')) {
|
|
66
|
+
depAnalyzer.analyzeSourceFile(sourceFile);
|
|
67
|
+
dupDetector.analyzeSourceFile(sourceFile);
|
|
68
|
+
}
|
|
48
69
|
}
|
|
49
70
|
}
|
|
50
71
|
catch (err) {
|
|
51
|
-
console.warn(` ⚠️ Error
|
|
72
|
+
console.warn(` ⚠️ Error processing ${filePath}: ${err instanceof Error ? err.message : String(err)}`);
|
|
52
73
|
}
|
|
53
74
|
}
|
|
54
75
|
if (filePaths.length > 0 && supportedFilesCount === 0) {
|
|
55
76
|
console.log(' ⚠️ None of the found files are supported by the parser (.ts, .js, etc)');
|
|
56
77
|
}
|
|
57
78
|
console.log(` Extracted ${allMetrics.length} metrics from ${supportedFilesCount} files`);
|
|
58
|
-
//
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
79
|
+
// Collect advanced metrics
|
|
80
|
+
const circularDeps = depAnalyzer.detectCircularDependencies();
|
|
81
|
+
allMetrics.push(...circularDeps);
|
|
82
|
+
const duplicates = dupDetector.detectDuplicates();
|
|
83
|
+
allMetrics.push(...duplicates);
|
|
84
|
+
console.log(` Added ${circularDeps.length + duplicates.length} advanced metrics`);
|
|
63
85
|
// 4. Apply rules and collect findings
|
|
64
86
|
console.log('📊 Applying rules...');
|
|
65
87
|
const allFindings = [];
|
|
@@ -107,31 +129,6 @@ export class AnalysisService {
|
|
|
107
129
|
await this.reporter.generate(report);
|
|
108
130
|
return report;
|
|
109
131
|
}
|
|
110
|
-
/**
|
|
111
|
-
* Analyze dependencies and code duplication
|
|
112
|
-
*/
|
|
113
|
-
async analyzeAdvancedMetrics(fileContents) {
|
|
114
|
-
const { DependencyAnalyzer } = await import('./DependencyAnalyzer.js');
|
|
115
|
-
const { DuplicationDetector } = await import('./DuplicationDetector.js');
|
|
116
|
-
const depAnalyzer = new DependencyAnalyzer();
|
|
117
|
-
const dupDetector = new DuplicationDetector();
|
|
118
|
-
const metrics = [];
|
|
119
|
-
// Analyze all files
|
|
120
|
-
for (const [filePath, content] of fileContents.entries()) {
|
|
121
|
-
if (filePath.endsWith('.ts') || filePath.endsWith('.tsx') ||
|
|
122
|
-
filePath.endsWith('.js') || filePath.endsWith('.jsx')) {
|
|
123
|
-
depAnalyzer.analyzeDependencies(filePath, content);
|
|
124
|
-
dupDetector.analyzeFile(filePath, content);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
// Detect circular dependencies
|
|
128
|
-
const circularDeps = depAnalyzer.detectCircularDependencies();
|
|
129
|
-
metrics.push(...circularDeps);
|
|
130
|
-
// Detect code duplication
|
|
131
|
-
const duplicates = dupDetector.detectDuplicates();
|
|
132
|
-
metrics.push(...duplicates);
|
|
133
|
-
return metrics;
|
|
134
|
-
}
|
|
135
132
|
getCategoryWeight(ruleId, config) {
|
|
136
133
|
const weights = config.weights ?? {
|
|
137
134
|
complexity: 0.30,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnalysisService.js","sourceRoot":"","sources":["../../../src/application/services/AnalysisService.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"AnalysisService.js","sourceRoot":"","sources":["../../../src/application/services/AnalysisService.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Application Service: Dependency Analyzer
|
|
3
3
|
* Analyzes import/require statements to detect circular dependencies
|
|
4
4
|
*/
|
|
5
|
+
import * as ts from 'typescript';
|
|
5
6
|
import type { Metric } from '../../domain/entities/Metric.js';
|
|
6
7
|
export declare class DependencyAnalyzer {
|
|
7
8
|
private dependencyGraph;
|
|
@@ -9,6 +10,10 @@ export declare class DependencyAnalyzer {
|
|
|
9
10
|
* Analyze files for import statements and build dependency graph
|
|
10
11
|
*/
|
|
11
12
|
analyzeDependencies(filePath: string, content: string): void;
|
|
13
|
+
/**
|
|
14
|
+
* Analyze an existing SourceFile
|
|
15
|
+
*/
|
|
16
|
+
analyzeSourceFile(sourceFile: ts.SourceFile): void;
|
|
12
17
|
/**
|
|
13
18
|
* Detect circular dependencies using DFS
|
|
14
19
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DependencyAnalyzer.d.ts","sourceRoot":"","sources":["../../../src/application/services/DependencyAnalyzer.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"DependencyAnalyzer.d.ts","sourceRoot":"","sources":["../../../src/application/services/DependencyAnalyzer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAQ9D,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,eAAe,CAA0C;IAEjE;;OAEG;IACH,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAU5D;;OAEG;IACH,iBAAiB,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,GAAG,IAAI;IA0BlD;;OAEG;IACH,0BAA0B,IAAI,MAAM,EAAE;IA0DtC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IA0BzB;;OAEG;IACH,OAAO,CAAC,WAAW;IAKnB;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd"}
|
|
@@ -14,6 +14,13 @@ export class DependencyAnalyzer {
|
|
|
14
14
|
*/
|
|
15
15
|
analyzeDependencies(filePath, content) {
|
|
16
16
|
const sourceFile = ts.createSourceFile(filePath, content, ts.ScriptTarget.Latest, true);
|
|
17
|
+
this.analyzeSourceFile(sourceFile);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Analyze an existing SourceFile
|
|
21
|
+
*/
|
|
22
|
+
analyzeSourceFile(sourceFile) {
|
|
23
|
+
const filePath = sourceFile.fileName;
|
|
17
24
|
const imports = [];
|
|
18
25
|
// Extract import statements
|
|
19
26
|
const visit = (node) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DependencyAnalyzer.js","sourceRoot":"","sources":["../../../src/application/services/DependencyAnalyzer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAOhE,MAAM,OAAO,kBAAkB;IAA/B;QACU,oBAAe,GAAgC,IAAI,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"DependencyAnalyzer.js","sourceRoot":"","sources":["../../../src/application/services/DependencyAnalyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* Application Service: Code Duplication Detector
|
|
3
3
|
* Detects duplicate code blocks using token-based similarity
|
|
4
4
|
*/
|
|
5
|
+
import * as ts from 'typescript';
|
|
5
6
|
import type { Metric } from '../../domain/entities/Metric.js';
|
|
6
7
|
export declare class DuplicationDetector {
|
|
7
8
|
private codeBlocks;
|
|
@@ -10,6 +11,10 @@ export declare class DuplicationDetector {
|
|
|
10
11
|
* Analyze file for code blocks
|
|
11
12
|
*/
|
|
12
13
|
analyzeFile(filePath: string, content: string): void;
|
|
14
|
+
/**
|
|
15
|
+
* Analyze an existing SourceFile
|
|
16
|
+
*/
|
|
17
|
+
analyzeSourceFile(sourceFile: ts.SourceFile): void;
|
|
13
18
|
/**
|
|
14
19
|
* Detect duplicates across all analyzed files
|
|
15
20
|
*/
|
|
@@ -22,14 +27,6 @@ export declare class DuplicationDetector {
|
|
|
22
27
|
* Simple tokenization (normalize whitespace)
|
|
23
28
|
*/
|
|
24
29
|
private tokenize;
|
|
25
|
-
/**
|
|
26
|
-
* Calculate similarity between two token strings
|
|
27
|
-
*/
|
|
28
|
-
private calculateSimilarity;
|
|
29
|
-
/**
|
|
30
|
-
* Calculate Levenshtein distance
|
|
31
|
-
*/
|
|
32
|
-
private levenshteinDistance;
|
|
33
30
|
/**
|
|
34
31
|
* Check if node is a function
|
|
35
32
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DuplicationDetector.d.ts","sourceRoot":"","sources":["../../../src/application/services/DuplicationDetector.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"DuplicationDetector.d.ts","sourceRoot":"","sources":["../../../src/application/services/DuplicationDetector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iCAAiC,CAAC;AAW9D,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAM;IAErC;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAUpD;;OAEG;IACH,iBAAiB,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,GAAG,IAAI;IAiBlD;;OAEG;IACH,gBAAgB,IAAI,MAAM,EAAE;IAyC5B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA6BxB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAQhB;;OAEG;IACH,OAAO,CAAC,cAAc;IAOtB;;OAEG;IACH,OAAO,CAAC,eAAe;IASvB;;OAEG;IACH,KAAK,IAAI,IAAI;CAGd"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Detects duplicate code blocks using token-based similarity
|
|
4
4
|
*/
|
|
5
5
|
import * as ts from 'typescript';
|
|
6
|
+
import { createHash } from 'node:crypto';
|
|
6
7
|
import { MetricBuilder } from '../../domain/entities/Metric.js';
|
|
7
8
|
export class DuplicationDetector {
|
|
8
9
|
constructor() {
|
|
@@ -14,11 +15,18 @@ export class DuplicationDetector {
|
|
|
14
15
|
*/
|
|
15
16
|
analyzeFile(filePath, content) {
|
|
16
17
|
const sourceFile = ts.createSourceFile(filePath, content, ts.ScriptTarget.Latest, true);
|
|
18
|
+
this.analyzeSourceFile(sourceFile);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Analyze an existing SourceFile
|
|
22
|
+
*/
|
|
23
|
+
analyzeSourceFile(sourceFile) {
|
|
24
|
+
const filePath = sourceFile.fileName;
|
|
17
25
|
// Extract function bodies as code blocks
|
|
18
26
|
const visit = (node) => {
|
|
19
27
|
if (this.isFunctionNode(node)) {
|
|
20
28
|
const block = this.extractCodeBlock(sourceFile, filePath, node);
|
|
21
|
-
if (block
|
|
29
|
+
if (block) {
|
|
22
30
|
this.codeBlocks.push(block);
|
|
23
31
|
}
|
|
24
32
|
}
|
|
@@ -31,40 +39,35 @@ export class DuplicationDetector {
|
|
|
31
39
|
*/
|
|
32
40
|
detectDuplicates() {
|
|
33
41
|
const metrics = [];
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
42
|
+
// Group blocks by hash
|
|
43
|
+
const hashMap = new Map();
|
|
44
|
+
for (const block of this.codeBlocks) {
|
|
45
|
+
const existing = hashMap.get(block.hash) || [];
|
|
46
|
+
existing.push(block);
|
|
47
|
+
hashMap.set(block.hash, existing);
|
|
48
|
+
}
|
|
49
|
+
// Find groups with > 1 element
|
|
50
|
+
for (const [hash, blocks] of hashMap.entries()) {
|
|
51
|
+
if (blocks.length > 1) {
|
|
52
|
+
// We found duplicates!
|
|
53
|
+
// To avoid exploding metrics, we report each instance as a duplication
|
|
54
|
+
// For the first instance, we can say it duplicates the others?
|
|
55
|
+
// Or simpler: For EACH block in the group, report it as a duplicate of the group.
|
|
56
|
+
for (const block of blocks) {
|
|
57
|
+
metrics.push(new MetricBuilder()
|
|
58
|
+
.withName('code-duplication')
|
|
59
|
+
.withValue(blocks.length - 1) // Number of OTHER copies
|
|
60
|
+
.withFilePath(block.filePath)
|
|
61
|
+
.withContext(block.functionName || 'code block')
|
|
62
|
+
.withLocation({
|
|
63
|
+
startLine: block.startLine,
|
|
64
|
+
endLine: block.endLine,
|
|
65
|
+
startColumn: 0,
|
|
66
|
+
endColumn: 0,
|
|
67
|
+
})
|
|
68
|
+
.build());
|
|
52
69
|
}
|
|
53
70
|
}
|
|
54
|
-
if (duplicateCount > 0) {
|
|
55
|
-
metrics.push(new MetricBuilder()
|
|
56
|
-
.withName('code-duplication')
|
|
57
|
-
.withValue(duplicateCount)
|
|
58
|
-
.withFilePath(block1.filePath)
|
|
59
|
-
.withContext(block1.functionName || 'code block')
|
|
60
|
-
.withLocation({
|
|
61
|
-
startLine: block1.startLine,
|
|
62
|
-
endLine: block1.endLine,
|
|
63
|
-
startColumn: 0,
|
|
64
|
-
endColumn: 0,
|
|
65
|
-
})
|
|
66
|
-
.build());
|
|
67
|
-
}
|
|
68
71
|
}
|
|
69
72
|
return metrics;
|
|
70
73
|
}
|
|
@@ -72,14 +75,20 @@ export class DuplicationDetector {
|
|
|
72
75
|
* Extract code block from function node
|
|
73
76
|
*/
|
|
74
77
|
extractCodeBlock(sourceFile, filePath, node) {
|
|
75
|
-
const start = sourceFile.getLineAndCharacterOfPosition(node.getStart());
|
|
76
|
-
const end = sourceFile.getLineAndCharacterOfPosition(node.getEnd());
|
|
77
78
|
// Tokenize the code (simple whitespace normalization)
|
|
78
79
|
const text = node.getText(sourceFile);
|
|
79
80
|
const tokens = this.tokenize(text);
|
|
81
|
+
// Check minimum size requirement (approximate token count check)
|
|
82
|
+
if (tokens.length < this.MIN_BLOCK_SIZE) {
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
const start = sourceFile.getLineAndCharacterOfPosition(node.getStart());
|
|
86
|
+
const end = sourceFile.getLineAndCharacterOfPosition(node.getEnd());
|
|
87
|
+
// Compute hash
|
|
88
|
+
const hash = createHash('md5').update(tokens).digest('hex');
|
|
80
89
|
return {
|
|
81
90
|
filePath,
|
|
82
|
-
|
|
91
|
+
hash,
|
|
83
92
|
startLine: start.line + 1,
|
|
84
93
|
endLine: end.line + 1,
|
|
85
94
|
functionName: this.getFunctionName(node),
|
|
@@ -95,45 +104,6 @@ export class DuplicationDetector {
|
|
|
95
104
|
.replace(/\/\/.*/g, '') // Remove line comments
|
|
96
105
|
.trim();
|
|
97
106
|
}
|
|
98
|
-
/**
|
|
99
|
-
* Calculate similarity between two token strings
|
|
100
|
-
*/
|
|
101
|
-
calculateSimilarity(tokens1, tokens2) {
|
|
102
|
-
if (tokens1 === tokens2)
|
|
103
|
-
return 1.0;
|
|
104
|
-
// Use Levenshtein distance for similarity
|
|
105
|
-
const len1 = tokens1.length;
|
|
106
|
-
const len2 = tokens2.length;
|
|
107
|
-
const maxLen = Math.max(len1, len2);
|
|
108
|
-
if (maxLen === 0)
|
|
109
|
-
return 1.0;
|
|
110
|
-
const distance = this.levenshteinDistance(tokens1, tokens2);
|
|
111
|
-
return 1 - distance / maxLen;
|
|
112
|
-
}
|
|
113
|
-
/**
|
|
114
|
-
* Calculate Levenshtein distance
|
|
115
|
-
*/
|
|
116
|
-
levenshteinDistance(str1, str2) {
|
|
117
|
-
const len1 = str1.length;
|
|
118
|
-
const len2 = str2.length;
|
|
119
|
-
const matrix = [];
|
|
120
|
-
for (let i = 0; i <= len1; i++) {
|
|
121
|
-
matrix[i] = [i];
|
|
122
|
-
}
|
|
123
|
-
for (let j = 0; j <= len2; j++) {
|
|
124
|
-
matrix[0][j] = j;
|
|
125
|
-
}
|
|
126
|
-
for (let i = 1; i <= len1; i++) {
|
|
127
|
-
for (let j = 1; j <= len2; j++) {
|
|
128
|
-
const cost = str1[i - 1] === str2[j - 1] ? 0 : 1;
|
|
129
|
-
matrix[i][j] = Math.min(matrix[i - 1][j] + 1, // deletion
|
|
130
|
-
matrix[i][j - 1] + 1, // insertion
|
|
131
|
-
matrix[i - 1][j - 1] + cost // substitution
|
|
132
|
-
);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
return matrix[len1][len2];
|
|
136
|
-
}
|
|
137
107
|
/**
|
|
138
108
|
* Check if node is a function
|
|
139
109
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DuplicationDetector.js","sourceRoot":"","sources":["../../../src/application/services/DuplicationDetector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"DuplicationDetector.js","sourceRoot":"","sources":["../../../src/application/services/DuplicationDetector.ts"],"names":[],"mappings":"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"}
|