@defai.digital/ax-cli 3.15.21 → 3.15.24

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 (261) hide show
  1. package/README.md +22 -2
  2. package/dist/agent/agent-executor.d.ts +1 -1
  3. package/dist/agent/agent-executor.js +15 -17
  4. package/dist/agent/agent-executor.js.map +1 -1
  5. package/dist/agent/execution/tool-executor.d.ts +6 -0
  6. package/dist/agent/execution/tool-executor.js +16 -1
  7. package/dist/agent/execution/tool-executor.js.map +1 -1
  8. package/dist/agent/llm-agent.js +91 -22
  9. package/dist/agent/llm-agent.js.map +1 -1
  10. package/dist/agent/parallel-tools.d.ts +65 -0
  11. package/dist/agent/parallel-tools.js +146 -0
  12. package/dist/agent/parallel-tools.js.map +1 -0
  13. package/dist/llm/tools.js +1 -1
  14. package/dist/llm/tools.js.map +1 -1
  15. package/dist/ui/components/chat-interface.js +14 -0
  16. package/dist/ui/components/chat-interface.js.map +1 -1
  17. package/dist/ui/hooks/use-input-handler.js +2 -2
  18. package/dist/ui/hooks/use-input-handler.js.map +1 -1
  19. package/dist/ui/utils/image-handler.js +8 -5
  20. package/dist/ui/utils/image-handler.js.map +1 -1
  21. package/package.json +1 -1
  22. package/dist/analyzers/architecture/anti-pattern-detectors/god-object-detector.d.ts +0 -29
  23. package/dist/analyzers/architecture/anti-pattern-detectors/god-object-detector.js +0 -103
  24. package/dist/analyzers/architecture/anti-pattern-detectors/god-object-detector.js.map +0 -1
  25. package/dist/analyzers/architecture/architecture-analyzer.d.ts +0 -58
  26. package/dist/analyzers/architecture/architecture-analyzer.js +0 -276
  27. package/dist/analyzers/architecture/architecture-analyzer.js.map +0 -1
  28. package/dist/analyzers/architecture/index.d.ts +0 -12
  29. package/dist/analyzers/architecture/index.js +0 -14
  30. package/dist/analyzers/architecture/index.js.map +0 -1
  31. package/dist/analyzers/architecture/pattern-detectors/base-detector.d.ts +0 -27
  32. package/dist/analyzers/architecture/pattern-detectors/base-detector.js +0 -31
  33. package/dist/analyzers/architecture/pattern-detectors/base-detector.js.map +0 -1
  34. package/dist/analyzers/architecture/pattern-detectors/clean-architecture-detector.d.ts +0 -11
  35. package/dist/analyzers/architecture/pattern-detectors/clean-architecture-detector.js +0 -57
  36. package/dist/analyzers/architecture/pattern-detectors/clean-architecture-detector.js.map +0 -1
  37. package/dist/analyzers/architecture/pattern-detectors/mvc-detector.d.ts +0 -11
  38. package/dist/analyzers/architecture/pattern-detectors/mvc-detector.js +0 -43
  39. package/dist/analyzers/architecture/pattern-detectors/mvc-detector.js.map +0 -1
  40. package/dist/analyzers/architecture/pattern-detectors/repository-detector.d.ts +0 -11
  41. package/dist/analyzers/architecture/pattern-detectors/repository-detector.js +0 -49
  42. package/dist/analyzers/architecture/pattern-detectors/repository-detector.js.map +0 -1
  43. package/dist/analyzers/architecture/project-structure-scanner.d.ts +0 -54
  44. package/dist/analyzers/architecture/project-structure-scanner.js +0 -204
  45. package/dist/analyzers/architecture/project-structure-scanner.js.map +0 -1
  46. package/dist/analyzers/ast/index.d.ts +0 -13
  47. package/dist/analyzers/ast/index.js +0 -16
  48. package/dist/analyzers/ast/index.js.map +0 -1
  49. package/dist/analyzers/ast/language-parser.d.ts +0 -59
  50. package/dist/analyzers/ast/language-parser.js +0 -107
  51. package/dist/analyzers/ast/language-parser.js.map +0 -1
  52. package/dist/analyzers/ast/multi-language-parser.d.ts +0 -79
  53. package/dist/analyzers/ast/multi-language-parser.js +0 -157
  54. package/dist/analyzers/ast/multi-language-parser.js.map +0 -1
  55. package/dist/analyzers/ast/node-helpers.d.ts +0 -81
  56. package/dist/analyzers/ast/node-helpers.js +0 -128
  57. package/dist/analyzers/ast/node-helpers.js.map +0 -1
  58. package/dist/analyzers/ast/parser.d.ts +0 -60
  59. package/dist/analyzers/ast/parser.js +0 -305
  60. package/dist/analyzers/ast/parser.js.map +0 -1
  61. package/dist/analyzers/ast/traverser.d.ts +0 -67
  62. package/dist/analyzers/ast/traverser.js +0 -156
  63. package/dist/analyzers/ast/traverser.js.map +0 -1
  64. package/dist/analyzers/ast/types.d.ts +0 -107
  65. package/dist/analyzers/ast/types.js +0 -7
  66. package/dist/analyzers/ast/types.js.map +0 -1
  67. package/dist/analyzers/best-practices/base-rule.d.ts +0 -45
  68. package/dist/analyzers/best-practices/base-rule.js +0 -45
  69. package/dist/analyzers/best-practices/base-rule.js.map +0 -1
  70. package/dist/analyzers/best-practices/best-practice-validator.d.ts +0 -35
  71. package/dist/analyzers/best-practices/best-practice-validator.js +0 -181
  72. package/dist/analyzers/best-practices/best-practice-validator.js.map +0 -1
  73. package/dist/analyzers/best-practices/index.d.ts +0 -10
  74. package/dist/analyzers/best-practices/index.js +0 -11
  75. package/dist/analyzers/best-practices/index.js.map +0 -1
  76. package/dist/analyzers/best-practices/rules/index.d.ts +0 -7
  77. package/dist/analyzers/best-practices/rules/index.js +0 -56
  78. package/dist/analyzers/best-practices/rules/index.js.map +0 -1
  79. package/dist/analyzers/best-practices/rules/typescript/consistent-naming.d.ts +0 -17
  80. package/dist/analyzers/best-practices/rules/typescript/consistent-naming.js +0 -41
  81. package/dist/analyzers/best-practices/rules/typescript/consistent-naming.js.map +0 -1
  82. package/dist/analyzers/best-practices/rules/typescript/function-complexity.d.ts +0 -27
  83. package/dist/analyzers/best-practices/rules/typescript/function-complexity.js +0 -76
  84. package/dist/analyzers/best-practices/rules/typescript/function-complexity.js.map +0 -1
  85. package/dist/analyzers/best-practices/rules/typescript/index.d.ts +0 -15
  86. package/dist/analyzers/best-practices/rules/typescript/index.js +0 -16
  87. package/dist/analyzers/best-practices/rules/typescript/index.js.map +0 -1
  88. package/dist/analyzers/best-practices/rules/typescript/max-file-length.d.ts +0 -18
  89. package/dist/analyzers/best-practices/rules/typescript/max-file-length.js +0 -25
  90. package/dist/analyzers/best-practices/rules/typescript/max-file-length.js.map +0 -1
  91. package/dist/analyzers/best-practices/rules/typescript/no-any-type.d.ts +0 -17
  92. package/dist/analyzers/best-practices/rules/typescript/no-any-type.js +0 -27
  93. package/dist/analyzers/best-practices/rules/typescript/no-any-type.js.map +0 -1
  94. package/dist/analyzers/best-practices/rules/typescript/no-implicit-any.d.ts +0 -18
  95. package/dist/analyzers/best-practices/rules/typescript/no-implicit-any.js +0 -39
  96. package/dist/analyzers/best-practices/rules/typescript/no-implicit-any.js.map +0 -1
  97. package/dist/analyzers/best-practices/rules/typescript/no-magic-numbers.d.ts +0 -17
  98. package/dist/analyzers/best-practices/rules/typescript/no-magic-numbers.js +0 -38
  99. package/dist/analyzers/best-practices/rules/typescript/no-magic-numbers.js.map +0 -1
  100. package/dist/analyzers/best-practices/rules/typescript/no-unused-vars.d.ts +0 -17
  101. package/dist/analyzers/best-practices/rules/typescript/no-unused-vars.js +0 -38
  102. package/dist/analyzers/best-practices/rules/typescript/no-unused-vars.js.map +0 -1
  103. package/dist/analyzers/best-practices/rules/typescript/prefer-const.d.ts +0 -17
  104. package/dist/analyzers/best-practices/rules/typescript/prefer-const.js +0 -35
  105. package/dist/analyzers/best-practices/rules/typescript/prefer-const.js.map +0 -1
  106. package/dist/analyzers/best-practices/rules/typescript/prefer-readonly.d.ts +0 -17
  107. package/dist/analyzers/best-practices/rules/typescript/prefer-readonly.js +0 -36
  108. package/dist/analyzers/best-practices/rules/typescript/prefer-readonly.js.map +0 -1
  109. package/dist/analyzers/best-practices/rules/typescript/proper-error-handling.d.ts +0 -17
  110. package/dist/analyzers/best-practices/rules/typescript/proper-error-handling.js +0 -27
  111. package/dist/analyzers/best-practices/rules/typescript/proper-error-handling.js.map +0 -1
  112. package/dist/analyzers/best-practices/types.d.ts +0 -86
  113. package/dist/analyzers/best-practices/types.js +0 -7
  114. package/dist/analyzers/best-practices/types.js.map +0 -1
  115. package/dist/analyzers/cache/analysis-cache.d.ts +0 -41
  116. package/dist/analyzers/cache/analysis-cache.js +0 -84
  117. package/dist/analyzers/cache/analysis-cache.js.map +0 -1
  118. package/dist/analyzers/code-smells/base-smell-detector.d.ts +0 -30
  119. package/dist/analyzers/code-smells/base-smell-detector.js +0 -44
  120. package/dist/analyzers/code-smells/base-smell-detector.js.map +0 -1
  121. package/dist/analyzers/code-smells/code-smell-analyzer.d.ts +0 -30
  122. package/dist/analyzers/code-smells/code-smell-analyzer.js +0 -167
  123. package/dist/analyzers/code-smells/code-smell-analyzer.js.map +0 -1
  124. package/dist/analyzers/code-smells/detectors/data-clumps-detector.d.ts +0 -11
  125. package/dist/analyzers/code-smells/detectors/data-clumps-detector.js +0 -64
  126. package/dist/analyzers/code-smells/detectors/data-clumps-detector.js.map +0 -1
  127. package/dist/analyzers/code-smells/detectors/dead-code-detector.d.ts +0 -11
  128. package/dist/analyzers/code-smells/detectors/dead-code-detector.js +0 -58
  129. package/dist/analyzers/code-smells/detectors/dead-code-detector.js.map +0 -1
  130. package/dist/analyzers/code-smells/detectors/duplicate-code-detector.d.ts +0 -11
  131. package/dist/analyzers/code-smells/detectors/duplicate-code-detector.js +0 -69
  132. package/dist/analyzers/code-smells/detectors/duplicate-code-detector.js.map +0 -1
  133. package/dist/analyzers/code-smells/detectors/feature-envy-detector.d.ts +0 -11
  134. package/dist/analyzers/code-smells/detectors/feature-envy-detector.js +0 -70
  135. package/dist/analyzers/code-smells/detectors/feature-envy-detector.js.map +0 -1
  136. package/dist/analyzers/code-smells/detectors/inappropriate-intimacy-detector.d.ts +0 -11
  137. package/dist/analyzers/code-smells/detectors/inappropriate-intimacy-detector.js +0 -59
  138. package/dist/analyzers/code-smells/detectors/inappropriate-intimacy-detector.js.map +0 -1
  139. package/dist/analyzers/code-smells/detectors/large-class-detector.d.ts +0 -13
  140. package/dist/analyzers/code-smells/detectors/large-class-detector.js +0 -61
  141. package/dist/analyzers/code-smells/detectors/large-class-detector.js.map +0 -1
  142. package/dist/analyzers/code-smells/detectors/long-method-detector.d.ts +0 -12
  143. package/dist/analyzers/code-smells/detectors/long-method-detector.js +0 -55
  144. package/dist/analyzers/code-smells/detectors/long-method-detector.js.map +0 -1
  145. package/dist/analyzers/code-smells/detectors/long-parameter-list-detector.d.ts +0 -12
  146. package/dist/analyzers/code-smells/detectors/long-parameter-list-detector.js +0 -53
  147. package/dist/analyzers/code-smells/detectors/long-parameter-list-detector.js.map +0 -1
  148. package/dist/analyzers/code-smells/detectors/magic-numbers-detector.d.ts +0 -12
  149. package/dist/analyzers/code-smells/detectors/magic-numbers-detector.js +0 -56
  150. package/dist/analyzers/code-smells/detectors/magic-numbers-detector.js.map +0 -1
  151. package/dist/analyzers/code-smells/detectors/nested-conditionals-detector.d.ts +0 -13
  152. package/dist/analyzers/code-smells/detectors/nested-conditionals-detector.js +0 -77
  153. package/dist/analyzers/code-smells/detectors/nested-conditionals-detector.js.map +0 -1
  154. package/dist/analyzers/code-smells/index.d.ts +0 -16
  155. package/dist/analyzers/code-smells/index.js +0 -19
  156. package/dist/analyzers/code-smells/index.js.map +0 -1
  157. package/dist/analyzers/code-smells/types.d.ts +0 -82
  158. package/dist/analyzers/code-smells/types.js +0 -30
  159. package/dist/analyzers/code-smells/types.js.map +0 -1
  160. package/dist/analyzers/dependency/circular-detector.d.ts +0 -17
  161. package/dist/analyzers/dependency/circular-detector.js +0 -73
  162. package/dist/analyzers/dependency/circular-detector.js.map +0 -1
  163. package/dist/analyzers/dependency/coupling-calculator.d.ts +0 -24
  164. package/dist/analyzers/dependency/coupling-calculator.js +0 -86
  165. package/dist/analyzers/dependency/coupling-calculator.js.map +0 -1
  166. package/dist/analyzers/dependency/dependency-analyzer.d.ts +0 -44
  167. package/dist/analyzers/dependency/dependency-analyzer.js +0 -218
  168. package/dist/analyzers/dependency/dependency-analyzer.js.map +0 -1
  169. package/dist/analyzers/dependency/dependency-graph.d.ts +0 -57
  170. package/dist/analyzers/dependency/dependency-graph.js +0 -198
  171. package/dist/analyzers/dependency/dependency-graph.js.map +0 -1
  172. package/dist/analyzers/dependency/index.d.ts +0 -8
  173. package/dist/analyzers/dependency/index.js +0 -8
  174. package/dist/analyzers/dependency/index.js.map +0 -1
  175. package/dist/analyzers/dependency/types.d.ts +0 -105
  176. package/dist/analyzers/dependency/types.js +0 -5
  177. package/dist/analyzers/dependency/types.js.map +0 -1
  178. package/dist/analyzers/errors.d.ts +0 -51
  179. package/dist/analyzers/errors.js +0 -79
  180. package/dist/analyzers/errors.js.map +0 -1
  181. package/dist/analyzers/git/churn-calculator.d.ts +0 -36
  182. package/dist/analyzers/git/churn-calculator.js +0 -257
  183. package/dist/analyzers/git/churn-calculator.js.map +0 -1
  184. package/dist/analyzers/git/git-analyzer.d.ts +0 -19
  185. package/dist/analyzers/git/git-analyzer.js +0 -79
  186. package/dist/analyzers/git/git-analyzer.js.map +0 -1
  187. package/dist/analyzers/git/hotspot-detector.d.ts +0 -34
  188. package/dist/analyzers/git/hotspot-detector.js +0 -173
  189. package/dist/analyzers/git/hotspot-detector.js.map +0 -1
  190. package/dist/analyzers/git/index.d.ts +0 -7
  191. package/dist/analyzers/git/index.js +0 -7
  192. package/dist/analyzers/git/index.js.map +0 -1
  193. package/dist/analyzers/git/types.d.ts +0 -88
  194. package/dist/analyzers/git/types.js +0 -5
  195. package/dist/analyzers/git/types.js.map +0 -1
  196. package/dist/analyzers/metrics/halstead-calculator.d.ts +0 -30
  197. package/dist/analyzers/metrics/halstead-calculator.js +0 -150
  198. package/dist/analyzers/metrics/halstead-calculator.js.map +0 -1
  199. package/dist/analyzers/metrics/index.d.ts +0 -9
  200. package/dist/analyzers/metrics/index.js +0 -9
  201. package/dist/analyzers/metrics/index.js.map +0 -1
  202. package/dist/analyzers/metrics/maintainability-calculator.d.ts +0 -17
  203. package/dist/analyzers/metrics/maintainability-calculator.js +0 -46
  204. package/dist/analyzers/metrics/maintainability-calculator.js.map +0 -1
  205. package/dist/analyzers/metrics/metrics-analyzer.d.ts +0 -32
  206. package/dist/analyzers/metrics/metrics-analyzer.js +0 -144
  207. package/dist/analyzers/metrics/metrics-analyzer.js.map +0 -1
  208. package/dist/analyzers/metrics/types.d.ts +0 -67
  209. package/dist/analyzers/metrics/types.js +0 -5
  210. package/dist/analyzers/metrics/types.js.map +0 -1
  211. package/dist/analyzers/security/base-detector.d.ts +0 -58
  212. package/dist/analyzers/security/base-detector.js +0 -104
  213. package/dist/analyzers/security/base-detector.js.map +0 -1
  214. package/dist/analyzers/security/detectors/command-injection-detector.d.ts +0 -12
  215. package/dist/analyzers/security/detectors/command-injection-detector.js +0 -84
  216. package/dist/analyzers/security/detectors/command-injection-detector.js.map +0 -1
  217. package/dist/analyzers/security/detectors/hardcoded-secrets-detector.d.ts +0 -16
  218. package/dist/analyzers/security/detectors/hardcoded-secrets-detector.js +0 -140
  219. package/dist/analyzers/security/detectors/hardcoded-secrets-detector.js.map +0 -1
  220. package/dist/analyzers/security/detectors/insecure-deserialization-detector.d.ts +0 -12
  221. package/dist/analyzers/security/detectors/insecure-deserialization-detector.js +0 -109
  222. package/dist/analyzers/security/detectors/insecure-deserialization-detector.js.map +0 -1
  223. package/dist/analyzers/security/detectors/insecure-random-detector.d.ts +0 -12
  224. package/dist/analyzers/security/detectors/insecure-random-detector.js +0 -61
  225. package/dist/analyzers/security/detectors/insecure-random-detector.js.map +0 -1
  226. package/dist/analyzers/security/detectors/path-traversal-detector.d.ts +0 -12
  227. package/dist/analyzers/security/detectors/path-traversal-detector.js +0 -82
  228. package/dist/analyzers/security/detectors/path-traversal-detector.js.map +0 -1
  229. package/dist/analyzers/security/detectors/sql-injection-detector.d.ts +0 -12
  230. package/dist/analyzers/security/detectors/sql-injection-detector.js +0 -88
  231. package/dist/analyzers/security/detectors/sql-injection-detector.js.map +0 -1
  232. package/dist/analyzers/security/detectors/weak-crypto-detector.d.ts +0 -12
  233. package/dist/analyzers/security/detectors/weak-crypto-detector.js +0 -104
  234. package/dist/analyzers/security/detectors/weak-crypto-detector.js.map +0 -1
  235. package/dist/analyzers/security/detectors/xss-detector.d.ts +0 -12
  236. package/dist/analyzers/security/detectors/xss-detector.js +0 -90
  237. package/dist/analyzers/security/detectors/xss-detector.js.map +0 -1
  238. package/dist/analyzers/security/index.d.ts +0 -16
  239. package/dist/analyzers/security/index.js +0 -18
  240. package/dist/analyzers/security/index.js.map +0 -1
  241. package/dist/analyzers/security/security-analyzer.d.ts +0 -38
  242. package/dist/analyzers/security/security-analyzer.js +0 -215
  243. package/dist/analyzers/security/security-analyzer.js.map +0 -1
  244. package/dist/analyzers/security/types.d.ts +0 -95
  245. package/dist/analyzers/security/types.js +0 -7
  246. package/dist/analyzers/security/types.js.map +0 -1
  247. package/dist/tools/analysis-tools/architecture-tool.d.ts +0 -46
  248. package/dist/tools/analysis-tools/architecture-tool.js +0 -124
  249. package/dist/tools/analysis-tools/architecture-tool.js.map +0 -1
  250. package/dist/tools/analysis-tools/validation-tool.d.ts +0 -51
  251. package/dist/tools/analysis-tools/validation-tool.js +0 -121
  252. package/dist/tools/analysis-tools/validation-tool.js.map +0 -1
  253. package/dist/tools/analysis-tools.d.ts +0 -73
  254. package/dist/tools/analysis-tools.js +0 -422
  255. package/dist/tools/analysis-tools.js.map +0 -1
  256. package/dist/types/analysis.d.ts +0 -177
  257. package/dist/types/analysis.js +0 -8
  258. package/dist/types/analysis.js.map +0 -1
  259. package/dist/utils/analysis-logger.d.ts +0 -50
  260. package/dist/utils/analysis-logger.js +0 -73
  261. package/dist/utils/analysis-logger.js.map +0 -1
@@ -1,45 +0,0 @@
1
- /**
2
- * Base Validation Rule
3
- *
4
- * Abstract base class for all validation rules
5
- * Provides common functionality and helpers
6
- */
7
- import type { ValidationRule, ViolationFix } from './types.js';
8
- import type { Violation, Severity } from '../../types/analysis.js';
9
- import type { RuleCategory } from './types.js';
10
- /**
11
- * Abstract base class for validation rules
12
- * Provides common functionality for all rules
13
- */
14
- export declare abstract class BaseValidationRule implements ValidationRule {
15
- abstract readonly id: string;
16
- abstract readonly name: string;
17
- abstract readonly description: string;
18
- abstract readonly severity: Severity;
19
- abstract readonly category: RuleCategory;
20
- abstract readonly autoFixable: boolean;
21
- /**
22
- * Check file for violations
23
- * Must be implemented by subclasses
24
- */
25
- abstract check(filePath: string, content: string): Promise<Violation[]>;
26
- /**
27
- * Generate fix for violation (optional)
28
- */
29
- fix?(violation: Violation, content: string): Promise<ViolationFix | null>;
30
- /**
31
- * Helper: Create a violation object
32
- */
33
- protected createViolation(file: string, line: number, column: number, message: string, suggestion?: string, metadata?: Record<string, unknown>): Violation;
34
- /**
35
- * Helper: Find line and column from character index
36
- */
37
- protected getPosition(content: string, index: number): {
38
- line: number;
39
- column: number;
40
- };
41
- /**
42
- * Helper: Count matches in content
43
- */
44
- protected countMatches(content: string, pattern: RegExp): number;
45
- }
@@ -1,45 +0,0 @@
1
- /**
2
- * Base Validation Rule
3
- *
4
- * Abstract base class for all validation rules
5
- * Provides common functionality and helpers
6
- */
7
- /**
8
- * Abstract base class for validation rules
9
- * Provides common functionality for all rules
10
- */
11
- export class BaseValidationRule {
12
- /**
13
- * Helper: Create a violation object
14
- */
15
- createViolation(file, line, column, message, suggestion, metadata) {
16
- return Object.freeze({
17
- ruleId: this.id,
18
- severity: this.severity,
19
- file,
20
- line,
21
- column,
22
- message,
23
- suggestion,
24
- metadata: metadata ? Object.freeze(metadata) : undefined,
25
- });
26
- }
27
- /**
28
- * Helper: Find line and column from character index
29
- */
30
- getPosition(content, index) {
31
- const lines = content.substring(0, index).split('\n');
32
- return {
33
- line: lines.length,
34
- column: lines[lines.length - 1].length + 1,
35
- };
36
- }
37
- /**
38
- * Helper: Count matches in content
39
- */
40
- countMatches(content, pattern) {
41
- const matches = content.match(pattern);
42
- return matches ? matches.length : 0;
43
- }
44
- }
45
- //# sourceMappingURL=base-rule.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"base-rule.js","sourceRoot":"","sources":["../../../src/analyzers/best-practices/base-rule.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;;GAGG;AACH,MAAM,OAAgB,kBAAkB;IAmBtC;;OAEG;IACO,eAAe,CACvB,IAAY,EACZ,IAAY,EACZ,MAAc,EACd,OAAe,EACf,UAAmB,EACnB,QAAkC;QAElC,OAAO,MAAM,CAAC,MAAM,CAAC;YACnB,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,IAAI;YACJ,IAAI;YACJ,MAAM;YACN,OAAO;YACP,UAAU;YACV,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;SACzD,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACO,WAAW,CACnB,OAAe,EACf,KAAa;QAEb,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtD,OAAO;YACL,IAAI,EAAE,KAAK,CAAC,MAAM;YAClB,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC;SAC3C,CAAC;IACJ,CAAC;IAED;;OAEG;IACO,YAAY,CAAC,OAAe,EAAE,OAAe;QACrD,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACvC,OAAO,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC;CACF"}
@@ -1,35 +0,0 @@
1
- /**
2
- * Best Practice Validator
3
- *
4
- * Main orchestrator for validation operations
5
- */
6
- import type { ValidationResult, BatchValidationResult, ValidationOptions } from '../../types/analysis.js';
7
- import type { Logger } from '../../utils/analysis-logger.js';
8
- export declare class BestPracticeValidator {
9
- private readonly logger;
10
- constructor(logger?: Logger);
11
- /**
12
- * Validate a single file
13
- */
14
- validateFile(filePath: string, options?: ValidationOptions): Promise<ValidationResult>;
15
- /**
16
- * Validate multiple files in batch
17
- */
18
- validateBatch(filePaths: string[], options?: ValidationOptions): Promise<BatchValidationResult>;
19
- /**
20
- * Detect language from file extension
21
- */
22
- private detectLanguage;
23
- /**
24
- * Calculate quality score (0-100)
25
- */
26
- private calculateScore;
27
- /**
28
- * Generate summary text
29
- */
30
- private generateSummary;
31
- /**
32
- * Generate batch summary
33
- */
34
- private generateBatchSummary;
35
- }
@@ -1,181 +0,0 @@
1
- /**
2
- * Best Practice Validator
3
- *
4
- * Main orchestrator for validation operations
5
- */
6
- import { getRuleRegistry } from './rules/index.js';
7
- import { createLogger } from '../../utils/analysis-logger.js';
8
- import { promises as fs } from 'fs';
9
- import path from 'path';
10
- export class BestPracticeValidator {
11
- logger;
12
- constructor(logger) {
13
- this.logger = logger || createLogger();
14
- }
15
- /**
16
- * Validate a single file
17
- */
18
- async validateFile(filePath, options) {
19
- const startTime = Date.now();
20
- try {
21
- // Read file
22
- const content = await fs.readFile(filePath, 'utf-8');
23
- // Detect language from extension
24
- const language = this.detectLanguage(filePath);
25
- // Get applicable rules
26
- const registry = getRuleRegistry();
27
- const allRules = registry.getAll();
28
- const enabledRules = allRules.filter(rule => {
29
- const config = options?.rules?.[rule.id];
30
- return config?.enabled !== false; // Enabled by default
31
- });
32
- this.logger.debug('Validating file', {
33
- file: filePath,
34
- language,
35
- ruleCount: enabledRules.length,
36
- });
37
- // Run all rules in parallel
38
- const violationArrays = await Promise.all(enabledRules.map(async (rule) => {
39
- try {
40
- const violations = await rule.check(filePath, content);
41
- return violations;
42
- }
43
- catch (error) {
44
- this.logger.warn(`Rule ${rule.id} failed`, {
45
- error: error.message,
46
- });
47
- return [];
48
- }
49
- }));
50
- // Flatten violations
51
- const violations = violationArrays.flat();
52
- // Calculate score (0-100)
53
- const score = this.calculateScore(violations);
54
- const result = Object.freeze({
55
- timestamp: Date.now(),
56
- durationMs: Date.now() - startTime,
57
- projectPath: path.dirname(filePath),
58
- file: filePath,
59
- language,
60
- violations: Object.freeze(violations),
61
- score,
62
- summary: this.generateSummary(violations, score),
63
- });
64
- return result;
65
- }
66
- catch (error) {
67
- throw new Error(`Failed to validate file ${filePath}: ${error.message}`);
68
- }
69
- }
70
- /**
71
- * Validate multiple files in batch
72
- */
73
- async validateBatch(filePaths, options) {
74
- const startTime = Date.now();
75
- this.logger.info('Starting batch validation', { fileCount: filePaths.length });
76
- // Validate all files in parallel (with concurrency limit)
77
- const CONCURRENCY = 5;
78
- const results = [];
79
- for (let i = 0; i < filePaths.length; i += CONCURRENCY) {
80
- const batch = filePaths.slice(i, i + CONCURRENCY);
81
- const batchResults = await Promise.all(batch.map(async (filePath) => {
82
- try {
83
- return await this.validateFile(filePath, options);
84
- }
85
- catch (error) {
86
- this.logger.warn(`Failed to validate ${filePath}`, {
87
- error: error.message,
88
- });
89
- return null;
90
- }
91
- }));
92
- results.push(...batchResults.filter((r) => r !== null));
93
- }
94
- // Calculate aggregate metrics
95
- const allViolations = results.flatMap(r => Array.from(r.violations));
96
- const criticalCount = allViolations.filter(v => v.severity === 'critical').length;
97
- const highCount = allViolations.filter(v => v.severity === 'high').length;
98
- const averageScore = results.reduce((sum, r) => sum + r.score, 0) / (results.length || 1);
99
- const result = Object.freeze({
100
- timestamp: Date.now(),
101
- durationMs: Date.now() - startTime,
102
- projectPath: path.dirname(filePaths[0] || process.cwd()),
103
- files: Object.freeze(results),
104
- totalViolations: allViolations.length,
105
- criticalCount,
106
- highCount,
107
- averageScore: Math.round(averageScore),
108
- summary: this.generateBatchSummary(results, allViolations.length),
109
- });
110
- this.logger.info('Batch validation completed', {
111
- fileCount: results.length,
112
- violations: allViolations.length,
113
- averageScore: result.averageScore,
114
- });
115
- return result;
116
- }
117
- /**
118
- * Detect language from file extension
119
- */
120
- detectLanguage(filePath) {
121
- const ext = path.extname(filePath).toLowerCase();
122
- if (ext === '.ts' || ext === '.tsx') {
123
- return 'typescript';
124
- }
125
- return 'javascript';
126
- }
127
- /**
128
- * Calculate quality score (0-100)
129
- */
130
- calculateScore(violations) {
131
- let score = 100;
132
- const severityPenalty = {
133
- critical: 10,
134
- high: 5,
135
- medium: 2,
136
- low: 1,
137
- info: 0,
138
- };
139
- for (const violation of violations) {
140
- score -= severityPenalty[violation.severity] || 0;
141
- }
142
- // Bonus for clean code
143
- if (violations.length === 0) {
144
- score = 100;
145
- }
146
- return Math.max(0, Math.min(100, score));
147
- }
148
- /**
149
- * Generate summary text
150
- */
151
- generateSummary(violations, score) {
152
- if (violations.length === 0) {
153
- return `Perfect score! No violations found. (Score: ${score}/100)`;
154
- }
155
- const bySeverity = {
156
- critical: violations.filter(v => v.severity === 'critical').length,
157
- high: violations.filter(v => v.severity === 'high').length,
158
- medium: violations.filter(v => v.severity === 'medium').length,
159
- low: violations.filter(v => v.severity === 'low').length,
160
- };
161
- const parts = [`Found ${violations.length} violation(s)`];
162
- if (bySeverity.critical > 0)
163
- parts.push(`${bySeverity.critical} critical`);
164
- if (bySeverity.high > 0)
165
- parts.push(`${bySeverity.high} high`);
166
- if (bySeverity.medium > 0)
167
- parts.push(`${bySeverity.medium} medium`);
168
- if (bySeverity.low > 0)
169
- parts.push(`${bySeverity.low} low`);
170
- parts.push(`Score: ${score}/100`);
171
- return parts.join(', ');
172
- }
173
- /**
174
- * Generate batch summary
175
- */
176
- generateBatchSummary(results, totalViolations) {
177
- const avgScore = results.reduce((sum, r) => sum + r.score, 0) / (results.length || 1);
178
- return `Validated ${results.length} file(s). Found ${totalViolations} violation(s). Average score: ${Math.round(avgScore)}/100`;
179
- }
180
- }
181
- //# sourceMappingURL=best-practice-validator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"best-practice-validator.js","sourceRoot":"","sources":["../../../src/analyzers/best-practices/best-practice-validator.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- /**
2
- * Best Practice Analyzer Module
3
- *
4
- * Exports all best practice validation components
5
- */
6
- export { BestPracticeValidator } from './best-practice-validator.js';
7
- export { BaseValidationRule } from './base-rule.js';
8
- export { getRuleRegistry } from './rules/index.js';
9
- export * from './rules/typescript/index.js';
10
- export type { ValidationRule, RuleCategory, RuleConfig, ValidationOptions, RuleRegistry, ViolationFix, TextEdit, TextRange, Position, } from './types.js';
@@ -1,11 +0,0 @@
1
- /**
2
- * Best Practice Analyzer Module
3
- *
4
- * Exports all best practice validation components
5
- */
6
- export { BestPracticeValidator } from './best-practice-validator.js';
7
- export { BaseValidationRule } from './base-rule.js';
8
- export { getRuleRegistry } from './rules/index.js';
9
- // Export all TypeScript rules
10
- export * from './rules/typescript/index.js';
11
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/analyzers/best-practices/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,8BAA8B;AAC9B,cAAc,6BAA6B,CAAC"}
@@ -1,7 +0,0 @@
1
- /**
2
- * Validation Rule Registry
3
- *
4
- * Singleton registry managing all validation rules
5
- */
6
- import type { RuleRegistry } from '../types.js';
7
- export declare function getRuleRegistry(): RuleRegistry;
@@ -1,56 +0,0 @@
1
- /**
2
- * Validation Rule Registry
3
- *
4
- * Singleton registry managing all validation rules
5
- */
6
- /**
7
- * Singleton rule registry
8
- * Manages all validation rules
9
- */
10
- class ValidationRuleRegistry {
11
- static instance;
12
- rules = new Map();
13
- constructor() { }
14
- static getInstance() {
15
- if (!ValidationRuleRegistry.instance) {
16
- ValidationRuleRegistry.instance = new ValidationRuleRegistry();
17
- }
18
- return ValidationRuleRegistry.instance;
19
- }
20
- register(rule) {
21
- if (this.rules.has(rule.id)) {
22
- console.warn(`Rule ${rule.id} is already registered, overwriting`);
23
- }
24
- this.rules.set(rule.id, rule);
25
- }
26
- get(id) {
27
- return this.rules.get(id);
28
- }
29
- getAll() {
30
- return Object.freeze(Array.from(this.rules.values()));
31
- }
32
- getByCategory(category) {
33
- return Object.freeze(Array.from(this.rules.values()).filter(r => r.category === category));
34
- }
35
- clear() {
36
- this.rules.clear();
37
- }
38
- }
39
- export function getRuleRegistry() {
40
- return ValidationRuleRegistry.getInstance();
41
- }
42
- // Auto-register all TypeScript rules
43
- import { NoAnyTypeRule, PreferConstRule, NoImplicitAnyRule, ProperErrorHandlingRule, ConsistentNamingRule, NoUnusedVarsRule, FunctionComplexityRule, MaxFileLengthRule, NoMagicNumbersRule, PreferReadonlyRule, } from './typescript/index.js';
44
- // Register TypeScript rules on module load
45
- const registry = getRuleRegistry();
46
- registry.register(new NoAnyTypeRule());
47
- registry.register(new PreferConstRule());
48
- registry.register(new NoImplicitAnyRule());
49
- registry.register(new ProperErrorHandlingRule());
50
- registry.register(new ConsistentNamingRule());
51
- registry.register(new NoUnusedVarsRule());
52
- registry.register(new FunctionComplexityRule());
53
- registry.register(new MaxFileLengthRule());
54
- registry.register(new NoMagicNumbersRule());
55
- registry.register(new PreferReadonlyRule());
56
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/analyzers/best-practices/rules/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;;GAGG;AACH,MAAM,sBAAsB;IAClB,MAAM,CAAC,QAAQ,CAAyB;IACxC,KAAK,GAAG,IAAI,GAAG,EAA0B,CAAC;IAElD,gBAAuB,CAAC;IAExB,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE,CAAC;YACrC,sBAAsB,CAAC,QAAQ,GAAG,IAAI,sBAAsB,EAAE,CAAC;QACjE,CAAC;QACD,OAAO,sBAAsB,CAAC,QAAQ,CAAC;IACzC,CAAC;IAED,QAAQ,CAAC,IAAoB;QAC3B,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE,qCAAqC,CAAC,CAAC;QACrE,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM;QACJ,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,aAAa,CAAC,QAAsB;QAClC,OAAO,MAAM,CAAC,MAAM,CAClB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CACrE,CAAC;IACJ,CAAC;IAED,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;CACF;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,sBAAsB,CAAC,WAAW,EAAE,CAAC;AAC9C,CAAC;AAED,qCAAqC;AACrC,OAAO,EACL,aAAa,EACb,eAAe,EACf,iBAAiB,EACjB,uBAAuB,EACvB,oBAAoB,EACpB,gBAAgB,EAChB,sBAAsB,EACtB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAE/B,2CAA2C;AAC3C,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAC;AACnC,QAAQ,CAAC,QAAQ,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC;AACvC,QAAQ,CAAC,QAAQ,CAAC,IAAI,eAAe,EAAE,CAAC,CAAC;AACzC,QAAQ,CAAC,QAAQ,CAAC,IAAI,iBAAiB,EAAE,CAAC,CAAC;AAC3C,QAAQ,CAAC,QAAQ,CAAC,IAAI,uBAAuB,EAAE,CAAC,CAAC;AACjD,QAAQ,CAAC,QAAQ,CAAC,IAAI,oBAAoB,EAAE,CAAC,CAAC;AAC9C,QAAQ,CAAC,QAAQ,CAAC,IAAI,gBAAgB,EAAE,CAAC,CAAC;AAC1C,QAAQ,CAAC,QAAQ,CAAC,IAAI,sBAAsB,EAAE,CAAC,CAAC;AAChD,QAAQ,CAAC,QAAQ,CAAC,IAAI,iBAAiB,EAAE,CAAC,CAAC;AAC3C,QAAQ,CAAC,QAAQ,CAAC,IAAI,kBAAkB,EAAE,CAAC,CAAC;AAC5C,QAAQ,CAAC,QAAQ,CAAC,IAAI,kBAAkB,EAAE,CAAC,CAAC"}
@@ -1,17 +0,0 @@
1
- /**
2
- * Consistent Naming Rule
3
- *
4
- * Use consistent naming conventions: camelCase for variables/functions, PascalCase for classes/interfaces
5
- */
6
- import { BaseValidationRule } from '../../base-rule.js';
7
- import type { Violation, Severity } from '../../../../types/analysis.js';
8
- import type { RuleCategory } from '../../types.js';
9
- export declare class ConsistentNamingRule extends BaseValidationRule {
10
- readonly id = "consistent-naming";
11
- readonly name = "Consistent Naming";
12
- readonly description = "Use consistent naming conventions: camelCase for variables/functions, PascalCase for classes/interfaces";
13
- readonly severity: Severity;
14
- readonly category: RuleCategory;
15
- readonly autoFixable = false;
16
- check(filePath: string, content: string): Promise<Violation[]>;
17
- }
@@ -1,41 +0,0 @@
1
- /**
2
- * Consistent Naming Rule
3
- *
4
- * Use consistent naming conventions: camelCase for variables/functions, PascalCase for classes/interfaces
5
- */
6
- import { BaseValidationRule } from '../../base-rule.js';
7
- export class ConsistentNamingRule extends BaseValidationRule {
8
- id = 'consistent-naming';
9
- name = 'Consistent Naming';
10
- description = 'Use consistent naming conventions: camelCase for variables/functions, PascalCase for classes/interfaces';
11
- severity = 'low';
12
- category = 'best-practices';
13
- autoFixable = false;
14
- async check(filePath, content) {
15
- const violations = [];
16
- // Check class names (should be PascalCase)
17
- const classPattern = /class\s+([a-z][a-zA-Z0-9]*)/g;
18
- let match;
19
- while ((match = classPattern.exec(content)) !== null) {
20
- const className = match[1];
21
- const pos = this.getPosition(content, match.index);
22
- violations.push(this.createViolation(filePath, pos.line, pos.column, `Class name "${className}" should be in PascalCase (start with uppercase).`, `Rename to "${className.charAt(0).toUpperCase() + className.slice(1)}"`));
23
- }
24
- // Check interface names (should be PascalCase)
25
- const interfacePattern = /interface\s+([a-z][a-zA-Z0-9]*)/g;
26
- while ((match = interfacePattern.exec(content)) !== null) {
27
- const interfaceName = match[1];
28
- const pos = this.getPosition(content, match.index);
29
- violations.push(this.createViolation(filePath, pos.line, pos.column, `Interface name "${interfaceName}" should be in PascalCase (start with uppercase).`, `Rename to "${interfaceName.charAt(0).toUpperCase() + interfaceName.slice(1)}"`));
30
- }
31
- // Check function names (should be camelCase, not PascalCase)
32
- const functionPattern = /function\s+([A-Z][a-zA-Z0-9]*)/g;
33
- while ((match = functionPattern.exec(content)) !== null) {
34
- const functionName = match[1];
35
- const pos = this.getPosition(content, match.index);
36
- violations.push(this.createViolation(filePath, pos.line, pos.column, `Function name "${functionName}" should be in camelCase (start with lowercase).`, `Rename to "${functionName.charAt(0).toLowerCase() + functionName.slice(1)}"`));
37
- }
38
- return violations;
39
- }
40
- }
41
- //# sourceMappingURL=consistent-naming.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"consistent-naming.js","sourceRoot":"","sources":["../../../../../src/analyzers/best-practices/rules/typescript/consistent-naming.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAIxD,MAAM,OAAO,oBAAqB,SAAQ,kBAAkB;IACjD,EAAE,GAAG,mBAAmB,CAAC;IACzB,IAAI,GAAG,mBAAmB,CAAC;IAC3B,WAAW,GAClB,yGAAyG,CAAC;IACnG,QAAQ,GAAa,KAAK,CAAC;IAC3B,QAAQ,GAAiB,gBAAgB,CAAC;IAC1C,WAAW,GAAG,KAAK,CAAC;IAE7B,KAAK,CAAC,KAAK,CAAC,QAAgB,EAAE,OAAe;QAC3C,MAAM,UAAU,GAAgB,EAAE,CAAC;QAEnC,2CAA2C;QAC3C,MAAM,YAAY,GAAG,8BAA8B,CAAC;QACpD,IAAI,KAA6B,CAAC;QAElC,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACrD,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YAEnD,UAAU,CAAC,IAAI,CACb,IAAI,CAAC,eAAe,CAClB,QAAQ,EACR,GAAG,CAAC,IAAI,EACR,GAAG,CAAC,MAAM,EACV,eAAe,SAAS,mDAAmD,EAC3E,cAAc,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CACxE,CACF,CAAC;QACJ,CAAC;QAED,+CAA+C;QAC/C,MAAM,gBAAgB,GAAG,kCAAkC,CAAC;QAE5D,OAAO,CAAC,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACzD,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YAEnD,UAAU,CAAC,IAAI,CACb,IAAI,CAAC,eAAe,CAClB,QAAQ,EACR,GAAG,CAAC,IAAI,EACR,GAAG,CAAC,MAAM,EACV,mBAAmB,aAAa,mDAAmD,EACnF,cAAc,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAChF,CACF,CAAC;QACJ,CAAC;QAED,6DAA6D;QAC7D,MAAM,eAAe,GAAG,iCAAiC,CAAC;QAE1D,OAAO,CAAC,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACxD,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YAEnD,UAAU,CAAC,IAAI,CACb,IAAI,CAAC,eAAe,CAClB,QAAQ,EACR,GAAG,CAAC,IAAI,EACR,GAAG,CAAC,MAAM,EACV,kBAAkB,YAAY,kDAAkD,EAChF,cAAc,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAC9E,CACF,CAAC;QACJ,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;CACF"}
@@ -1,27 +0,0 @@
1
- /**
2
- * Function Complexity Rule
3
- *
4
- * Functions should have low cyclomatic complexity (max 10)
5
- */
6
- import { BaseValidationRule } from '../../base-rule.js';
7
- import type { Violation, Severity } from '../../../../types/analysis.js';
8
- import type { RuleCategory } from '../../types.js';
9
- export declare class FunctionComplexityRule extends BaseValidationRule {
10
- readonly id = "function-complexity";
11
- readonly name = "Function Complexity";
12
- readonly description = "Functions should have low cyclomatic complexity (max 10)";
13
- readonly severity: Severity;
14
- readonly category: RuleCategory;
15
- readonly autoFixable = false;
16
- private readonly MAX_COMPLEXITY;
17
- check(filePath: string, content: string): Promise<Violation[]>;
18
- /**
19
- * Extract function body (simplified version)
20
- */
21
- private extractFunctionBody;
22
- /**
23
- * Calculate cyclomatic complexity
24
- * Complexity = 1 + number of decision points (if, for, while, case, &&, ||, ?, catch)
25
- */
26
- private calculateComplexity;
27
- }
@@ -1,76 +0,0 @@
1
- /**
2
- * Function Complexity Rule
3
- *
4
- * Functions should have low cyclomatic complexity (max 10)
5
- */
6
- import { BaseValidationRule } from '../../base-rule.js';
7
- export class FunctionComplexityRule extends BaseValidationRule {
8
- id = 'function-complexity';
9
- name = 'Function Complexity';
10
- description = 'Functions should have low cyclomatic complexity (max 10)';
11
- severity = 'medium';
12
- category = 'maintainability';
13
- autoFixable = false;
14
- MAX_COMPLEXITY = 10;
15
- async check(filePath, content) {
16
- const violations = [];
17
- // Find all function definitions
18
- const functionPattern = /function\s+(\w+)\s*\([^)]*\)\s*\{/g;
19
- let match;
20
- while ((match = functionPattern.exec(content)) !== null) {
21
- const functionName = match[1];
22
- // Extract function body (simplified - finds next closing brace)
23
- const startIndex = match.index + match[0].length;
24
- const functionBody = this.extractFunctionBody(content, startIndex);
25
- // Calculate cyclomatic complexity
26
- const complexity = this.calculateComplexity(functionBody);
27
- if (complexity > this.MAX_COMPLEXITY) {
28
- const pos = this.getPosition(content, match.index);
29
- violations.push(this.createViolation(filePath, pos.line, pos.column, `Function "${functionName}" has complexity of ${complexity}, exceeds maximum of ${this.MAX_COMPLEXITY}.`, 'Break down the function into smaller, focused functions', { complexity, limit: this.MAX_COMPLEXITY }));
30
- }
31
- }
32
- return violations;
33
- }
34
- /**
35
- * Extract function body (simplified version)
36
- */
37
- extractFunctionBody(content, startIndex) {
38
- let braceCount = 1;
39
- let endIndex = startIndex;
40
- for (let i = startIndex; i < content.length && braceCount > 0; i++) {
41
- if (content[i] === '{')
42
- braceCount++;
43
- if (content[i] === '}')
44
- braceCount--;
45
- endIndex = i;
46
- }
47
- return content.substring(startIndex, endIndex);
48
- }
49
- /**
50
- * Calculate cyclomatic complexity
51
- * Complexity = 1 + number of decision points (if, for, while, case, &&, ||, ?, catch)
52
- */
53
- calculateComplexity(code) {
54
- let complexity = 1;
55
- // Count decision points
56
- const decisionKeywords = [
57
- /\bif\b/g,
58
- /\belse\s+if\b/g,
59
- /\bfor\b/g,
60
- /\bwhile\b/g,
61
- /\bcase\b/g,
62
- /\bcatch\b/g,
63
- /&&/g,
64
- /\|\|/g,
65
- /\?/g,
66
- ];
67
- for (const pattern of decisionKeywords) {
68
- const matches = code.match(pattern);
69
- if (matches) {
70
- complexity += matches.length;
71
- }
72
- }
73
- return complexity;
74
- }
75
- }
76
- //# sourceMappingURL=function-complexity.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"function-complexity.js","sourceRoot":"","sources":["../../../../../src/analyzers/best-practices/rules/typescript/function-complexity.ts"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- /**
2
- * TypeScript Validation Rules
3
- *
4
- * Exports all TypeScript-specific validation rules
5
- */
6
- export { NoAnyTypeRule } from './no-any-type.js';
7
- export { PreferConstRule } from './prefer-const.js';
8
- export { NoImplicitAnyRule } from './no-implicit-any.js';
9
- export { ProperErrorHandlingRule } from './proper-error-handling.js';
10
- export { ConsistentNamingRule } from './consistent-naming.js';
11
- export { NoUnusedVarsRule } from './no-unused-vars.js';
12
- export { FunctionComplexityRule } from './function-complexity.js';
13
- export { MaxFileLengthRule } from './max-file-length.js';
14
- export { NoMagicNumbersRule } from './no-magic-numbers.js';
15
- export { PreferReadonlyRule } from './prefer-readonly.js';
@@ -1,16 +0,0 @@
1
- /**
2
- * TypeScript Validation Rules
3
- *
4
- * Exports all TypeScript-specific validation rules
5
- */
6
- export { NoAnyTypeRule } from './no-any-type.js';
7
- export { PreferConstRule } from './prefer-const.js';
8
- export { NoImplicitAnyRule } from './no-implicit-any.js';
9
- export { ProperErrorHandlingRule } from './proper-error-handling.js';
10
- export { ConsistentNamingRule } from './consistent-naming.js';
11
- export { NoUnusedVarsRule } from './no-unused-vars.js';
12
- export { FunctionComplexityRule } from './function-complexity.js';
13
- export { MaxFileLengthRule } from './max-file-length.js';
14
- export { NoMagicNumbersRule } from './no-magic-numbers.js';
15
- export { PreferReadonlyRule } from './prefer-readonly.js';
16
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/analyzers/best-practices/rules/typescript/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}