@oalacea/daemon 0.6.4 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (286) hide show
  1. package/README.md +268 -58
  2. package/bin/Dockerfile +158 -16
  3. package/bin/docker-entrypoint.sh +293 -0
  4. package/dist/cli/cli.d.ts.map +1 -1
  5. package/dist/cli/cli.js +22 -2
  6. package/dist/cli/cli.js.map +1 -1
  7. package/dist/cli/commands/command.types.d.ts +216 -0
  8. package/dist/cli/commands/command.types.d.ts.map +1 -0
  9. package/dist/cli/commands/command.types.js +64 -0
  10. package/dist/cli/commands/command.types.js.map +1 -0
  11. package/dist/cli/commands/history.command.d.ts +91 -0
  12. package/dist/cli/commands/history.command.d.ts.map +1 -0
  13. package/dist/cli/commands/history.command.js +336 -0
  14. package/dist/cli/commands/history.command.js.map +1 -0
  15. package/dist/cli/commands/index.d.ts +14 -3
  16. package/dist/cli/commands/index.d.ts.map +1 -1
  17. package/dist/cli/commands/index.js +7 -0
  18. package/dist/cli/commands/index.js.map +1 -1
  19. package/dist/cli/commands/optimize.command.d.ts +110 -0
  20. package/dist/cli/commands/optimize.command.d.ts.map +1 -0
  21. package/dist/cli/commands/optimize.command.js +497 -0
  22. package/dist/cli/commands/optimize.command.js.map +1 -0
  23. package/dist/cli/commands/report.command.d.ts +110 -0
  24. package/dist/cli/commands/report.command.d.ts.map +1 -0
  25. package/dist/cli/commands/report.command.js +532 -0
  26. package/dist/cli/commands/report.command.js.map +1 -0
  27. package/dist/cli/commands/review.command.d.ts +110 -0
  28. package/dist/cli/commands/review.command.d.ts.map +1 -0
  29. package/dist/cli/commands/review.command.js +520 -0
  30. package/dist/cli/commands/review.command.js.map +1 -0
  31. package/dist/cli/commands/score.command.d.ts +47 -0
  32. package/dist/cli/commands/score.command.d.ts.map +1 -0
  33. package/dist/cli/commands/score.command.js +261 -0
  34. package/dist/cli/commands/score.command.js.map +1 -0
  35. package/dist/cli/utils/index.d.ts +10 -0
  36. package/dist/cli/utils/index.d.ts.map +1 -0
  37. package/dist/cli/utils/index.js +10 -0
  38. package/dist/cli/utils/index.js.map +1 -0
  39. package/dist/cli/utils/output.d.ts +192 -0
  40. package/dist/cli/utils/output.d.ts.map +1 -0
  41. package/dist/cli/utils/output.js +411 -0
  42. package/dist/cli/utils/output.js.map +1 -0
  43. package/dist/cli/utils/progress.d.ts +204 -0
  44. package/dist/cli/utils/progress.d.ts.map +1 -0
  45. package/dist/cli/utils/progress.js +396 -0
  46. package/dist/cli/utils/progress.js.map +1 -0
  47. package/dist/core/types/index.d.ts +1 -0
  48. package/dist/core/types/index.d.ts.map +1 -1
  49. package/dist/core/types/project.types.d.ts +3 -3
  50. package/dist/core/types/project.types.d.ts.map +1 -1
  51. package/dist/core/types/scoring.types.d.ts +301 -0
  52. package/dist/core/types/scoring.types.d.ts.map +1 -0
  53. package/dist/core/types/scoring.types.js +8 -0
  54. package/dist/core/types/scoring.types.js.map +1 -0
  55. package/dist/services/detection/framework-detector.d.ts.map +1 -1
  56. package/dist/services/detection/framework-detector.js +74 -5
  57. package/dist/services/detection/framework-detector.js.map +1 -1
  58. package/dist/services/index.d.ts +12 -0
  59. package/dist/services/index.d.ts.map +1 -1
  60. package/dist/services/index.js +14 -0
  61. package/dist/services/index.js.map +1 -1
  62. package/dist/services/optimization/detectors/bug-detector.d.ts +82 -0
  63. package/dist/services/optimization/detectors/bug-detector.d.ts.map +1 -0
  64. package/dist/services/optimization/detectors/bug-detector.js +443 -0
  65. package/dist/services/optimization/detectors/bug-detector.js.map +1 -0
  66. package/dist/services/optimization/detectors/code-smell-detector.d.ts +108 -0
  67. package/dist/services/optimization/detectors/code-smell-detector.d.ts.map +1 -0
  68. package/dist/services/optimization/detectors/code-smell-detector.js +569 -0
  69. package/dist/services/optimization/detectors/code-smell-detector.js.map +1 -0
  70. package/dist/services/optimization/detectors/index.d.ts +7 -0
  71. package/dist/services/optimization/detectors/index.d.ts.map +1 -0
  72. package/dist/services/optimization/detectors/index.js +7 -0
  73. package/dist/services/optimization/detectors/index.js.map +1 -0
  74. package/dist/services/optimization/detectors/perf-detector.d.ts +80 -0
  75. package/dist/services/optimization/detectors/perf-detector.d.ts.map +1 -0
  76. package/dist/services/optimization/detectors/perf-detector.js +451 -0
  77. package/dist/services/optimization/detectors/perf-detector.js.map +1 -0
  78. package/dist/services/optimization/index.d.ts +61 -0
  79. package/dist/services/optimization/index.d.ts.map +1 -0
  80. package/dist/services/optimization/index.js +69 -0
  81. package/dist/services/optimization/index.js.map +1 -0
  82. package/dist/services/optimization/optimization.service.d.ts +65 -0
  83. package/dist/services/optimization/optimization.service.d.ts.map +1 -0
  84. package/dist/services/optimization/optimization.service.js +511 -0
  85. package/dist/services/optimization/optimization.service.js.map +1 -0
  86. package/dist/services/optimization/optimization.types.d.ts +343 -0
  87. package/dist/services/optimization/optimization.types.d.ts.map +1 -0
  88. package/dist/services/optimization/optimization.types.js +8 -0
  89. package/dist/services/optimization/optimization.types.js.map +1 -0
  90. package/dist/services/optimization/optimizers/code-optimizer.d.ts +87 -0
  91. package/dist/services/optimization/optimizers/code-optimizer.d.ts.map +1 -0
  92. package/dist/services/optimization/optimizers/code-optimizer.js +436 -0
  93. package/dist/services/optimization/optimizers/code-optimizer.js.map +1 -0
  94. package/dist/services/optimization/optimizers/index.d.ts +7 -0
  95. package/dist/services/optimization/optimizers/index.d.ts.map +1 -0
  96. package/dist/services/optimization/optimizers/index.js +7 -0
  97. package/dist/services/optimization/optimizers/index.js.map +1 -0
  98. package/dist/services/optimization/optimizers/perf-optimizer.d.ts +64 -0
  99. package/dist/services/optimization/optimizers/perf-optimizer.d.ts.map +1 -0
  100. package/dist/services/optimization/optimizers/perf-optimizer.js +330 -0
  101. package/dist/services/optimization/optimizers/perf-optimizer.js.map +1 -0
  102. package/dist/services/optimization/optimizers/refact-optimizer.d.ts +82 -0
  103. package/dist/services/optimization/optimizers/refact-optimizer.d.ts.map +1 -0
  104. package/dist/services/optimization/optimizers/refact-optimizer.js +354 -0
  105. package/dist/services/optimization/optimizers/refact-optimizer.js.map +1 -0
  106. package/dist/services/optimization/patterns/anti-patterns.d.ts +31 -0
  107. package/dist/services/optimization/patterns/anti-patterns.d.ts.map +1 -0
  108. package/dist/services/optimization/patterns/anti-patterns.js +501 -0
  109. package/dist/services/optimization/patterns/anti-patterns.js.map +1 -0
  110. package/dist/services/optimization/patterns/index.d.ts +5 -0
  111. package/dist/services/optimization/patterns/index.d.ts.map +1 -0
  112. package/dist/services/optimization/patterns/index.js +5 -0
  113. package/dist/services/optimization/patterns/index.js.map +1 -0
  114. package/dist/services/reporting/export/chart.exporter.d.ts +59 -0
  115. package/dist/services/reporting/export/chart.exporter.d.ts.map +1 -0
  116. package/dist/services/reporting/export/chart.exporter.js +350 -0
  117. package/dist/services/reporting/export/chart.exporter.js.map +1 -0
  118. package/dist/services/reporting/export/index.d.ts +9 -0
  119. package/dist/services/reporting/export/index.d.ts.map +1 -0
  120. package/dist/services/reporting/export/index.js +10 -0
  121. package/dist/services/reporting/export/index.js.map +1 -0
  122. package/dist/services/reporting/export/pdf.exporter.d.ts +133 -0
  123. package/dist/services/reporting/export/pdf.exporter.d.ts.map +1 -0
  124. package/dist/services/reporting/export/pdf.exporter.js +270 -0
  125. package/dist/services/reporting/export/pdf.exporter.js.map +1 -0
  126. package/dist/services/reporting/history.service.d.ts +93 -0
  127. package/dist/services/reporting/history.service.d.ts.map +1 -0
  128. package/dist/services/reporting/history.service.js +285 -0
  129. package/dist/services/reporting/history.service.js.map +1 -0
  130. package/dist/services/reporting/index.d.ts +15 -0
  131. package/dist/services/reporting/index.d.ts.map +1 -0
  132. package/dist/services/reporting/index.js +16 -0
  133. package/dist/services/reporting/index.js.map +1 -0
  134. package/dist/services/reporting/report.service.d.ts +102 -0
  135. package/dist/services/reporting/report.service.d.ts.map +1 -0
  136. package/dist/services/reporting/report.service.js +240 -0
  137. package/dist/services/reporting/report.service.js.map +1 -0
  138. package/dist/services/reporting/reporting.types.d.ts +329 -0
  139. package/dist/services/reporting/reporting.types.d.ts.map +1 -0
  140. package/dist/services/reporting/reporting.types.js +8 -0
  141. package/dist/services/reporting/reporting.types.js.map +1 -0
  142. package/dist/services/reporting/templates/html.template.d.ts +81 -0
  143. package/dist/services/reporting/templates/html.template.d.ts.map +1 -0
  144. package/dist/services/reporting/templates/html.template.js +741 -0
  145. package/dist/services/reporting/templates/html.template.js.map +1 -0
  146. package/dist/services/reporting/templates/json.template.d.ts +85 -0
  147. package/dist/services/reporting/templates/json.template.d.ts.map +1 -0
  148. package/dist/services/reporting/templates/json.template.js +308 -0
  149. package/dist/services/reporting/templates/json.template.js.map +1 -0
  150. package/dist/services/reporting/templates/markdown.template.d.ts +69 -0
  151. package/dist/services/reporting/templates/markdown.template.d.ts.map +1 -0
  152. package/dist/services/reporting/templates/markdown.template.js +311 -0
  153. package/dist/services/reporting/templates/markdown.template.js.map +1 -0
  154. package/dist/services/reporting/trend-analyzer.d.ts +73 -0
  155. package/dist/services/reporting/trend-analyzer.d.ts.map +1 -0
  156. package/dist/services/reporting/trend-analyzer.js +291 -0
  157. package/dist/services/reporting/trend-analyzer.js.map +1 -0
  158. package/dist/services/review/analyzers/dependency-analyzer.d.ts +87 -0
  159. package/dist/services/review/analyzers/dependency-analyzer.d.ts.map +1 -0
  160. package/dist/services/review/analyzers/dependency-analyzer.js +458 -0
  161. package/dist/services/review/analyzers/dependency-analyzer.js.map +1 -0
  162. package/dist/services/review/analyzers/index.d.ts +13 -0
  163. package/dist/services/review/analyzers/index.d.ts.map +1 -0
  164. package/dist/services/review/analyzers/index.js +13 -0
  165. package/dist/services/review/analyzers/index.js.map +1 -0
  166. package/dist/services/review/analyzers/nestjs-analyzer.d.ts +210 -0
  167. package/dist/services/review/analyzers/nestjs-analyzer.d.ts.map +1 -0
  168. package/dist/services/review/analyzers/nestjs-analyzer.js +571 -0
  169. package/dist/services/review/analyzers/nestjs-analyzer.js.map +1 -0
  170. package/dist/services/review/analyzers/performance-analyzer.d.ts +91 -0
  171. package/dist/services/review/analyzers/performance-analyzer.d.ts.map +1 -0
  172. package/dist/services/review/analyzers/performance-analyzer.js +589 -0
  173. package/dist/services/review/analyzers/performance-analyzer.js.map +1 -0
  174. package/dist/services/review/analyzers/security-analyzer.d.ts +96 -0
  175. package/dist/services/review/analyzers/security-analyzer.d.ts.map +1 -0
  176. package/dist/services/review/analyzers/security-analyzer.js +512 -0
  177. package/dist/services/review/analyzers/security-analyzer.js.map +1 -0
  178. package/dist/services/review/analyzers/static-analyzer.d.ts +90 -0
  179. package/dist/services/review/analyzers/static-analyzer.d.ts.map +1 -0
  180. package/dist/services/review/analyzers/static-analyzer.js +423 -0
  181. package/dist/services/review/analyzers/static-analyzer.js.map +1 -0
  182. package/dist/services/review/fixers/auto-fixer.d.ts +94 -0
  183. package/dist/services/review/fixers/auto-fixer.d.ts.map +1 -0
  184. package/dist/services/review/fixers/auto-fixer.js +404 -0
  185. package/dist/services/review/fixers/auto-fixer.js.map +1 -0
  186. package/dist/services/review/fixers/index.d.ts +11 -0
  187. package/dist/services/review/fixers/index.d.ts.map +1 -0
  188. package/dist/services/review/fixers/index.js +11 -0
  189. package/dist/services/review/fixers/index.js.map +1 -0
  190. package/dist/services/review/fixers/refactor-suggester.d.ts +100 -0
  191. package/dist/services/review/fixers/refactor-suggester.d.ts.map +1 -0
  192. package/dist/services/review/fixers/refactor-suggester.js +555 -0
  193. package/dist/services/review/fixers/refactor-suggester.js.map +1 -0
  194. package/dist/services/review/fixers/test-generator.d.ts +99 -0
  195. package/dist/services/review/fixers/test-generator.d.ts.map +1 -0
  196. package/dist/services/review/fixers/test-generator.js +458 -0
  197. package/dist/services/review/fixers/test-generator.js.map +1 -0
  198. package/dist/services/review/index.d.ts +14 -0
  199. package/dist/services/review/index.d.ts.map +1 -0
  200. package/dist/services/review/index.js +14 -0
  201. package/dist/services/review/index.js.map +1 -0
  202. package/dist/services/review/reporters/fix-reporter.d.ts +67 -0
  203. package/dist/services/review/reporters/fix-reporter.d.ts.map +1 -0
  204. package/dist/services/review/reporters/fix-reporter.js +437 -0
  205. package/dist/services/review/reporters/fix-reporter.js.map +1 -0
  206. package/dist/services/review/reporters/index.d.ts +10 -0
  207. package/dist/services/review/reporters/index.d.ts.map +1 -0
  208. package/dist/services/review/reporters/index.js +10 -0
  209. package/dist/services/review/reporters/index.js.map +1 -0
  210. package/dist/services/review/reporters/score-reporter.d.ts +84 -0
  211. package/dist/services/review/reporters/score-reporter.d.ts.map +1 -0
  212. package/dist/services/review/reporters/score-reporter.js +560 -0
  213. package/dist/services/review/reporters/score-reporter.js.map +1 -0
  214. package/dist/services/review/review.service.d.ts +129 -0
  215. package/dist/services/review/review.service.d.ts.map +1 -0
  216. package/dist/services/review/review.service.js +396 -0
  217. package/dist/services/review/review.service.js.map +1 -0
  218. package/dist/services/review/review.types.d.ts +443 -0
  219. package/dist/services/review/review.types.d.ts.map +1 -0
  220. package/dist/services/review/review.types.js +11 -0
  221. package/dist/services/review/review.types.js.map +1 -0
  222. package/dist/services/scoring/dimensions/accessibility.analyzer.d.ts +53 -0
  223. package/dist/services/scoring/dimensions/accessibility.analyzer.d.ts.map +1 -0
  224. package/dist/services/scoring/dimensions/accessibility.analyzer.js +260 -0
  225. package/dist/services/scoring/dimensions/accessibility.analyzer.js.map +1 -0
  226. package/dist/services/scoring/dimensions/backend-logic.analyzer.d.ts +138 -0
  227. package/dist/services/scoring/dimensions/backend-logic.analyzer.d.ts.map +1 -0
  228. package/dist/services/scoring/dimensions/backend-logic.analyzer.js +713 -0
  229. package/dist/services/scoring/dimensions/backend-logic.analyzer.js.map +1 -0
  230. package/dist/services/scoring/dimensions/business-logic.analyzer.d.ts +142 -0
  231. package/dist/services/scoring/dimensions/business-logic.analyzer.d.ts.map +1 -0
  232. package/dist/services/scoring/dimensions/business-logic.analyzer.js +747 -0
  233. package/dist/services/scoring/dimensions/business-logic.analyzer.js.map +1 -0
  234. package/dist/services/scoring/dimensions/code-quality.analyzer.d.ts +142 -0
  235. package/dist/services/scoring/dimensions/code-quality.analyzer.d.ts.map +1 -0
  236. package/dist/services/scoring/dimensions/code-quality.analyzer.js +685 -0
  237. package/dist/services/scoring/dimensions/code-quality.analyzer.js.map +1 -0
  238. package/dist/services/scoring/dimensions/index.d.ts +18 -0
  239. package/dist/services/scoring/dimensions/index.d.ts.map +1 -0
  240. package/dist/services/scoring/dimensions/index.js +27 -0
  241. package/dist/services/scoring/dimensions/index.js.map +1 -0
  242. package/dist/services/scoring/dimensions/performance.analyzer.d.ts +125 -0
  243. package/dist/services/scoring/dimensions/performance.analyzer.d.ts.map +1 -0
  244. package/dist/services/scoring/dimensions/performance.analyzer.js +615 -0
  245. package/dist/services/scoring/dimensions/performance.analyzer.js.map +1 -0
  246. package/dist/services/scoring/dimensions/security.analyzer.d.ts +53 -0
  247. package/dist/services/scoring/dimensions/security.analyzer.d.ts.map +1 -0
  248. package/dist/services/scoring/dimensions/security.analyzer.js +327 -0
  249. package/dist/services/scoring/dimensions/security.analyzer.js.map +1 -0
  250. package/dist/services/scoring/dimensions/seo.analyzer.d.ts +77 -0
  251. package/dist/services/scoring/dimensions/seo.analyzer.d.ts.map +1 -0
  252. package/dist/services/scoring/dimensions/seo.analyzer.js +502 -0
  253. package/dist/services/scoring/dimensions/seo.analyzer.js.map +1 -0
  254. package/dist/services/scoring/dimensions/test-coverage.analyzer.d.ts +106 -0
  255. package/dist/services/scoring/dimensions/test-coverage.analyzer.d.ts.map +1 -0
  256. package/dist/services/scoring/dimensions/test-coverage.analyzer.js +496 -0
  257. package/dist/services/scoring/dimensions/test-coverage.analyzer.js.map +1 -0
  258. package/dist/services/scoring/dimensions/ui-ux.analyzer.d.ts +126 -0
  259. package/dist/services/scoring/dimensions/ui-ux.analyzer.d.ts.map +1 -0
  260. package/dist/services/scoring/dimensions/ui-ux.analyzer.js +665 -0
  261. package/dist/services/scoring/dimensions/ui-ux.analyzer.js.map +1 -0
  262. package/dist/services/scoring/index.d.ts +10 -0
  263. package/dist/services/scoring/index.d.ts.map +1 -0
  264. package/dist/services/scoring/index.js +10 -0
  265. package/dist/services/scoring/index.js.map +1 -0
  266. package/dist/services/scoring/scoring-service.d.ts +222 -0
  267. package/dist/services/scoring/scoring-service.d.ts.map +1 -0
  268. package/dist/services/scoring/scoring-service.js +636 -0
  269. package/dist/services/scoring/scoring-service.js.map +1 -0
  270. package/package.json +13 -4
  271. package/templates/README.md +183 -0
  272. package/templates/nestjs/controller.spec.ts +203 -0
  273. package/templates/nestjs/e2e/api.e2e-spec.ts +451 -0
  274. package/templates/nestjs/e2e/auth.e2e-spec.ts +533 -0
  275. package/templates/nestjs/fixtures/test-module.ts +311 -0
  276. package/templates/nestjs/guard.spec.ts +314 -0
  277. package/templates/nestjs/interceptor.spec.ts +458 -0
  278. package/templates/nestjs/module.spec.ts +173 -0
  279. package/templates/nestjs/pipe.spec.ts +474 -0
  280. package/templates/nestjs/service.spec.ts +296 -0
  281. package/templates/rust/Cargo.toml +72 -0
  282. package/templates/rust/actix-controller.test.rs +114 -0
  283. package/templates/rust/axum-handler.test.rs +117 -0
  284. package/templates/rust/integration.test.rs +63 -0
  285. package/templates/rust/rocket-route.test.rs +106 -0
  286. package/templates/rust/unit.test.rs +38 -0
@@ -0,0 +1,129 @@
1
+ /**
2
+ * Review Service
3
+ *
4
+ * Service principal d'orchestration du review et fix:
5
+ * - Analyse complète du projet
6
+ * - Application des corrections automatiques
7
+ * - Analyse et fix en une passe
8
+ * - Génération de rapports
9
+ *
10
+ * @module services/review/review.service
11
+ */
12
+ import type { Issue, ReviewResult, ReviewOptions, FixResult, FixOptions, ReportFormat } from './review.types.js';
13
+ import { StaticAnalyzer } from './analyzers/static-analyzer.js';
14
+ import { SecurityAnalyzer } from './analyzers/security-analyzer.js';
15
+ import { DependencyAnalyzer } from './analyzers/dependency-analyzer.js';
16
+ import { PerformanceAnalyzer } from './analyzers/performance-analyzer.js';
17
+ import { AutoFixer } from './fixers/auto-fixer.js';
18
+ import { TestGenerator } from './fixers/test-generator.js';
19
+ import { RefactorSuggester } from './fixers/refactor-suggester.js';
20
+ import { DockerManager } from '../docker/docker-manager.js';
21
+ /**
22
+ * Service de Review et Fix
23
+ */
24
+ export declare class ReviewService {
25
+ private readonly docker;
26
+ private readonly logger;
27
+ private staticAnalyzer;
28
+ private securityAnalyzer;
29
+ private dependencyAnalyzer;
30
+ private performanceAnalyzer;
31
+ private autoFixer;
32
+ private testGenerator;
33
+ private refactorSuggester;
34
+ private scoreReporter;
35
+ private fixReporter;
36
+ constructor(docker?: DockerManager);
37
+ /**
38
+ * Analyse complète d'un projet
39
+ *
40
+ * @param projectPath - Chemin du projet à analyser
41
+ * @param options - Options d'analyse
42
+ * @returns Résultat de l'analyse
43
+ */
44
+ review(projectPath: string, options?: ReviewOptions): Promise<ReviewResult>;
45
+ /**
46
+ * Applique les corrections sur une liste d'issues
47
+ *
48
+ * @param projectPath - Chemin du projet
49
+ * @param issues - Liste des issues à corriger
50
+ * @param options - Options de correction
51
+ * @returns Résultat des corrections
52
+ */
53
+ fix(projectPath: string, issues: Issue[], options?: FixOptions): Promise<FixResult>;
54
+ /**
55
+ * Analyse et corrige en une seule passe
56
+ *
57
+ * @param projectPath - Chemin du projet
58
+ * @param reviewOptions - Options d'analyse
59
+ * @param fixOptions - Options de correction
60
+ * @returns Résultat complet avec corrections appliquées
61
+ */
62
+ analyzeAndFix(projectPath: string, reviewOptions?: ReviewOptions, fixOptions?: FixOptions): Promise<ReviewResult>;
63
+ /**
64
+ * Génère un rapport d'analyse
65
+ *
66
+ * @param result - Résultat de l'analyse
67
+ * @param format - Format du rapport
68
+ * @param outputPath - Chemin de sortie (optionnel)
69
+ */
70
+ generateReport(result: ReviewResult, format?: ReportFormat, outputPath?: string): Promise<void>;
71
+ /**
72
+ * Génère un rapport de corrections
73
+ *
74
+ * @param result - Résultat des corrections
75
+ * @param projectPath - Chemin du projet
76
+ * @param format - Format du rapport
77
+ * @param outputPath - Chemin de sortie (optionnel)
78
+ */
79
+ generateFixReport(result: FixResult, projectPath: string, format?: ReportFormat, outputPath?: string, suggestions?: any[]): Promise<void>;
80
+ /**
81
+ * Retourne l'analyseur statique
82
+ */
83
+ getStaticAnalyzer(): StaticAnalyzer;
84
+ /**
85
+ * Retourne l'analyseur de sécurité
86
+ */
87
+ getSecurityAnalyzer(): SecurityAnalyzer;
88
+ /**
89
+ * Retourne l'analyseur de dépendances
90
+ */
91
+ getDependencyAnalyzer(): DependencyAnalyzer;
92
+ /**
93
+ * Retourne l'analyseur de performance
94
+ */
95
+ getPerformanceAnalyzer(): PerformanceAnalyzer;
96
+ /**
97
+ * Retourne le fixer automatique
98
+ */
99
+ getAutoFixer(): AutoFixer;
100
+ /**
101
+ * Retourne le générateur de tests
102
+ */
103
+ getTestGenerator(): TestGenerator;
104
+ /**
105
+ * Retourne le suggesteur de refactoring
106
+ */
107
+ getRefactorSuggester(): RefactorSuggester;
108
+ /**
109
+ * Filtre les issues par sévérité minimum
110
+ */
111
+ private filterBySeverity;
112
+ /**
113
+ * Charge le score précédent depuis le cache
114
+ */
115
+ private loadPreviousScore;
116
+ }
117
+ /**
118
+ * Obtient ou crée l'instance par défaut du service
119
+ */
120
+ export declare function getReviewService(docker?: DockerManager): ReviewService;
121
+ /**
122
+ * Fonction de commodité pour analyser un projet
123
+ */
124
+ export declare function analyzeProject(projectPath: string, options?: ReviewOptions): Promise<ReviewResult>;
125
+ /**
126
+ * Fonction de commodité pour analyser et corriger un projet
127
+ */
128
+ export declare function analyzeAndFixProject(projectPath: string, reviewOptions?: ReviewOptions, fixOptions?: FixOptions): Promise<ReviewResult>;
129
+ //# sourceMappingURL=review.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review.service.d.ts","sourceRoot":"","sources":["../../../src/services/review/review.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,396 @@
1
+ /**
2
+ * Review Service
3
+ *
4
+ * Service principal d'orchestration du review et fix:
5
+ * - Analyse complète du projet
6
+ * - Application des corrections automatiques
7
+ * - Analyse et fix en une passe
8
+ * - Génération de rapports
9
+ *
10
+ * @module services/review/review.service
11
+ */
12
+ import { existsSync } from 'node:fs';
13
+ import { StaticAnalyzer } from './analyzers/static-analyzer.js';
14
+ import { SecurityAnalyzer } from './analyzers/security-analyzer.js';
15
+ import { DependencyAnalyzer } from './analyzers/dependency-analyzer.js';
16
+ import { PerformanceAnalyzer } from './analyzers/performance-analyzer.js';
17
+ import { AutoFixer } from './fixers/auto-fixer.js';
18
+ import { TestGenerator } from './fixers/test-generator.js';
19
+ import { RefactorSuggester } from './fixers/refactor-suggester.js';
20
+ import { ScoreReporter } from './reporters/score-reporter.js';
21
+ import { FixReporter } from './reporters/fix-reporter.js';
22
+ import { DockerManager } from '../docker/docker-manager.js';
23
+ import { createLogger } from '@/shared/utils/logger.js';
24
+ /**
25
+ * Options par défaut pour le review
26
+ */
27
+ const DEFAULT_REVIEW_OPTIONS = {
28
+ minSeverity: 'low',
29
+ maxFiles: 1000,
30
+ analyzers: {
31
+ static: true,
32
+ security: true,
33
+ dependency: true,
34
+ performance: true,
35
+ testing: true,
36
+ },
37
+ timeout: 300000,
38
+ useCache: true,
39
+ compareWithPrevious: true,
40
+ };
41
+ /**
42
+ * Options par défaut pour le fix
43
+ */
44
+ const DEFAULT_FIX_OPTIONS = {
45
+ autoApply: true,
46
+ maxSeverity: 'medium',
47
+ maxEffort: 5,
48
+ createBackup: true,
49
+ generateTests: false,
50
+ dryRun: false,
51
+ ignore: [],
52
+ };
53
+ /**
54
+ * Service de Review et Fix
55
+ */
56
+ export class ReviewService {
57
+ docker;
58
+ logger;
59
+ staticAnalyzer;
60
+ securityAnalyzer;
61
+ dependencyAnalyzer;
62
+ performanceAnalyzer;
63
+ autoFixer;
64
+ testGenerator;
65
+ refactorSuggester;
66
+ scoreReporter;
67
+ fixReporter;
68
+ constructor(docker) {
69
+ this.docker = docker ?? new DockerManager();
70
+ this.logger = createLogger('ReviewService');
71
+ // Initialiser les analyseurs
72
+ this.staticAnalyzer = new StaticAnalyzer({}, this.docker);
73
+ this.securityAnalyzer = new SecurityAnalyzer({}, this.docker);
74
+ this.dependencyAnalyzer = new DependencyAnalyzer({}, this.docker);
75
+ this.performanceAnalyzer = new PerformanceAnalyzer({}, this.docker);
76
+ // Initialiser les fixers
77
+ this.autoFixer = new AutoFixer(this.docker);
78
+ this.testGenerator = new TestGenerator(this.docker);
79
+ this.refactorSuggester = new RefactorSuggester(this.docker);
80
+ // Initialiser les reporters
81
+ this.scoreReporter = new ScoreReporter();
82
+ this.fixReporter = new FixReporter();
83
+ }
84
+ /**
85
+ * Analyse complète d'un projet
86
+ *
87
+ * @param projectPath - Chemin du projet à analyser
88
+ * @param options - Options d'analyse
89
+ * @returns Résultat de l'analyse
90
+ */
91
+ async review(projectPath, options = {}) {
92
+ const startTime = globalThis.performance.now();
93
+ const mergedOptions = { ...DEFAULT_REVIEW_OPTIONS, ...options };
94
+ this.logger.info(`Starting review for: ${projectPath}`);
95
+ // Vérifier que le projet existe
96
+ if (!existsSync(projectPath)) {
97
+ throw new Error(`Project path does not exist: ${projectPath}`);
98
+ }
99
+ // S'assurer que le conteneur Docker est prêt
100
+ await this.docker.setup({ silent: true });
101
+ const issues = [];
102
+ let coverage, dependencies, performance;
103
+ // Analyse statique
104
+ if (mergedOptions.analyzers.static) {
105
+ this.logger.info('Running static analysis...');
106
+ try {
107
+ const staticIssues = await this.staticAnalyzer.analyze(projectPath, mergedOptions.exclude ?? []);
108
+ issues.push(...staticIssues);
109
+ }
110
+ catch (error) {
111
+ this.logger.warn('Static analysis failed', error);
112
+ }
113
+ }
114
+ // Analyse de sécurité
115
+ if (mergedOptions.analyzers.security) {
116
+ this.logger.info('Running security analysis...');
117
+ try {
118
+ const securityIssues = await this.securityAnalyzer.analyze(projectPath, mergedOptions.exclude ?? []);
119
+ issues.push(...securityIssues);
120
+ }
121
+ catch (error) {
122
+ this.logger.warn('Security analysis failed', error);
123
+ }
124
+ }
125
+ // Analyse des dépendances
126
+ if (mergedOptions.analyzers.dependency) {
127
+ this.logger.info('Running dependency analysis...');
128
+ try {
129
+ const { analysis: depAnalysis, issues: depIssues } = await this.dependencyAnalyzer.analyze(projectPath);
130
+ dependencies = depAnalysis;
131
+ issues.push(...depIssues);
132
+ }
133
+ catch (error) {
134
+ this.logger.warn('Dependency analysis failed', error);
135
+ }
136
+ }
137
+ // Analyse des performances
138
+ if (mergedOptions.analyzers.performance) {
139
+ this.logger.info('Running performance analysis...');
140
+ try {
141
+ const { metrics: perfMetrics, issues: perfIssues } = await this.performanceAnalyzer.analyze(projectPath);
142
+ performance = perfMetrics;
143
+ issues.push(...perfIssues);
144
+ }
145
+ catch (error) {
146
+ this.logger.warn('Performance analysis failed', error);
147
+ }
148
+ }
149
+ // Filtrer les issues par sévérité
150
+ const filteredIssues = this.filterBySeverity(issues, mergedOptions.minSeverity);
151
+ // Filtrer par catégories si spécifié
152
+ const categorizedIssues = mergedOptions.categories
153
+ ? filteredIssues.filter((i) => mergedOptions.categories?.includes(i.category))
154
+ : filteredIssues;
155
+ // Générer les suggestions de refactoring
156
+ const suggestions = await this.refactorSuggester.analyze(projectPath, mergedOptions.exclude ?? []);
157
+ // Calculer le score
158
+ const previousScore = mergedOptions.compareWithPrevious
159
+ ? await this.loadPreviousScore(projectPath)
160
+ : undefined;
161
+ const score = this.scoreReporter.calculateScore(categorizedIssues, previousScore);
162
+ const duration = Math.round(globalThis.performance.now() - startTime);
163
+ this.logger.info(`Review completed in ${duration}ms (${categorizedIssues.length} issues, score: ${score.overall}/100)`);
164
+ return {
165
+ projectPath,
166
+ timestamp: new Date(),
167
+ duration,
168
+ score,
169
+ issues: categorizedIssues,
170
+ fixes: [],
171
+ suggestions,
172
+ coverage,
173
+ dependencies,
174
+ performance,
175
+ summary: {
176
+ totalIssues: categorizedIssues.length,
177
+ fixableIssues: categorizedIssues.filter((i) => i.fixable).length,
178
+ fixedIssues: 0,
179
+ suggestions: suggestions.length,
180
+ },
181
+ };
182
+ }
183
+ /**
184
+ * Applique les corrections sur une liste d'issues
185
+ *
186
+ * @param projectPath - Chemin du projet
187
+ * @param issues - Liste des issues à corriger
188
+ * @param options - Options de correction
189
+ * @returns Résultat des corrections
190
+ */
191
+ async fix(projectPath, issues, options = {}) {
192
+ const startTime = performance.now();
193
+ const mergedOptions = { ...DEFAULT_FIX_OPTIONS, ...options };
194
+ this.logger.info(`Starting auto-fix for ${issues.length} issues`);
195
+ // Filtrer les issues corrigibles
196
+ const fixableIssues = issues.filter((i) => i.fixable && !mergedOptions.ignore?.includes(i.id));
197
+ if (fixableIssues.length === 0) {
198
+ this.logger.info('No fixable issues found');
199
+ return {
200
+ success: true,
201
+ attempted: 0,
202
+ applied: 0,
203
+ failed: 0,
204
+ fixes: [],
205
+ remainingSuggestions: [],
206
+ duration: 0,
207
+ };
208
+ }
209
+ // Appliquer les corrections automatiques
210
+ const fixes = await this.autoFixer.applyFixes(fixableIssues, projectPath, {
211
+ dryRun: mergedOptions.dryRun,
212
+ maxSeverity: mergedOptions.maxSeverity,
213
+ maxEffort: mergedOptions.maxEffort,
214
+ createBackup: mergedOptions.createBackup,
215
+ });
216
+ const applied = fixes.filter((f) => f.applied).length;
217
+ const failed = fixes.filter((f) => !f.applied).length;
218
+ // Générer des tests si demandé
219
+ if (mergedOptions.generateTests) {
220
+ this.logger.info('Generating tests for uncovered code...');
221
+ try {
222
+ await this.testGenerator.generateTests(projectPath, {
223
+ framework: 'vitest',
224
+ dryRun: mergedOptions.dryRun,
225
+ });
226
+ }
227
+ catch (error) {
228
+ this.logger.warn('Test generation failed', error);
229
+ }
230
+ }
231
+ const duration = Math.round(globalThis.performance.now() - startTime);
232
+ this.logger.info(`Auto-fix completed: ${applied} applied, ${failed} failed`);
233
+ return {
234
+ success: failed === 0,
235
+ attempted: fixes.length,
236
+ applied,
237
+ failed,
238
+ fixes,
239
+ remainingSuggestions: [],
240
+ duration,
241
+ };
242
+ }
243
+ /**
244
+ * Analyse et corrige en une seule passe
245
+ *
246
+ * @param projectPath - Chemin du projet
247
+ * @param reviewOptions - Options d'analyse
248
+ * @param fixOptions - Options de correction
249
+ * @returns Résultat complet avec corrections appliquées
250
+ */
251
+ async analyzeAndFix(projectPath, reviewOptions = {}, fixOptions = {}) {
252
+ this.logger.info(`Starting analyze-and-fix for: ${projectPath}`);
253
+ // 1. Analyser
254
+ const reviewResult = await this.review(projectPath, reviewOptions);
255
+ // 2. Corriger les issues corrigibles
256
+ const fixableIssues = reviewResult.issues.filter((i) => i.fixable);
257
+ if (fixableIssues.length > 0) {
258
+ const fixResult = await this.fix(projectPath, fixableIssues, fixOptions);
259
+ // Mettre à jour le résultat avec les corrections
260
+ reviewResult.fixes = fixResult.fixes;
261
+ reviewResult.summary.fixedIssues = fixResult.applied;
262
+ // Recalculer le score après corrections
263
+ const remainingIssues = reviewResult.issues.filter((i) => {
264
+ return !fixResult.fixes.find((f) => f.issueId === i.id && f.applied);
265
+ });
266
+ reviewResult.score = this.scoreReporter.calculateScore(remainingIssues);
267
+ }
268
+ return reviewResult;
269
+ }
270
+ /**
271
+ * Génère un rapport d'analyse
272
+ *
273
+ * @param result - Résultat de l'analyse
274
+ * @param format - Format du rapport
275
+ * @param outputPath - Chemin de sortie (optionnel)
276
+ */
277
+ async generateReport(result, format = 'console', outputPath) {
278
+ const options = {
279
+ format,
280
+ outputPath,
281
+ includeSuggestions: true,
282
+ showDelta: true,
283
+ verbosity: 'normal',
284
+ };
285
+ await this.scoreReporter.generateReport(result, options);
286
+ }
287
+ /**
288
+ * Génère un rapport de corrections
289
+ *
290
+ * @param result - Résultat des corrections
291
+ * @param projectPath - Chemin du projet
292
+ * @param format - Format du rapport
293
+ * @param outputPath - Chemin de sortie (optionnel)
294
+ */
295
+ async generateFixReport(result, projectPath, format = 'console', outputPath, suggestions) {
296
+ const options = {
297
+ format,
298
+ outputPath,
299
+ includeSuggestions: true,
300
+ verbosity: 'normal',
301
+ };
302
+ await this.fixReporter.generateReport(result, projectPath, {
303
+ ...options,
304
+ suggestions,
305
+ remainingIssues: result.attempted - result.applied,
306
+ });
307
+ }
308
+ /**
309
+ * Retourne l'analyseur statique
310
+ */
311
+ getStaticAnalyzer() {
312
+ return this.staticAnalyzer;
313
+ }
314
+ /**
315
+ * Retourne l'analyseur de sécurité
316
+ */
317
+ getSecurityAnalyzer() {
318
+ return this.securityAnalyzer;
319
+ }
320
+ /**
321
+ * Retourne l'analyseur de dépendances
322
+ */
323
+ getDependencyAnalyzer() {
324
+ return this.dependencyAnalyzer;
325
+ }
326
+ /**
327
+ * Retourne l'analyseur de performance
328
+ */
329
+ getPerformanceAnalyzer() {
330
+ return this.performanceAnalyzer;
331
+ }
332
+ /**
333
+ * Retourne le fixer automatique
334
+ */
335
+ getAutoFixer() {
336
+ return this.autoFixer;
337
+ }
338
+ /**
339
+ * Retourne le générateur de tests
340
+ */
341
+ getTestGenerator() {
342
+ return this.testGenerator;
343
+ }
344
+ /**
345
+ * Retourne le suggesteur de refactoring
346
+ */
347
+ getRefactorSuggester() {
348
+ return this.refactorSuggester;
349
+ }
350
+ /**
351
+ * Filtre les issues par sévérité minimum
352
+ */
353
+ filterBySeverity(issues, minSeverity) {
354
+ const severityOrder = ['critical', 'high', 'medium', 'low', 'info'];
355
+ const minIndex = severityOrder.indexOf(minSeverity);
356
+ return issues.filter((issue) => {
357
+ const index = severityOrder.indexOf(issue.severity);
358
+ return index <= minIndex;
359
+ });
360
+ }
361
+ /**
362
+ * Charge le score précédent depuis le cache
363
+ */
364
+ async loadPreviousScore(projectPath) {
365
+ // Implémentation simple - pourrait être étendue
366
+ return undefined;
367
+ }
368
+ }
369
+ /**
370
+ * Instance par défaut du service
371
+ */
372
+ let defaultService = null;
373
+ /**
374
+ * Obtient ou crée l'instance par défaut du service
375
+ */
376
+ export function getReviewService(docker) {
377
+ if (!defaultService) {
378
+ defaultService = new ReviewService(docker);
379
+ }
380
+ return defaultService;
381
+ }
382
+ /**
383
+ * Fonction de commodité pour analyser un projet
384
+ */
385
+ export async function analyzeProject(projectPath, options) {
386
+ const service = getReviewService();
387
+ return service.review(projectPath, options);
388
+ }
389
+ /**
390
+ * Fonction de commodité pour analyser et corriger un projet
391
+ */
392
+ export async function analyzeAndFixProject(projectPath, reviewOptions, fixOptions) {
393
+ const service = getReviewService();
394
+ return service.analyzeAndFix(projectPath, reviewOptions, fixOptions);
395
+ }
396
+ //# sourceMappingURL=review.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"review.service.js","sourceRoot":"","sources":["../../../src/services/review/review.service.ts"],"names":[],"mappings":"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"}