tech-debt-score 0.1.5 → 0.1.6

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.
Files changed (48) hide show
  1. package/dist/adapters/input/FileSystemReader.d.ts.map +1 -1
  2. package/dist/adapters/input/FileSystemReader.js +4 -5
  3. package/dist/adapters/input/FileSystemReader.js.map +1 -1
  4. package/dist/adapters/output/TerminalReporter.d.ts.map +1 -1
  5. package/dist/adapters/output/TerminalReporter.js +8 -0
  6. package/dist/adapters/output/TerminalReporter.js.map +1 -1
  7. package/dist/application/config/AnalysisConfig.d.ts.map +1 -1
  8. package/dist/application/config/AnalysisConfig.js +10 -2
  9. package/dist/application/config/AnalysisConfig.js.map +1 -1
  10. package/dist/application/services/AnalysisService.d.ts.map +1 -1
  11. package/dist/application/services/AnalysisService.js +29 -11
  12. package/dist/application/services/AnalysisService.js.map +1 -1
  13. package/dist/cli/commands/analyze.d.ts.map +1 -1
  14. package/dist/cli/commands/analyze.js +8 -7
  15. package/dist/cli/commands/analyze.js.map +1 -1
  16. package/package.json +8 -2
  17. package/DEVELOPMENT.md +0 -147
  18. package/SETUP_COMPLETE.md +0 -188
  19. package/TECHNICAL_DESIGN.md +0 -563
  20. package/src/adapters/input/FileSystemReader.ts +0 -47
  21. package/src/adapters/input/TypeScriptParser.ts +0 -367
  22. package/src/adapters/output/JsonExporter.ts +0 -48
  23. package/src/adapters/output/TerminalReporter.ts +0 -94
  24. package/src/application/config/AnalysisConfig.ts +0 -58
  25. package/src/application/ports/IFileReader.ts +0 -36
  26. package/src/application/ports/IParser.ts +0 -40
  27. package/src/application/ports/IReporter.ts +0 -26
  28. package/src/application/services/AnalysisService.ts +0 -218
  29. package/src/application/services/DependencyAnalyzer.ts +0 -158
  30. package/src/application/services/DuplicationDetector.ts +0 -207
  31. package/src/cli/commands/analyze.ts +0 -77
  32. package/src/cli/index.ts +0 -81
  33. package/src/domain/entities/Finding.ts +0 -79
  34. package/src/domain/entities/Metric.ts +0 -70
  35. package/src/domain/entities/Rule.ts +0 -49
  36. package/src/domain/entities/Score.ts +0 -94
  37. package/src/domain/index.ts +0 -15
  38. package/src/domain/rules/CircularDependencyRule.ts +0 -65
  39. package/src/domain/rules/ComplexityRule.ts +0 -88
  40. package/src/domain/rules/DuplicationRule.ts +0 -70
  41. package/src/domain/rules/SizeRule.ts +0 -98
  42. package/src/domain/rules/TypeSafetyRule.ts +0 -63
  43. package/src/index.ts +0 -0
  44. package/src/shared/types.ts +0 -18
  45. package/tests/application/index.test.ts +0 -12
  46. package/tests/domain/index.test.ts +0 -14
  47. package/tests/e2e/index.test.ts +0 -13
  48. package/tsconfig.json +0 -31
@@ -1 +1 @@
1
- {"version":3,"file":"FileSystemReader.d.ts","sourceRoot":"","sources":["../../../src/adapters/input/FileSystemReader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAE1F,qBAAa,gBAAiB,YAAW,WAAW;IAC5C,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAoB/E,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAe/C,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;CAGhE"}
1
+ {"version":3,"file":"FileSystemReader.d.ts","sourceRoot":"","sources":["../../../src/adapters/input/FileSystemReader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,wCAAwC,CAAC;AAE1F,qBAAa,gBAAiB,YAAW,WAAW;IAC5C,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAgB/E,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAe/C,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;CAGhE"}
@@ -10,14 +10,13 @@ export class FileSystemReader {
10
10
  async scan(rootPath, patterns, ignore) {
11
11
  // Resolve the root path to absolute
12
12
  const absoluteRoot = resolve(rootPath);
13
- // Convert patterns to absolute paths relative to root
14
- const absolutePatterns = patterns.map(pattern => join(absoluteRoot, pattern));
15
- // Scan for files matching patterns
16
- const files = await fg(absolutePatterns, {
13
+ // Scan for files using cwd - this is more robust for glob matching
14
+ const files = await fg(patterns, {
15
+ cwd: absoluteRoot,
17
16
  ignore,
18
17
  absolute: true,
19
18
  onlyFiles: true,
20
- dot: false, // Don't include hidden files by default
19
+ dot: false,
21
20
  });
22
21
  return files;
23
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"FileSystemReader.js","sourceRoot":"","sources":["../../../src/adapters/input/FileSystemReader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,MAAM,WAAW,CAAC;AAG3B,MAAM,OAAO,gBAAgB;IAC3B,KAAK,CAAC,IAAI,CAAC,QAAgB,EAAE,QAAkB,EAAE,MAAgB;QAC/D,oCAAoC;QACpC,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QAEvC,sDAAsD;QACtD,MAAM,gBAAgB,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAC9C,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAC5B,CAAC;QAEF,mCAAmC;QACnC,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,gBAAgB,EAAE;YACvC,MAAM;YACN,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,IAAI;YACf,GAAG,EAAE,KAAK,EAAE,wCAAwC;SACrD,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAgB;QACzB,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAElC,OAAO;YACL,OAAO;YACP,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,WAAW,EAAE,KAAK,CAAC,MAAM;aAC1B;SACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,SAAmB;QACjC,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC;CACF"}
1
+ {"version":3,"file":"FileSystemReader.js","sourceRoot":"","sources":["../../../src/adapters/input/FileSystemReader.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,MAAM,WAAW,CAAC;AAG3B,MAAM,OAAO,gBAAgB;IAC3B,KAAK,CAAC,IAAI,CAAC,QAAgB,EAAE,QAAkB,EAAE,MAAgB;QAC/D,oCAAoC;QACpC,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QAEvC,mEAAmE;QACnE,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,QAAQ,EAAE;YAC/B,GAAG,EAAE,YAAY;YACjB,MAAM;YACN,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,IAAI;YACf,GAAG,EAAE,KAAK;SACX,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAgB;QACzB,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAElC,OAAO;YACL,OAAO;YACP,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,WAAW,EAAE,KAAK,CAAC,MAAM;aAC1B;SACF,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,SAAmB;QACjC,OAAO,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"TerminalReporter.d.ts","sourceRoot":"","sources":["../../../src/adapters/output/TerminalReporter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAEtF,qBAAa,gBAAiB,YAAW,SAAS;IAC1C,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAuDrD,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,aAAa;CAOtB"}
1
+ {"version":3,"file":"TerminalReporter.d.ts","sourceRoot":"","sources":["../../../src/adapters/output/TerminalReporter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AAEtF,qBAAa,gBAAiB,YAAW,SAAS;IAC1C,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IA6DrD,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,aAAa;CAOtB"}
@@ -48,6 +48,14 @@ export class TerminalReporter {
48
48
  }
49
49
  console.log('\n');
50
50
  }
51
+ else if (report.metadata.filesAnalyzed > 0) {
52
+ console.log('✨ No issues found! Your codebase looks clean.');
53
+ console.log('\n');
54
+ }
55
+ else {
56
+ console.log('❓ No files were analyzed. Check your configuration or directory.');
57
+ console.log('\n');
58
+ }
51
59
  console.log('═'.repeat(60));
52
60
  console.log('\n');
53
61
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TerminalReporter.js","sourceRoot":"","sources":["../../../src/adapters/output/TerminalReporter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TerminalReporter.js","sourceRoot":"","sources":["../../../src/adapters/output/TerminalReporter.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,CAU3D,CAAC"}
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,CAkB3D,CAAC"}
@@ -6,8 +6,16 @@
6
6
  * Default configuration values
7
7
  */
8
8
  export const DEFAULT_CONFIG = {
9
- patterns: ['src/**/*.ts', 'src/**/*.js'],
10
- ignore: ['node_modules', 'dist', 'build', 'coverage', '.git'],
9
+ patterns: ['**/*.ts', '**/*.tsx', '**/*.js', '**/*.jsx'],
10
+ ignore: [
11
+ '**/node_modules/**',
12
+ '**/dist/**',
13
+ '**/build/**',
14
+ '**/coverage/**',
15
+ '**/.git/**',
16
+ '**/.next/**',
17
+ '**/out/**',
18
+ ],
11
19
  weights: {
12
20
  complexity: 0.30,
13
21
  size: 0.25,
@@ -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,aAAa,EAAE,aAAa,CAAC;IACxC,MAAM,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC;IAC7D,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"}
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;KACZ;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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AnalysisService.d.ts","sourceRoot":"","sources":["../../../src/application/services/AnalysisService.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,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;IA8F9D;;OAEG;YACW,sBAAsB;IA4BpC,OAAO,CAAC,iBAAiB;IAyBzB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;CAkBzB"}
1
+ {"version":3,"file":"AnalysisService.d.ts","sourceRoot":"","sources":["../../../src/application/services/AnalysisService.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,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;IAiH9D;;OAEG;YACW,sBAAsB;IA4BpC,OAAO,CAAC,iBAAiB;IAyBzB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;CAkBzB"}
@@ -18,25 +18,43 @@ export class AnalysisService {
18
18
  // 1. Scan for files
19
19
  console.log('📁 Scanning files...');
20
20
  const filePaths = await this.fileReader.scan(config.rootPath, config.patterns, config.ignore);
21
- console.log(` Found ${filePaths.length} files`);
21
+ if (filePaths.length === 0) {
22
+ console.log(' ❌ No files found matching patterns.');
23
+ console.log(` Root: ${config.rootPath}`);
24
+ console.log(` Patterns: ${config.patterns.join(', ')}`);
25
+ console.log(' Check your directory structure and ensure files exist.');
26
+ }
27
+ else {
28
+ console.log(` Found ${filePaths.length} files`);
29
+ }
22
30
  // 2. Read and parse files
23
31
  console.log('🔍 Parsing files...');
24
32
  const allMetrics = [];
25
33
  const fileContents = new Map();
34
+ let supportedFilesCount = 0;
26
35
  for (const filePath of filePaths) {
27
- const fileResult = await this.fileReader.read(filePath);
28
- fileContents.set(filePath, fileResult.content);
29
- if (this.parser.supports(filePath)) {
30
- const parseResult = await this.parser.parse(filePath, fileResult.content);
31
- if (parseResult.success) {
32
- allMetrics.push(...parseResult.metrics);
33
- }
34
- else {
35
- console.warn(` ⚠️ Failed to parse ${filePath}: ${parseResult.error}`);
36
+ try {
37
+ const fileResult = await this.fileReader.read(filePath);
38
+ fileContents.set(filePath, fileResult.content);
39
+ if (this.parser.supports(filePath)) {
40
+ supportedFilesCount++;
41
+ const parseResult = await this.parser.parse(filePath, fileResult.content);
42
+ if (parseResult.success) {
43
+ allMetrics.push(...parseResult.metrics);
44
+ }
45
+ else {
46
+ console.warn(` ⚠️ Failed to parse ${filePath}: ${parseResult.error}`);
47
+ }
36
48
  }
37
49
  }
50
+ catch (err) {
51
+ console.warn(` ⚠️ Error reading ${filePath}: ${err instanceof Error ? err.message : String(err)}`);
52
+ }
53
+ }
54
+ if (filePaths.length > 0 && supportedFilesCount === 0) {
55
+ console.log(' ⚠️ None of the found files are supported by the parser (.ts, .js, etc)');
38
56
  }
39
- console.log(` Extracted ${allMetrics.length} metrics`);
57
+ console.log(` Extracted ${allMetrics.length} metrics from ${supportedFilesCount} files`);
40
58
  // 3. Analyze dependencies and duplication
41
59
  console.log('🔗 Analyzing dependencies and duplication...');
42
60
  const additionalMetrics = await this.analyzeAdvancedMetrics(fileContents);
@@ -1 +1 @@
1
- {"version":3,"file":"AnalysisService.js","sourceRoot":"","sources":["../../../src/application/services/AnalysisService.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAEjE,MAAM,OAAO,eAAe;IAC1B,YACmB,UAAuB,EACvB,MAAe,EACf,KAAa,EACb,QAAmB;QAHnB,eAAU,GAAV,UAAU,CAAa;QACvB,WAAM,GAAN,MAAM,CAAS;QACf,UAAK,GAAL,KAAK,CAAQ;QACb,aAAQ,GAAR,QAAQ,CAAW;IACnC,CAAC;IAEJ;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,MAAsB;QAClC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,oBAAoB;QACpB,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACpC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAC1C,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,MAAM,CACd,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,YAAY,SAAS,CAAC,MAAM,QAAQ,CAAC,CAAC;QAElD,0BAA0B;QAC1B,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACnC,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAkB,CAAC;QAE/C,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACxD,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;YAE/C,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACnC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;gBAC1E,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;oBACxB,UAAU,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;gBAC1C,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,IAAI,CAAC,0BAA0B,QAAQ,KAAK,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC3E,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,gBAAgB,UAAU,CAAC,MAAM,UAAU,CAAC,CAAC;QAEzD,0CAA0C;QAC1C,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;QAC5D,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC;QAC1E,UAAU,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,YAAY,iBAAiB,CAAC,MAAM,mBAAmB,CAAC,CAAC;QAErE,sCAAsC;QACtC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACpC,MAAM,WAAW,GAAc,EAAE,CAAC;QAClC,MAAM,iBAAiB,GAAoB,EAAE,CAAC;QAE9C,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YAC3C,WAAW,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;YAE9B,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YAC5C,iBAAiB,CAAC,IAAI,CAAC;gBACrB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,KAAK;gBACL,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC;gBAC/C,WAAW,EAAE,IAAI,CAAC,WAAW;aAC9B,CAAC,CAAC;QACL,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,gBAAgB,WAAW,CAAC,MAAM,WAAW,CAAC,CAAC;QAE3D,0EAA0E;QAC1E,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;QAEhE,6BAA6B;QAC7B,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QACvC,MAAM,YAAY,GAAG,eAAe,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;QAEtE,MAAM,UAAU,GAAU;YACxB,OAAO,EAAE,YAAY;YACrB,UAAU,EAAE,cAAc;YAC1B,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,QAAQ,EAAE;gBACR,aAAa,EAAE,SAAS,CAAC,MAAM;gBAC/B,YAAY,EAAE,UAAU,CAAC,MAAM;gBAC/B,aAAa,EAAE,WAAW,CAAC,MAAM;aAClC;SACF,CAAC;QAEF,oBAAoB;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;QACxC,MAAM,MAAM,GAAmB;YAC7B,KAAK,EAAE,UAAU;YACjB,QAAQ,EAAE,WAAW;YACrB,QAAQ,EAAE;gBACR,aAAa,EAAE,SAAS,CAAC,MAAM;gBAC/B,QAAQ;gBACR,SAAS,EAAE,IAAI,IAAI,EAAE;aACtB;SACF,CAAC;QAEF,qBAAqB;QACrB,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QACvC,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAErC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,sBAAsB,CAAC,YAAiC;QACpE,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;QACvE,MAAM,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAC;QAEzE,MAAM,WAAW,GAAG,IAAI,kBAAkB,EAAE,CAAC;QAC7C,MAAM,WAAW,GAAG,IAAI,mBAAmB,EAAE,CAAC;QAC9C,MAAM,OAAO,GAAa,EAAE,CAAC;QAE7B,oBAAoB;QACpB,KAAK,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,YAAY,CAAC,OAAO,EAAE,EAAE,CAAC;YACzD,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACrD,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1D,WAAW,CAAC,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACnD,WAAW,CAAC,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC7C,CAAC;QACH,CAAC;QAED,+BAA+B;QAC/B,MAAM,YAAY,GAAG,WAAW,CAAC,0BAA0B,EAAE,CAAC;QAC9D,OAAO,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,CAAC;QAE9B,0BAA0B;QAC1B,MAAM,UAAU,GAAG,WAAW,CAAC,gBAAgB,EAAE,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;QAE5B,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,iBAAiB,CAAC,MAAc,EAAE,MAAsB;QAC9D,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI;YAChC,UAAU,EAAE,IAAI;YAChB,IAAI,EAAE,IAAI;YACV,UAAU,EAAE,IAAI;YAChB,WAAW,EAAE,IAAI;YACjB,SAAS,EAAE,IAAI;SAChB,CAAC;QAEF,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,YAAY;gBACf,OAAO,OAAO,CAAC,UAAU,CAAC;YAC5B,KAAK,MAAM;gBACT,OAAO,OAAO,CAAC,IAAI,CAAC;YACtB,KAAK,aAAa;gBAChB,OAAO,OAAO,CAAC,UAAU,CAAC;YAC5B,KAAK,aAAa;gBAChB,OAAO,OAAO,CAAC,WAAW,CAAC;YAC7B,KAAK,qBAAqB;gBACxB,OAAO,OAAO,CAAC,SAAS,CAAC;YAC3B;gBACE,OAAO,IAAI,CAAC,CAAC,wCAAwC;QACzD,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,gBAAgB,CAAC,UAA2B;QAClD,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAEzE,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;YACtB,0CAA0C;YAC1C,MAAM,UAAU,GAAG,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC;YAC3C,OAAO,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;gBAC5B,GAAG,GAAG;gBACN,MAAM,EAAE,UAAU;aACnB,CAAC,CAAC,CAAC;QACN,CAAC;QAED,2BAA2B;QAC3B,OAAO,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC5B,GAAG,GAAG;YACN,MAAM,EAAE,GAAG,CAAC,MAAM,GAAG,WAAW;SACjC,CAAC,CAAC,CAAC;IACN,CAAC;CACF"}
1
+ {"version":3,"file":"AnalysisService.js","sourceRoot":"","sources":["../../../src/application/services/AnalysisService.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/analyze.ts"],"names":[],"mappings":"AAyBA,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkD7F"}
1
+ {"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/analyze.ts"],"names":[],"mappings":"AA0BA,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkD7F"}
@@ -1,4 +1,5 @@
1
1
  import { resolve } from 'node:path';
2
+ import { existsSync } from 'node:fs';
2
3
  import { AnalysisService } from '../../application/services/AnalysisService.js';
3
4
  import { FileSystemReader } from '../../adapters/input/FileSystemReader.js';
4
5
  import { TypeScriptParser } from '../../adapters/input/TypeScriptParser.js';
@@ -39,18 +40,18 @@ export async function analyzeCommand(rootPath, jsonOutputPath) {
39
40
  ];
40
41
  const analysisService = new AnalysisService(fileReader, parser, rules, reporter);
41
42
  // Build configuration
42
- // Smart pattern detection:
43
- // - If scanning CWD, default to looking in 'src/'
44
- // - If scanning a specific directory (e.g. ./src), look for files inside it
45
- const isCwd = resolve(rootPath) === process.cwd();
46
- const defaultPatterns = isCwd
47
- ? DEFAULT_CONFIG.patterns
48
- : ['**/*.ts', '**/*.tsx', '**/*.js', '**/*.jsx'];
43
+ // Use broad patterns by default and rely on ignore list for exclusions.
44
+ // This makes the tool structure-agnostic (works for src/, lib/, or root files).
45
+ const defaultPatterns = ['**/*.ts', '**/*.tsx', '**/*.js', '**/*.jsx'];
49
46
  const config = {
50
47
  rootPath,
51
48
  ...DEFAULT_CONFIG,
52
49
  patterns: defaultPatterns,
53
50
  };
51
+ // Log scan start for transparency
52
+ if (config.patterns.length > 0) {
53
+ console.log(`📂 Scanning for patterns: ${config.patterns.join(', ')}`);
54
+ }
54
55
  // Execute analysis
55
56
  await analysisService.analyze(config);
56
57
  console.log('✅ Analysis complete!\n');
@@ -1 +1 @@
1
- {"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../../src/cli/commands/analyze.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,+CAA+C,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAGrE,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAG5E,4CAA4C;AAC5C,MAAM,iBAAiB;IACrB,YAAoB,SAAsB;QAAtB,cAAS,GAAT,SAAS,CAAa;IAAG,CAAC;IAE9C,KAAK,CAAC,QAAQ,CAAC,MAAsB;QACnC,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACjE,CAAC;CACF;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,QAAgB,EAAE,cAAuB;IAC5E,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;IAExD,kEAAkE;IAClE,MAAM,UAAU,GAAG,IAAI,gBAAgB,EAAE,CAAC;IAC1C,MAAM,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;IAEtC,uCAAuC;IACvC,MAAM,QAAQ,GAAG,IAAI,iBAAiB,CAAC;QACrC,IAAI,gBAAgB,EAAE;QACtB,IAAI,YAAY,CAAC,cAAc,CAAC;KACjC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG;QACZ,YAAY;QAEZ,IAAI,cAAc,EAAE;QACpB,IAAI,QAAQ,EAAE;QACd,IAAI,cAAc,EAAE;QACpB,IAAI,eAAe,EAAE;QACrB,IAAI,sBAAsB,EAAE;KAC7B,CAAC;IAEF,MAAM,eAAe,GAAG,IAAI,eAAe,CACzC,UAAU,EACV,MAAM,EACN,KAAK,EACL,QAAQ,CACT,CAAC;IAEF,sBAAsB;IACtB,2BAA2B;IAC3B,kDAAkD;IAClD,4EAA4E;IAC5E,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC;IAElD,MAAM,eAAe,GAAG,KAAK;QAC3B,CAAC,CAAC,cAAc,CAAC,QAAQ;QACzB,CAAC,CAAC,CAAC,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IAEnD,MAAM,MAAM,GAAmB;QAC7B,QAAQ;QACR,GAAG,cAAc;QACjB,QAAQ,EAAE,eAAe;KAC1B,CAAC;IAEF,mBAAmB;IACnB,MAAM,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAEtC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;AACxC,CAAC"}
1
+ {"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../../src/cli/commands/analyze.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,+CAA+C,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAGrE,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,sCAAsC,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,8CAA8C,CAAC;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AAG5E,4CAA4C;AAC5C,MAAM,iBAAiB;IACrB,YAAoB,SAAsB;QAAtB,cAAS,GAAT,SAAS,CAAa;IAAG,CAAC;IAE9C,KAAK,CAAC,QAAQ,CAAC,MAAsB;QACnC,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACjE,CAAC;CACF;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,QAAgB,EAAE,cAAuB;IAC5E,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;IAExD,kEAAkE;IAClE,MAAM,UAAU,GAAG,IAAI,gBAAgB,EAAE,CAAC;IAC1C,MAAM,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;IAEtC,uCAAuC;IACvC,MAAM,QAAQ,GAAG,IAAI,iBAAiB,CAAC;QACrC,IAAI,gBAAgB,EAAE;QACtB,IAAI,YAAY,CAAC,cAAc,CAAC;KACjC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG;QACZ,YAAY;QAEZ,IAAI,cAAc,EAAE;QACpB,IAAI,QAAQ,EAAE;QACd,IAAI,cAAc,EAAE;QACpB,IAAI,eAAe,EAAE;QACrB,IAAI,sBAAsB,EAAE;KAC7B,CAAC;IAEF,MAAM,eAAe,GAAG,IAAI,eAAe,CACzC,UAAU,EACV,MAAM,EACN,KAAK,EACL,QAAQ,CACT,CAAC;IAEF,sBAAsB;IACtB,wEAAwE;IACxE,gFAAgF;IAChF,MAAM,eAAe,GAAG,CAAC,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IAEvE,MAAM,MAAM,GAAmB;QAC7B,QAAQ;QACR,GAAG,cAAc;QACjB,QAAQ,EAAE,eAAe;KAC1B,CAAC;IAEF,kCAAkC;IAClC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,6BAA6B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,mBAAmB;IACnB,MAAM,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAEtC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;AACxC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tech-debt-score",
3
- "version": "0.1.5",
3
+ "version": "0.1.6",
4
4
  "type": "module",
5
5
  "main": "dist/cli/index.js",
6
6
  "bin": {
@@ -11,8 +11,14 @@
11
11
  "dev": "tsc && node dist/cli/index.js",
12
12
  "analyze": "tsc && node dist/cli/index.js",
13
13
  "scan": "npm run build && node dist/cli/index.js .",
14
- "test": "echo \"Error: no test specified\" && exit 1"
14
+ "test": "echo \"Error: no test specified\" && exit 1",
15
+ "prepublishOnly": "npm run build"
15
16
  },
17
+ "files": [
18
+ "dist",
19
+ "README.md",
20
+ "LICENSE"
21
+ ],
16
22
  "repository": {
17
23
  "type": "git",
18
24
  "url": "git+https://github.com/panduken/tech-debt-score.git"
package/DEVELOPMENT.md DELETED
@@ -1,147 +0,0 @@
1
- # Development Guide
2
-
3
- ## Project Structure
4
-
5
- The project follows **Hexagonal Architecture** (Ports & Adapters pattern):
6
-
7
- ```
8
- src/
9
- ├── domain/ # ✅ Pure business logic (COMPLETE)
10
- │ ├── entities/ # Score, Metric, Rule, Finding
11
- │ └── rules/ # ComplexityRule, SizeRule, TypeSafetyRule
12
-
13
- ├── application/ # ✅ Use cases & orchestration (COMPLETE)
14
- │ ├── services/ # AnalysisService
15
- │ ├── ports/ # Interface definitions
16
- │ └── config/ # AnalysisConfig
17
-
18
- ├── adapters/ # 🚧 External integrations (PARTIAL)
19
- │ ├── input/ # FileSystemReader (TODO: implement scan)
20
- │ │ # TypeScriptParser (TODO: implement AST parsing)
21
- │ └── output/ # TerminalReporter, JsonExporter (COMPLETE)
22
-
23
- ├── cli/ # ✅ Command-line interface (COMPLETE)
24
- │ └── commands/ # analyze command
25
-
26
- └── shared/ # ✅ Shared types (COMPLETE)
27
- ```
28
-
29
- ## Current Status
30
-
31
- ### ✅ Completed
32
-
33
- - [x] Complete hexagonal architecture setup
34
- - [x] Domain layer (all entities and rules)
35
- - [x] Application layer (services, ports, config)
36
- - [x] CLI entry point and analyze command
37
- - [x] Output adapters (Terminal and JSON reporters)
38
- - [x] Build system configured and working
39
- - [x] TypeScript strict mode enabled
40
-
41
- ### 🚧 TODO - High Priority
42
-
43
- 1. **Implement FileSystemReader.scan()** (Currently returns empty array)
44
- - Use `fast-glob` or `glob` library
45
- - Implement file pattern matching
46
- - Respect ignore patterns
47
-
48
- 2. **Implement TypeScriptParser.parse()** (Currently only counts LOC)
49
- - Use `@typescript-eslint/parser` or TypeScript Compiler API
50
- - Extract all metrics:
51
- - Function length
52
- - Cyclomatic complexity
53
- - Nesting depth
54
- - Parameter count
55
- - `any` usage (TypeScript)
56
- - TODO/FIXME comments
57
-
58
- 3. **Add Dependencies**
59
-
60
- ```bash
61
- npm install fast-glob
62
- npm install @typescript-eslint/parser @typescript-eslint/typescript-estree
63
- ```
64
-
65
- 4. **Write Tests**
66
- - Domain layer unit tests (high priority)
67
- - Application layer integration tests
68
- - E2E tests with sample codebases
69
-
70
- ### 📋 TODO - Medium Priority
71
-
72
- - [ ] Add more sophisticated scoring algorithm
73
- - [ ] Implement code duplication detection
74
- - [ ] Add test coverage integration
75
- - [ ] Create configuration file support (`.tech-debt-score.json`)
76
- - [ ] Add CLI flags for customization
77
- - [ ] Better error handling and user feedback
78
-
79
- ### 🎯 TODO - Future Enhancements
80
-
81
- - [ ] Git integration for trend tracking
82
- - [ ] Additional output formats (HTML, Markdown)
83
- - [ ] VS Code extension
84
- - [ ] CI/CD examples (GitHub Actions, GitLab CI)
85
- - [ ] Multi-language support (Python, Go, Java)
86
-
87
- ## Quick Commands
88
-
89
- ```bash
90
- # Build the project
91
- npm run build
92
-
93
- # Run analysis (placeholder - needs implementation)
94
- npm run analyze
95
-
96
- # Run with specific path
97
- npm run dev -- ./path/to/code
98
-
99
- # Run tests (when implemented)
100
- npm test
101
- ```
102
-
103
- ## Architecture Guidelines
104
-
105
- ### Dependency Rule
106
-
107
- Dependencies point **inward only**:
108
-
109
- ```
110
- CLI → Application → Domain
111
-
112
- Adapters (depend on Domain interfaces)
113
- ```
114
-
115
- ### Domain Layer Rules
116
-
117
- - ❌ NO filesystem access
118
- - ❌ NO CLI dependencies
119
- - ❌ NO Node.js APIs
120
- - ❌ NO external libraries (except utilities)
121
- - ✅ Pure TypeScript/JavaScript logic only
122
- - ✅ 100% unit testable
123
-
124
- ### Testing Strategy
125
-
126
- 1. **Domain Tests**: No mocks needed, test pure logic
127
- 2. **Application Tests**: Use mock adapters
128
- 3. **E2E Tests**: Test with real codebases
129
-
130
- ## Next Steps
131
-
132
- 1. **Implement file scanning** - Get FileSystemReader working
133
- 2. **Implement AST parsing** - Extract real metrics from code
134
- 3. **Test with real code** - Run against this project itself!
135
- 4. **Write tests** - Start with domain layer
136
- 5. **Publish to npm** - Make it available for others
137
-
138
- ## Contributing
139
-
140
- When adding new features:
141
-
142
- 1. Start with domain layer (pure logic)
143
- 2. Define ports (interfaces) in application layer
144
- 3. Implement adapters for external dependencies
145
- 4. Wire everything together in CLI commands
146
-
147
- This ensures clean separation and testability!
package/SETUP_COMPLETE.md DELETED
@@ -1,188 +0,0 @@
1
- # Project Setup Complete! 🎉
2
-
3
- ## What Was Created
4
-
5
- Your **tech-debt-score** project now has a complete **Hexagonal Architecture** implementation with:
6
-
7
- ### ✅ Core Structure (20 files created)
8
-
9
- #### **Domain Layer** (Pure Business Logic - Zero Dependencies)
10
-
11
- - `src/domain/entities/`
12
- - `Metric.ts` - Core metric entity with builder pattern
13
- - `Finding.ts` - Issue representation with builder pattern
14
- - `Score.ts` - Score entity with calculator service
15
- - `Rule.ts` - Rule interface and base class
16
- - `src/domain/rules/`
17
- - `ComplexityRule.ts` - Evaluates cyclomatic complexity and nesting
18
- - `SizeRule.ts` - Evaluates file/function size and parameters
19
- - `TypeSafetyRule.ts` - Detects TypeScript `any` usage
20
-
21
- #### **Application Layer** (Orchestration)
22
-
23
- - `src/application/ports/` (Interfaces)
24
- - `IFileReader.ts` - File system abstraction
25
- - `IParser.ts` - AST parser abstraction
26
- - `IReporter.ts` - Output abstraction
27
-
28
- - `src/application/services/`
29
- - `AnalysisService.ts` - Main orchestration service
30
-
31
- - `src/application/config/`
32
- - `AnalysisConfig.ts` - Configuration with defaults
33
-
34
- #### **Adapters Layer** (External Integrations)
35
-
36
- - `src/adapters/input/`
37
- - `FileSystemReader.ts` - File I/O adapter (⚠️ scan() needs implementation)
38
- - `TypeScriptParser.ts` - AST parser adapter (⚠️ needs full implementation)
39
-
40
- - `src/adapters/output/`
41
- - `TerminalReporter.ts` - Beautiful console output ✅
42
- - `JsonExporter.ts` - JSON report export ✅
43
-
44
- #### **CLI Layer** (Entry Point)
45
-
46
- - `src/cli/`
47
- - `index.ts` - CLI entry point with help
48
- - `commands/analyze.ts` - Analyze command (wires everything together)
49
-
50
- #### **Shared**
51
-
52
- - `src/shared/types.ts` - Common types
53
-
54
- ### 📄 Documentation
55
-
56
- - `TECHNICAL_DESIGN.md` - Complete architecture specification
57
- - `README.md` - Updated with usage and structure
58
- - `DEVELOPMENT.md` - Development guide with TODO list
59
-
60
- ### 🧪 Test Structure
61
-
62
- - `tests/domain/` - Unit tests placeholder
63
- - `tests/application/` - Integration tests placeholder
64
- - `tests/e2e/` - End-to-end tests placeholder
65
-
66
- ### ⚙️ Configuration
67
-
68
- - Updated `package.json` with:
69
- - `type: "module"` for ES modules
70
- - Build scripts (`build`, `dev`, `analyze`)
71
- - CLI bin entry point
72
- - `.gitignore` - Comprehensive ignore rules
73
-
74
- ## Build Status
75
-
76
- ✅ **Project builds successfully!**
77
-
78
- ```bash
79
- npm run build
80
- ```
81
-
82
- All TypeScript strict mode checks pass.
83
-
84
- ## What's Next?
85
-
86
- The architecture is complete, but **two adapters need implementation** to make it functional:
87
-
88
- ### 🚧 High Priority TODOs
89
-
90
- 1. **FileSystemReader.scan()**
91
- - Currently returns empty array
92
- - Needs: `fast-glob` implementation
93
- 2. **TypeScriptParser.parse()**
94
- - Currently only counts lines
95
- - Needs: Full AST parsing with `@typescript-eslint/parser`
96
- - Should extract: complexity, nesting, parameters, `any` usage, comments
97
-
98
- 3. **Add Required Dependencies**
99
-
100
- ```bash
101
- npm install fast-glob
102
- npm install @typescript-eslint/parser @typescript-eslint/typescript-estree
103
- ```
104
-
105
- 4. **Write Tests**
106
- - Start with domain layer (easiest - no I/O)
107
- - Add integration tests
108
- - Create E2E tests with sample code
109
-
110
- ## Architecture Highlights
111
-
112
- ### Clean Separation
113
-
114
- ```
115
- ┌─────────────────────────────────────────┐
116
- │ CLI (Entry Point) │
117
- │ No Business Logic │
118
- └─────────────────┬───────────────────────┘
119
-
120
- ┌─────────────────────────────────────────┐
121
- │ Application (Orchestration) │
122
- │ AnalysisService coordinates everything│
123
- └───┬──────────────────────────────────┬──┘
124
- ↓ ↓
125
- ┌───────────┐ ┌─────────────┐
126
- │ Adapters │ │ Domain │
127
- │ (I/O) │ │ (Pure Logic)│
128
- └───────────┘ └─────────────┘
129
- ```
130
-
131
- ### Key Benefits
132
-
133
- ✅ **100% Testable** - Domain layer has zero dependencies
134
- ✅ **Extensible** - Easy to add new parsers, rules, outputs
135
- ✅ **Type-Safe** - Full TypeScript strict mode
136
- ✅ **Portable** - Domain logic works anywhere (Node, Deno, Browser)
137
- ✅ **Maintainable** - Clear separation of concerns
138
-
139
- ## Try It Out
140
-
141
- Even though the parsers aren't complete, you can still build and run:
142
-
143
- ```bash
144
- # Build
145
- npm run build
146
-
147
- # See CLI help
148
- node dist/cli/index.js --help
149
-
150
- # Try to analyze (will show you the flow)
151
- node dist/cli/index.js .
152
- ```
153
-
154
- ## Files Summary
155
-
156
- ```
157
- Created: 20 TypeScript source files
158
- Created: 3 test placeholder files
159
- Created: 4 documentation files
160
- Updated: package.json, README.md
161
- Total: 28 files
162
-
163
- Lines of Code: ~1,500+ LOC
164
- ```
165
-
166
- ## Architecture Compliance
167
-
168
- ✅ **Domain Layer**: Zero external dependencies
169
- ✅ **Dependency Rule**: All deps point inward
170
- ✅ **Interface Segregation**: Clean port definitions
171
- ✅ **Pure Functions**: Domain logic is side-effect free
172
-
173
- ## Resources Generated
174
-
175
- - [TECHNICAL_DESIGN.md](./TECHNICAL_DESIGN.md) - Full specification
176
- - [DEVELOPMENT.md](./DEVELOPMENT.md) - Dev guide
177
- - [README.md](./README.md) - User documentation
178
-
179
- ---
180
-
181
- **Ready to implement the parsers and make this fully functional!** 🚀
182
-
183
- The foundation is rock-solid. Now just need to:
184
-
185
- 1. Wire up file scanning
186
- 2. Implement AST parsing
187
- 3. Test it on real code
188
- 4. Ship it! 📦