docstodev 3.0.1 → 3.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/docs/docs-to-dev.md +0 -245
- package/docs/report.html +0 -638
- package/docs/report.pdf +0 -0
- package/docs/summary.md +0 -16
package/package.json
CHANGED
package/docs/docs-to-dev.md
DELETED
|
@@ -1,245 +0,0 @@
|
|
|
1
|
-
# Rapport Technique DocsToDev
|
|
2
|
-
|
|
3
|
-
> 📅 Généré le : vendredi 9 janvier 2026 à 10:01
|
|
4
|
-
> 📊 7 fichiers analysés • 15 dépendances identifiées
|
|
5
|
-
|
|
6
|
-
## 🎯 But du Projet
|
|
7
|
-
|
|
8
|
-
Le projet DocsToDev est conçu pour analyser et générer des documents techniques à partir de données brutes de projets logiciels. Il vise à résoudre les problèmes liés à la documentation et à la compréhension des structures de projets complexes. Le public cible est constitué de développeurs, d'architectes logiciels et de membres d'équipes de développement qui ont besoin d'une vision claire et d'une compréhension approfondie de leurs projets.
|
|
9
|
-
|
|
10
|
-
## 💡 Recommandations
|
|
11
|
-
|
|
12
|
-
- 1. **Refactorisation et Modularisation** : Organiser le code en modules plus petits et plus spécialisés pour améliorer la lisibilité et la maintenabilité.
|
|
13
|
-
2. **Gestion des Secrets** : Utiliser des méthodes sécurisées pour stocker et récupérer les clés API et autres secrets, comme les variables d'environnement ou des services de gestion de secrets.
|
|
14
|
-
3. **Optimisation des Performances** : Analyser les performances de l'application, notamment lors de l'analyse de projets de grande taille, et optimiser les algorithmes et les requêtes pour améliorer les temps de réponse.
|
|
15
|
-
4. **Tests Automatisés** : Développer une suite de tests automatisés pour vérifier la fonctionnalité, la performance et la sécurité de l'application.
|
|
16
|
-
5. **Documentation et Commentaires** : Améliorer la documentation et les commentaires dans le code pour faciliter la compréhension et la maintenance par d'autres développeurs.
|
|
17
|
-
|
|
18
|
-
## 💡 Analyse Intelligente
|
|
19
|
-
|
|
20
|
-
## `But` du `Projet`
|
|
21
|
-
`Le` projet `DocsToDev` est conçu pour analyser et générer des documents techniques à partir de données brutes de projets logiciels.
|
|
22
|
-
|
|
23
|
-
`Il` vise à résoudre les problèmes liés à la documentation et à la compréhension des structures de projets complexes.
|
|
24
|
-
|
|
25
|
-
`Le` public cible est constitué de développeurs, d'architectes logiciels et de membres d'équipes de développement qui ont besoin d'une vision claire et d'une compréhension approfondie de leurs projets.
|
|
26
|
-
|
|
27
|
-
## `Design` `System` Détecté
|
|
28
|
-
`Le` projet utilise une palette de couleurs qui n'est pas explicitement définie dans les extraits de code fournis, mais il semblerait qu'il s'appuie sur des standards web modernes.
|
|
29
|
-
|
|
30
|
-
`La` typographie est également standard, sans spécifications particulières.
|
|
31
|
-
|
|
32
|
-
`Les` patterns de composants incluent des éléments tels que des tables, des liens, des codes, et potentiellement des graphiques générés par `Mermaid` pour représenter des structures de données ou des flux de travail.
|
|
33
|
-
|
|
34
|
-
## `Risques` `Identifi`és
|
|
35
|
-
- 🔴 **`Critique`** : `La` sécurité des données et la gestion des clés API (comme la clé GROQ_API_KEY) sont cruciales.
|
|
36
|
-
|
|
37
|
-
L'exposition de ces clés dans le code pose un risque élevé.
|
|
38
|
-
|
|
39
|
-
- 🟡 **`Moyen`** : `La` complexité du code et la gestion des dépendances pourraient nécessiter une attention particulière pour éviter les problèmes de maintenance et de performance.
|
|
40
|
-
|
|
41
|
-
- 🟢 **`Faible`** : L'amélioration de l'expérience utilisateur et la personnalisation de la génération de rapports pourraient être des points d'amélioration mineurs mais importants pour l'adoption et la satisfaction des utilisateurs.
|
|
42
|
-
|
|
43
|
-
## `Recommandations`
|
|
44
|
-
1.
|
|
45
|
-
|
|
46
|
-
**`Refactorisation` et `Modularisation`** : `Organiser` le code en modules plus petits et plus spécialisés pour améliorer la lisibilité et la maintenabilité.
|
|
47
|
-
|
|
48
|
-
2.
|
|
49
|
-
|
|
50
|
-
**`Gestion` des `Secrets`** : `Utiliser` des méthodes sécurisées pour stocker et récupérer les clés API et autres secrets, comme les variables d'environnement ou des services de gestion de secrets.
|
|
51
|
-
|
|
52
|
-
3.
|
|
53
|
-
|
|
54
|
-
**`Optimisation` des `Performances`** : `Analyser` les performances de l'application, notamment lors de l'analyse de projets de grande taille, et optimiser les algorithmes et les requêtes pour améliorer les temps de réponse.
|
|
55
|
-
|
|
56
|
-
4.
|
|
57
|
-
|
|
58
|
-
**`Tests` `Automatis`és** : Développer une suite de tests automatisés pour vérifier la fonctionnalité, la performance et la sécurité de l'application.
|
|
59
|
-
|
|
60
|
-
5.
|
|
61
|
-
|
|
62
|
-
**`Documentation` et `Commentaires`** : `Am`éliorer la documentation et les commentaires dans le code pour faciliter la compréhension et la maintenance par d'autres développeurs.
|
|
63
|
-
|
|
64
|
-
## `Analyse` Détaillée des `Fichiers`
|
|
65
|
-
- **`src/analyzers/`languageAnalyzer`.ts`** : `Ce` fichier définit les analyseurs de langages de programmation.
|
|
66
|
-
|
|
67
|
-
`Il` joue un rôle crucial dans l'analyse du code source et la génération de rapports.
|
|
68
|
-
|
|
69
|
-
`Ses` dépendances incluent les régular expressions pour l'analyse syntaxique.
|
|
70
|
-
|
|
71
|
-
- **`src/ai/`analyzer.ts`** : `Ce` fichier est responsable de l'interaction avec l'IA pour l'analyse des données techniques.
|
|
72
|
-
|
|
73
|
-
`Il` utilise des options de configuration pour personnaliser l'analyse et les résultats.
|
|
74
|
-
|
|
75
|
-
- **`src/cache/`cacheManager`.ts`** : `Il` gère le cache des analyses pour améliorer les performances en réutilisant les résultats d'analyses précédentes.
|
|
76
|
-
|
|
77
|
-
`Ses` dépendances incluent les modules de fichier et de cryptographie pour la gestion sécurisée du cache.
|
|
78
|
-
|
|
79
|
-
- **`src/cli/`index.ts`** : `Ce` fichier définit l'interface de ligne de commande de l'application.
|
|
80
|
-
|
|
81
|
-
`Il` utilise des commandes pour exécuter des tâches spécifiques, comme générer des résumés ou exécuter l'analyse.
|
|
82
|
-
|
|
83
|
-
- **`src/commands/`generateSummary`.ts`** : `Il` est utilisé pour générer un résumé du projet analysé, en incluant des métadonnées et des statistiques sur le code.
|
|
84
|
-
|
|
85
|
-
- **`src/commands/`run.ts`** : `Ce` fichier contient la logique pour exécuter l'analyse complète d'un projet, en utilisant les analyseurs de langage et les capacités d'analyse IA.
|
|
86
|
-
|
|
87
|
-
- **`src/exporters/`html.ts`** : `Il` est responsable de la conversion des résultats d'analyse en documents HTML, facilitant ainsi la visualisation et la partage des résultats.
|
|
88
|
-
|
|
89
|
-
## 📂 Architecture du projet
|
|
90
|
-
|
|
91
|
-
```
|
|
92
|
-
├─ [package-lock.json](../package-lock.json)
|
|
93
|
-
├─ [package.json](../package.json)
|
|
94
|
-
├─ [src/ai/analyzer.ts](../src/ai/analyzer.ts)
|
|
95
|
-
├─ [src/analyzers/languageAnalyzer.ts](../src/analyzers/languageAnalyzer.ts)
|
|
96
|
-
├─ [src/cache/cacheManager.ts](../src/cache/cacheManager.ts)
|
|
97
|
-
├─ [src/cli/index.ts](../src/cli/index.ts)
|
|
98
|
-
├─ [src/commands/generateSummary.ts](../src/commands/generateSummary.ts)
|
|
99
|
-
├─ [src/commands/run.ts](../src/commands/run.ts)
|
|
100
|
-
├─ [src/exporters/html.ts](../src/exporters/html.ts)
|
|
101
|
-
└─ [tsconfig.json](../tsconfig.json)
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
## 🔬 Analyse détaillée des composants
|
|
105
|
-
|
|
106
|
-
### 📄 [`src/analyzers/languageAnalyzer.ts`](../src/analyzers/languageAnalyzer.ts)
|
|
107
|
-
|
|
108
|
-
**Complexité et maintenance** : 580 lignes • 🟠 Élevée (270)
|
|
109
|
-
|
|
110
|
-
**Fonctions** : `getAnalyzer()`, `getSupportedExtensions()`, `isExplicitlySupported()`
|
|
111
|
-
|
|
112
|
-
**Classes** : `TSJSAnalyzer`, `PythonAnalyzer`, `JavaAnalyzer`, `CSharpAnalyzer`, `GoAnalyzer`, `RustAnalyzer`, `HTMLAnalyzer`, `CSSAnalyzer`, `PHPAnalyzer`, `RubyAnalyzer`, `SQLAnalyzer`, `DefaultAnalyzer`
|
|
113
|
-
|
|
114
|
-
**Types/Interfaces** : `LanguageAnalyzer`, `FileAnalysisResult`
|
|
115
|
-
|
|
116
|
-
**Exports publics** : `LanguageAnalyzer`, `FileAnalysisResult`, `getAnalyzer`, `getSupportedExtensions`, `isExplicitlySupported`
|
|
117
|
-
|
|
118
|
-
---
|
|
119
|
-
|
|
120
|
-
### 📄 [`src/ai/analyzer.ts`](../src/ai/analyzer.ts)
|
|
121
|
-
|
|
122
|
-
**Complexité et maintenance** : 289 lignes • 🟢 Faible (46)
|
|
123
|
-
|
|
124
|
-
**Fonctions** : `askAI()`, `askAIDetailed()`, `buildSystemPrompt()`, `parseAIResponse()`
|
|
125
|
-
|
|
126
|
-
**Types/Interfaces** : `AIAnalysisOptions`, `AIAnalysisResult`
|
|
127
|
-
|
|
128
|
-
**Exports publics** : `AIAnalysisOptions`, `AIAnalysisResult`, `askAI`, `askAIDetailed`
|
|
129
|
-
|
|
130
|
-
---
|
|
131
|
-
|
|
132
|
-
### 📄 [`src/cache/cacheManager.ts`](../src/cache/cacheManager.ts)
|
|
133
|
-
|
|
134
|
-
**Complexité et maintenance** : 179 lignes • 🟢 Faible (36)
|
|
135
|
-
|
|
136
|
-
**Classes** : `CacheManager`
|
|
137
|
-
|
|
138
|
-
**Types/Interfaces** : `CacheEntry`, `CacheManifest`
|
|
139
|
-
|
|
140
|
-
**Exports publics** : `CacheEntry`, `CacheManifest`, `CacheManager`
|
|
141
|
-
|
|
142
|
-
**Dépendances** :
|
|
143
|
-
|
|
144
|
-
• `node:crypto` (Node.js) → utilise `createHash`
|
|
145
|
-
• `node:fs` (Node.js) → utilise `readFileSync, writeFileSync, existsSync, statSync, mkdirSync`
|
|
146
|
-
• `node:path` (Node.js) → utilise `path`
|
|
147
|
-
|
|
148
|
-
---
|
|
149
|
-
|
|
150
|
-
### 📄 [`src/cli/index.ts`](../src/cli/index.ts)
|
|
151
|
-
|
|
152
|
-
**Complexité et maintenance** : 355 lignes • 🟡 Modérée (77)
|
|
153
|
-
|
|
154
|
-
**Fonctions** : `typeWriter()`, `showBanner()`, `selectLanguage()`, `showTransition()`
|
|
155
|
-
|
|
156
|
-
**Classes** : `Spinner`, `ProgressBar`
|
|
157
|
-
|
|
158
|
-
**Dépendances** :
|
|
159
|
-
|
|
160
|
-
• `commander` (NPM) → utilise `Command`
|
|
161
|
-
• `../commands/run.js` (Interne) → utilise `runCommand`
|
|
162
|
-
• `../commands/generateSummary.js` (Interne) → utilise `generateSummary`
|
|
163
|
-
• `node:readline/promises` (Node.js) → utilise `readline`
|
|
164
|
-
• `node:process` (Node.js) → utilise `stdin as input, stdout as output`
|
|
165
|
-
• `node:path` (Node.js) → utilise `path`
|
|
166
|
-
|
|
167
|
-
---
|
|
168
|
-
|
|
169
|
-
### 📄 [`src/commands/generateSummary.ts`](../src/commands/generateSummary.ts)
|
|
170
|
-
|
|
171
|
-
**Complexité et maintenance** : 150 lignes • 🟢 Faible (27)
|
|
172
|
-
|
|
173
|
-
**Fonctions** : `generateSummary()`
|
|
174
|
-
|
|
175
|
-
**Types/Interfaces** : `SummaryData`
|
|
176
|
-
|
|
177
|
-
**Exports publics** : `generateSummary`
|
|
178
|
-
|
|
179
|
-
**Dépendances** :
|
|
180
|
-
|
|
181
|
-
• `node:fs` (Node.js) → utilise `writeFileSync, mkdirSync`
|
|
182
|
-
• `node:path` (Node.js) → utilise `path`
|
|
183
|
-
|
|
184
|
-
---
|
|
185
|
-
|
|
186
|
-
### 📄 [`src/commands/run.ts`](../src/commands/run.ts)
|
|
187
|
-
|
|
188
|
-
**Complexité et maintenance** : 459 lignes • 🟡 Modérée (108)
|
|
189
|
-
|
|
190
|
-
**Fonctions** : `buildTree()`, `renderTree()`, `analyzeFile()`, `getComplexityLevel()`, `formatAISummary()`, `runCommand()`, `generatePDF()`
|
|
191
|
-
|
|
192
|
-
**Types/Interfaces** : `AIAnalysisOptions`, `TreeNode`, `FileAnalysis`
|
|
193
|
-
|
|
194
|
-
**Exports publics** : `runCommand`
|
|
195
|
-
|
|
196
|
-
**Dépendances** :
|
|
197
|
-
|
|
198
|
-
• `globby` (NPM) → utilise `globby`
|
|
199
|
-
• `node:fs` (Node.js) → utilise `writeFileSync, readFileSync, existsSync, mkdirSync`
|
|
200
|
-
• `node:path` (Node.js) → utilise `path`
|
|
201
|
-
• `puppeteer` (NPM) → utilise `puppeteer`
|
|
202
|
-
• `../exporters/html.js` (Interne) → utilise `exportToHTML`
|
|
203
|
-
• `../ai/analyzer.js` (Interne) → utilise `askAIDetailed, type AIAnalysisOptions`
|
|
204
|
-
• `../analyzers/languageAnalyzer.js` (Interne) → utilise `getAnalyzer, getSupportedExtensions`
|
|
205
|
-
• `../cache/cacheManager.js` (Interne) → utilise `CacheManager`
|
|
206
|
-
|
|
207
|
-
---
|
|
208
|
-
|
|
209
|
-
### 📄 [`src/exporters/html.ts`](../src/exporters/html.ts)
|
|
210
|
-
|
|
211
|
-
**Complexité et maintenance** : 894 lignes • 🟠 Élevée (152)
|
|
212
|
-
|
|
213
|
-
**Fonctions** : `exportToHTML()`, `toggleTheme()`, `sanitizeMermaidGraph()`, `generateHierarchyGraph()`, `sanitizeLabel()`, `getFileExtension()`, `getNodeStyle()`, `traverse()`, `getDefaultHierarchyGraph()`, `generateDataFlowGraph()`, `formatRisksSection()`, `formatText()`
|
|
214
|
-
|
|
215
|
-
**Types/Interfaces** : `TreeStructure`
|
|
216
|
-
|
|
217
|
-
**Exports publics** : `exportToHTML`
|
|
218
|
-
|
|
219
|
-
**Dépendances** :
|
|
220
|
-
|
|
221
|
-
• `node:fs` (Node.js) → utilise `writeFileSync`
|
|
222
|
-
• `node:path` (Node.js) → utilise `path`
|
|
223
|
-
• `https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs` (NPM) → utilise `mermaid`
|
|
224
|
-
|
|
225
|
-
---
|
|
226
|
-
|
|
227
|
-
## 📦 Modules externes
|
|
228
|
-
|
|
229
|
-
| Module | Type | Occurrences |
|
|
230
|
-
| :--- | :--- | :---: |
|
|
231
|
-
| `../ai/analyzer.js` | Interne | 1 |
|
|
232
|
-
| `../analyzers/languageAnalyzer.js` | Interne | 1 |
|
|
233
|
-
| `../cache/cacheManager.js` | Interne | 1 |
|
|
234
|
-
| `../commands/generateSummary.js` | Interne | 1 |
|
|
235
|
-
| `../commands/run.js` | Interne | 1 |
|
|
236
|
-
| `../exporters/html.js` | Interne | 1 |
|
|
237
|
-
| `commander` | NPM | 1 |
|
|
238
|
-
| `globby` | NPM | 1 |
|
|
239
|
-
| `https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs` | NPM | 1 |
|
|
240
|
-
| `node:crypto` | Node.js | 1 |
|
|
241
|
-
| `node:fs` | Node.js | 4 |
|
|
242
|
-
| `node:path` | Node.js | 5 |
|
|
243
|
-
| `node:process` | Node.js | 1 |
|
|
244
|
-
| `node:readline/promises` | Node.js | 1 |
|
|
245
|
-
| `puppeteer` | NPM | 1 |
|
package/docs/report.html
DELETED
|
@@ -1,638 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="fr" data-theme="dark">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8">
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
-
<title>DocsToDev – Rapport Technique</title>
|
|
7
|
-
|
|
8
|
-
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400&family=Fira+Code&display=swap" rel="stylesheet">
|
|
9
|
-
<script type="module">
|
|
10
|
-
import mermaid from 'https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs';
|
|
11
|
-
|
|
12
|
-
mermaid.initialize({
|
|
13
|
-
startOnLoad: true,
|
|
14
|
-
theme: document.documentElement.dataset.theme === "dark" ? "dark" : "default",
|
|
15
|
-
securityLevel: 'loose',
|
|
16
|
-
logLevel: 'error',
|
|
17
|
-
themeVariables: {
|
|
18
|
-
darkMode: document.documentElement.dataset.theme === "dark",
|
|
19
|
-
background: "transparent",
|
|
20
|
-
primaryColor: "#58a6ff",
|
|
21
|
-
primaryTextColor: "#c9d1d9",
|
|
22
|
-
primaryBorderColor: "#30363d",
|
|
23
|
-
lineColor: "#8b949e",
|
|
24
|
-
secondaryColor: "#161b22",
|
|
25
|
-
tertiaryColor: "#0d1117",
|
|
26
|
-
fontSize: "14px",
|
|
27
|
-
fontFamily: "Inter, sans-serif"
|
|
28
|
-
},
|
|
29
|
-
flowchart: {
|
|
30
|
-
useMaxWidth: true,
|
|
31
|
-
htmlLabels: true,
|
|
32
|
-
curve: 'basis'
|
|
33
|
-
}
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
window.mermaid = mermaid;
|
|
37
|
-
</script>
|
|
38
|
-
|
|
39
|
-
<style>
|
|
40
|
-
:root[data-theme="dark"] {
|
|
41
|
-
--bg: #0d1117;
|
|
42
|
-
--card: #161b22;
|
|
43
|
-
--text: #c9d1d9;
|
|
44
|
-
--muted: #8b949e;
|
|
45
|
-
--border: #30363d;
|
|
46
|
-
--accent: #58a6ff;
|
|
47
|
-
--code-bg: #1f2428;
|
|
48
|
-
--file-badge-bg: rgba(248, 81, 73, 0.15);
|
|
49
|
-
--file-badge-text: #f85149;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
:root[data-theme="light"] {
|
|
53
|
-
--bg: #ffffff;
|
|
54
|
-
--card: #f6f8fa;
|
|
55
|
-
--text: #24292f;
|
|
56
|
-
--muted: #57606a;
|
|
57
|
-
--border: #d0d7de;
|
|
58
|
-
--accent: #0969da;
|
|
59
|
-
--code-bg: #eaeef2;
|
|
60
|
-
--file-badge-bg: rgba(218, 54, 51, 0.15);
|
|
61
|
-
--file-badge-text: #da3633;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
* {
|
|
65
|
-
margin: 0;
|
|
66
|
-
padding: 0;
|
|
67
|
-
box-sizing: border-box;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
body {
|
|
71
|
-
font-family: Inter, sans-serif;
|
|
72
|
-
background: var(--bg);
|
|
73
|
-
color: var(--text);
|
|
74
|
-
line-height: 1.6;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
.container {
|
|
78
|
-
max-width: 1400px;
|
|
79
|
-
margin: 0 auto;
|
|
80
|
-
padding: 2rem;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
.controls {
|
|
84
|
-
position: sticky;
|
|
85
|
-
top: 0;
|
|
86
|
-
background: var(--bg);
|
|
87
|
-
padding: 1rem 0;
|
|
88
|
-
display: flex;
|
|
89
|
-
gap: 0.75rem;
|
|
90
|
-
z-index: 100;
|
|
91
|
-
border-bottom: 1px solid var(--border);
|
|
92
|
-
margin-bottom: 2rem;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
#search {
|
|
96
|
-
flex: 1;
|
|
97
|
-
padding: 0.6rem 1rem;
|
|
98
|
-
border: 1px solid var(--border);
|
|
99
|
-
background: var(--card);
|
|
100
|
-
color: var(--text);
|
|
101
|
-
font-size: 0.95rem;
|
|
102
|
-
font-family: Inter, sans-serif;
|
|
103
|
-
transition: border-color 0.2s;
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
#search:focus {
|
|
107
|
-
outline: none;
|
|
108
|
-
border-color: var(--accent);
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
button {
|
|
112
|
-
padding: 0.6rem 1.2rem;
|
|
113
|
-
border: 1px solid var(--border);
|
|
114
|
-
background: var(--card);
|
|
115
|
-
color: var(--text);
|
|
116
|
-
cursor: pointer;
|
|
117
|
-
font-size: 0.95rem;
|
|
118
|
-
font-family: Inter, sans-serif;
|
|
119
|
-
transition: all 0.2s;
|
|
120
|
-
display: flex;
|
|
121
|
-
align-items: center;
|
|
122
|
-
gap: 0.5rem;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
button:hover {
|
|
126
|
-
background: var(--border);
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
button svg {
|
|
130
|
-
width: 16px;
|
|
131
|
-
height: 16px;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
h1 {
|
|
135
|
-
font-size: 2.5rem;
|
|
136
|
-
color: var(--accent);
|
|
137
|
-
margin-bottom: 3rem;
|
|
138
|
-
font-weight: 400;
|
|
139
|
-
letter-spacing: -0.02em;
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
h2 {
|
|
143
|
-
font-size: 1.5rem;
|
|
144
|
-
margin: 3rem 0 1.5rem 0;
|
|
145
|
-
padding-bottom: 0.75rem;
|
|
146
|
-
border-bottom: 1px solid var(--border);
|
|
147
|
-
font-weight: 400;
|
|
148
|
-
color: var(--text);
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
h3 {
|
|
152
|
-
font-size: 1.1rem;
|
|
153
|
-
margin-bottom: 1rem;
|
|
154
|
-
color: var(--accent);
|
|
155
|
-
font-weight: 400;
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
.graphs-grid {
|
|
159
|
-
display: grid;
|
|
160
|
-
grid-template-columns: repeat(auto-fit, minmax(500px, 1fr));
|
|
161
|
-
gap: 2rem;
|
|
162
|
-
margin: 2rem 0;
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
.graph-container {
|
|
166
|
-
border: 1px solid var(--border);
|
|
167
|
-
background: var(--card);
|
|
168
|
-
padding: 1.5rem;
|
|
169
|
-
min-height: 300px;
|
|
170
|
-
position: relative;
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
.graph-title {
|
|
174
|
-
font-size: 1rem;
|
|
175
|
-
color: var(--muted);
|
|
176
|
-
margin-bottom: 1rem;
|
|
177
|
-
text-transform: uppercase;
|
|
178
|
-
letter-spacing: 0.05em;
|
|
179
|
-
font-size: 0.85rem;
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
.mermaid-wrapper {
|
|
183
|
-
width: 100%;
|
|
184
|
-
overflow-x: auto;
|
|
185
|
-
overflow-y: hidden;
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
.component {
|
|
189
|
-
border: 1px solid var(--border);
|
|
190
|
-
background: var(--card);
|
|
191
|
-
padding: 1.5rem;
|
|
192
|
-
margin-bottom: 1.5rem;
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
.component p,
|
|
196
|
-
.component .list-item {
|
|
197
|
-
word-wrap: break-word;
|
|
198
|
-
overflow-wrap: break-word;
|
|
199
|
-
word-break: break-word;
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
.tree-line {
|
|
203
|
-
font-family: "Fira Code", monospace;
|
|
204
|
-
font-size: 0.85rem;
|
|
205
|
-
white-space: pre-wrap;
|
|
206
|
-
word-wrap: break-word;
|
|
207
|
-
color: var(--muted);
|
|
208
|
-
line-height: 1.8;
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
.branch {
|
|
212
|
-
color: var(--accent);
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
.pipe {
|
|
216
|
-
color: var(--border);
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
.file-badge {
|
|
220
|
-
background: var(--file-badge-bg);
|
|
221
|
-
color: var(--file-badge-text);
|
|
222
|
-
padding: 0.15rem 0.5rem;
|
|
223
|
-
font-size: 0.8rem;
|
|
224
|
-
font-family: "Fira Code", monospace;
|
|
225
|
-
display: inline-block;
|
|
226
|
-
margin-left: 0.25rem;
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
.table-container {
|
|
230
|
-
border: 1px solid var(--border);
|
|
231
|
-
margin: 1.5rem 0;
|
|
232
|
-
overflow-x: auto;
|
|
233
|
-
background: var(--card);
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
table {
|
|
237
|
-
width: 100%;
|
|
238
|
-
border-collapse: collapse;
|
|
239
|
-
font-size: 0.9rem;
|
|
240
|
-
table-layout: fixed;
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
th, td {
|
|
244
|
-
border-bottom: 1px solid var(--border);
|
|
245
|
-
padding: 0.75rem 1rem;
|
|
246
|
-
text-align: left;
|
|
247
|
-
word-wrap: break-word;
|
|
248
|
-
overflow-wrap: break-word;
|
|
249
|
-
}
|
|
250
|
-
|
|
251
|
-
th {
|
|
252
|
-
background: var(--bg);
|
|
253
|
-
color: var(--muted);
|
|
254
|
-
text-transform: uppercase;
|
|
255
|
-
font-size: 0.8rem;
|
|
256
|
-
letter-spacing: 0.05em;
|
|
257
|
-
font-weight: 400;
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
tr:last-child td {
|
|
261
|
-
border-bottom: none;
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
code {
|
|
265
|
-
font-family: "Fira Code", monospace;
|
|
266
|
-
background: var(--code-bg);
|
|
267
|
-
padding: 0.2rem 0.4rem;
|
|
268
|
-
font-size: 0.9em;
|
|
269
|
-
color: var(--accent);
|
|
270
|
-
word-wrap: break-word;
|
|
271
|
-
overflow-wrap: break-word;
|
|
272
|
-
}
|
|
273
|
-
|
|
274
|
-
.list-item {
|
|
275
|
-
margin-bottom: 0.5rem;
|
|
276
|
-
padding-left: 1.5rem;
|
|
277
|
-
position: relative;
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
.list-item::before {
|
|
281
|
-
content: "";
|
|
282
|
-
position: absolute;
|
|
283
|
-
left: 0.5rem;
|
|
284
|
-
top: 0.7rem;
|
|
285
|
-
width: 4px;
|
|
286
|
-
height: 4px;
|
|
287
|
-
background: var(--accent);
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
p {
|
|
291
|
-
margin-bottom: 1rem;
|
|
292
|
-
color: var(--muted);
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
a {
|
|
296
|
-
color: var(--accent);
|
|
297
|
-
text-decoration: none;
|
|
298
|
-
}
|
|
299
|
-
|
|
300
|
-
a:hover {
|
|
301
|
-
text-decoration: underline;
|
|
302
|
-
}
|
|
303
|
-
|
|
304
|
-
mark {
|
|
305
|
-
background: #ffd33d;
|
|
306
|
-
color: #000;
|
|
307
|
-
padding: 0.1rem 0.3rem;
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
.mermaid {
|
|
311
|
-
background: transparent;
|
|
312
|
-
display: flex;
|
|
313
|
-
justify-content: center;
|
|
314
|
-
align-items: center;
|
|
315
|
-
min-height: 200px;
|
|
316
|
-
}
|
|
317
|
-
|
|
318
|
-
.mermaid svg {
|
|
319
|
-
max-width: 100%;
|
|
320
|
-
height: auto;
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
.error-message {
|
|
324
|
-
color: #f85149;
|
|
325
|
-
padding: 1rem;
|
|
326
|
-
background: rgba(248, 81, 73, 0.1);
|
|
327
|
-
border: 1px solid rgba(248, 81, 73, 0.3);
|
|
328
|
-
border-radius: 4px;
|
|
329
|
-
font-family: "Fira Code", monospace;
|
|
330
|
-
font-size: 0.9rem;
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
.project-goal-section {
|
|
334
|
-
background: linear-gradient(135deg, var(--accent) 0%, #7c3aed 100%);
|
|
335
|
-
padding: 2rem;
|
|
336
|
-
margin: 2rem 0;
|
|
337
|
-
border-radius: 8px;
|
|
338
|
-
border-left: 4px solid var(--accent);
|
|
339
|
-
}
|
|
340
|
-
|
|
341
|
-
.project-goal-section h2 {
|
|
342
|
-
color: #ffffff;
|
|
343
|
-
border-bottom: none;
|
|
344
|
-
margin: 0 0 1rem 0;
|
|
345
|
-
font-size: 1.8rem;
|
|
346
|
-
}
|
|
347
|
-
|
|
348
|
-
.project-goal-section p {
|
|
349
|
-
color: rgba(255, 255, 255, 0.95);
|
|
350
|
-
font-size: 1.1rem;
|
|
351
|
-
line-height: 1.8;
|
|
352
|
-
}
|
|
353
|
-
|
|
354
|
-
.risks-section {
|
|
355
|
-
background: var(--card);
|
|
356
|
-
border: 1px solid var(--border);
|
|
357
|
-
border-left: 4px solid #f85149;
|
|
358
|
-
padding: 1.5rem;
|
|
359
|
-
margin: 2rem 0;
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
.risks-section h3 {
|
|
363
|
-
color: #f85149;
|
|
364
|
-
margin-bottom: 1rem;
|
|
365
|
-
}
|
|
366
|
-
|
|
367
|
-
.risk-item {
|
|
368
|
-
padding: 0.75rem;
|
|
369
|
-
margin: 0.5rem 0;
|
|
370
|
-
border-radius: 4px;
|
|
371
|
-
display: flex;
|
|
372
|
-
align-items: flex-start;
|
|
373
|
-
gap: 0.75rem;
|
|
374
|
-
}
|
|
375
|
-
|
|
376
|
-
.risk-item.critical {
|
|
377
|
-
background: rgba(248, 81, 73, 0.1);
|
|
378
|
-
border-left: 3px solid #f85149;
|
|
379
|
-
}
|
|
380
|
-
|
|
381
|
-
.risk-item.medium {
|
|
382
|
-
background: rgba(251, 191, 36, 0.1);
|
|
383
|
-
border-left: 3px solid #fbbf24;
|
|
384
|
-
}
|
|
385
|
-
|
|
386
|
-
.risk-item.low {
|
|
387
|
-
background: rgba(34, 197, 94, 0.1);
|
|
388
|
-
border-left: 3px solid #22c55e;
|
|
389
|
-
}
|
|
390
|
-
|
|
391
|
-
.risk-icon {
|
|
392
|
-
font-size: 1.2rem;
|
|
393
|
-
flex-shrink: 0;
|
|
394
|
-
}
|
|
395
|
-
|
|
396
|
-
.recommendations-section {
|
|
397
|
-
background: var(--card);
|
|
398
|
-
border: 1px solid var(--border);
|
|
399
|
-
border-left: 4px solid #22c55e;
|
|
400
|
-
padding: 1.5rem;
|
|
401
|
-
margin: 2rem 0;
|
|
402
|
-
}
|
|
403
|
-
|
|
404
|
-
.recommendations-section h3 {
|
|
405
|
-
color: #22c55e;
|
|
406
|
-
margin-bottom: 1rem;
|
|
407
|
-
}
|
|
408
|
-
|
|
409
|
-
.recommendation-item {
|
|
410
|
-
padding: 0.75rem;
|
|
411
|
-
margin: 0.5rem 0;
|
|
412
|
-
background: rgba(34, 197, 94, 0.05);
|
|
413
|
-
border-radius: 4px;
|
|
414
|
-
padding-left: 2rem;
|
|
415
|
-
position: relative;
|
|
416
|
-
}
|
|
417
|
-
|
|
418
|
-
.recommendation-item::before {
|
|
419
|
-
content: "💡";
|
|
420
|
-
position: absolute;
|
|
421
|
-
left: 0.5rem;
|
|
422
|
-
top: 0.75rem;
|
|
423
|
-
}
|
|
424
|
-
|
|
425
|
-
.design-system-section {
|
|
426
|
-
background: var(--card);
|
|
427
|
-
border: 1px solid var(--border);
|
|
428
|
-
padding: 1.5rem;
|
|
429
|
-
margin: 2rem 0;
|
|
430
|
-
}
|
|
431
|
-
|
|
432
|
-
.color-palette {
|
|
433
|
-
display: flex;
|
|
434
|
-
gap: 1rem;
|
|
435
|
-
flex-wrap: wrap;
|
|
436
|
-
margin: 1rem 0;
|
|
437
|
-
}
|
|
438
|
-
|
|
439
|
-
.color-swatch {
|
|
440
|
-
display: flex;
|
|
441
|
-
flex-direction: column;
|
|
442
|
-
align-items: center;
|
|
443
|
-
gap: 0.5rem;
|
|
444
|
-
}
|
|
445
|
-
|
|
446
|
-
.color-box {
|
|
447
|
-
width: 60px;
|
|
448
|
-
height: 60px;
|
|
449
|
-
border-radius: 8px;
|
|
450
|
-
border: 2px solid var(--border);
|
|
451
|
-
box-shadow: 0 2px 8px rgba(0,0,0,0.1);
|
|
452
|
-
}
|
|
453
|
-
|
|
454
|
-
.color-label {
|
|
455
|
-
font-size: 0.75rem;
|
|
456
|
-
font-family: "Fira Code", monospace;
|
|
457
|
-
color: var(--muted);
|
|
458
|
-
}
|
|
459
|
-
|
|
460
|
-
@media print {
|
|
461
|
-
.controls {
|
|
462
|
-
display: none;
|
|
463
|
-
}
|
|
464
|
-
|
|
465
|
-
.container {
|
|
466
|
-
max-width: 100%;
|
|
467
|
-
padding: 0;
|
|
468
|
-
}
|
|
469
|
-
|
|
470
|
-
.component {
|
|
471
|
-
page-break-inside: avoid;
|
|
472
|
-
}
|
|
473
|
-
}
|
|
474
|
-
|
|
475
|
-
@media (max-width: 768px) {
|
|
476
|
-
.graphs-grid {
|
|
477
|
-
grid-template-columns: 1fr;
|
|
478
|
-
}
|
|
479
|
-
|
|
480
|
-
.controls {
|
|
481
|
-
flex-direction: column;
|
|
482
|
-
}
|
|
483
|
-
}
|
|
484
|
-
</style>
|
|
485
|
-
</head>
|
|
486
|
-
|
|
487
|
-
<body>
|
|
488
|
-
<div class="container">
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
<div class="project-goal-section">
|
|
492
|
-
<h2>🎯 But du Projet</h2>
|
|
493
|
-
<p>Le projet DocsToDev est conçu pour analyser et générer des documents techniques à partir de données brutes de projets logiciels. Il vise à résoudre les problèmes liés à la documentation et à la compréhension des structures de projets complexes. Le public cible est constitué de développeurs, d'architectes logiciels et de membres d'équipes de développement qui ont besoin d'une vision claire et d'une compréhension approfondie de leurs projets.</p>
|
|
494
|
-
</div>
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
<div class="controls">
|
|
500
|
-
<input id="search" placeholder="Rechercher dans la documentation..." type="text">
|
|
501
|
-
<button onclick="toggleTheme()">
|
|
502
|
-
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
503
|
-
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"/>
|
|
504
|
-
</svg>
|
|
505
|
-
Thème
|
|
506
|
-
</button>
|
|
507
|
-
<button onclick="window.print()">
|
|
508
|
-
<svg fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
509
|
-
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17 17h2a2 2 0 002-2v-4a2 2 0 00-2-2H5a2 2 0 00-2 2v4a2 2 0 002 2h2m2 4h6a2 2 0 002-2v-4a2 2 0 00-2-2H9a2 2 0 00-2 2v4a2 2 0 002 2zm8-12V5a2 2 0 00-2-2H9a2 2 0 00-2 2v4h10z"/>
|
|
510
|
-
</svg>
|
|
511
|
-
Exporter PDF
|
|
512
|
-
</button>
|
|
513
|
-
</div>
|
|
514
|
-
|
|
515
|
-
<h2>Architecture du projet</h2>
|
|
516
|
-
<div class="graphs-grid">
|
|
517
|
-
<div class="graph-container">
|
|
518
|
-
<div class="graph-title">Graphe des dépendances</div>
|
|
519
|
-
<div class="mermaid-wrapper">
|
|
520
|
-
<pre class="mermaid">
|
|
521
|
-
graph LR
|
|
522
|
-
index_ts --> run_js:::jsFileStyle
|
|
523
|
-
index_ts --> generateSummary_js:::jsFileStyle
|
|
524
|
-
run_ts --> html_js:::jsFileStyle
|
|
525
|
-
run_ts --> analyzer_js:::jsFileStyle
|
|
526
|
-
run_ts --> languageAnalyzer_js:::jsFileStyle
|
|
527
|
-
run_ts --> cacheManager_js:::jsFileStyle
|
|
528
|
-
|
|
529
|
-
classDef jsFileStyle fill:#f7df1e,stroke:#c9b003,stroke-width:2px,color:#000
|
|
530
|
-
classDef tsFileStyle fill:#3178c6,stroke:#235a97,stroke-width:2px,color:#fff
|
|
531
|
-
classDef analyzerStyle fill:#8b5cf6,stroke:#6d28d9,stroke-width:2px,color:#fff
|
|
532
|
-
classDef componentStyle fill:#06b6d4,stroke:#0891b2,stroke-width:2px,color:#fff
|
|
533
|
-
classDef functionStyle fill:#ec4899,stroke:#be185d,stroke-width:2px,color:#fff
|
|
534
|
-
classDef serviceStyle fill:#10b981,stroke:#059669,stroke-width:2px,color:#fff
|
|
535
|
-
classDef configStyle fill:#6e7681,stroke:#484f58,stroke-width:2px,color:#fff
|
|
536
|
-
</pre>
|
|
537
|
-
</div>
|
|
538
|
-
</div>
|
|
539
|
-
|
|
540
|
-
<div class="graph-container">
|
|
541
|
-
<div class="graph-title">Structure du projet</div>
|
|
542
|
-
<div class="mermaid-wrapper">
|
|
543
|
-
<pre class="mermaid">
|
|
544
|
-
graph TD
|
|
545
|
-
node0["📄 package-lock.json"]:::configStyle
|
|
546
|
-
node1["📄 package.json"]:::configStyle
|
|
547
|
-
node2["📄 tsconfig.json"]:::configStyle
|
|
548
|
-
node3["📄 srcanalyzerslanguageAnalyzer.ts"]:::tsStyle
|
|
549
|
-
node4["📄 srcaianalyzer.ts"]:::tsStyle
|
|
550
|
-
node5["📄 srccachecacheManager.ts"]:::tsStyle
|
|
551
|
-
node6["📄 srccliindex.ts"]:::tsStyle
|
|
552
|
-
node7["📄 srccommandsgenerateSummary.ts"]:::tsStyle
|
|
553
|
-
node8["📄 srccommandsrun.ts"]:::tsStyle
|
|
554
|
-
node9["📄 srcexportershtml.ts"]:::tsStyle
|
|
555
|
-
|
|
556
|
-
classDef folderStyle fill:#58a6ff,stroke:#1f6feb,stroke-width:2px,color:#fff
|
|
557
|
-
classDef tsStyle fill:#3178c6,stroke:#235a97,stroke-width:2px,color:#fff
|
|
558
|
-
classDef jsStyle fill:#f7df1e,stroke:#c9b003,stroke-width:2px,color:#000
|
|
559
|
-
classDef configStyle fill:#6e7681,stroke:#484f58,stroke-width:2px,color:#fff
|
|
560
|
-
classDef htmlStyle fill:#e34c26,stroke:#b83c1f,stroke-width:2px,color:#fff
|
|
561
|
-
classDef cssStyle fill:#264de4,stroke:#1b3ba3,stroke-width:2px,color:#fff
|
|
562
|
-
classDef docStyle fill:#22c55e,stroke:#16a34a,stroke-width:2px,color:#fff
|
|
563
|
-
classDef fileStyle fill:#8b949e,stroke:#6e7681,stroke-width:2px,color:#fff
|
|
564
|
-
</pre>
|
|
565
|
-
</div>
|
|
566
|
-
</div>
|
|
567
|
-
</div>
|
|
568
|
-
|
|
569
|
-
<div class="graph-container" style="margin-bottom: 3rem;">
|
|
570
|
-
<div class="graph-title">Flux de données</div>
|
|
571
|
-
<div class="mermaid-wrapper">
|
|
572
|
-
<pre class="mermaid">
|
|
573
|
-
graph LR
|
|
574
|
-
A["📥 Input<br/>(fichiers source)"]:::inputStyle --> B["🔍 Analyzer<br/>(analyse code)"]:::analyzerStyle
|
|
575
|
-
B --> C["📊 Parser<br/>(extraction données)"]:::parserStyle
|
|
576
|
-
C --> D["⚙️ Generator<br/>(génération docs)"]:::generatorStyle
|
|
577
|
-
D --> E["📤 Exporter<br/>(export HTML/PDF)"]:::exporterStyle
|
|
578
|
-
E --> F["✅ Output<br/>(documentation)"]:::outputStyle
|
|
579
|
-
|
|
580
|
-
classDef inputStyle fill:#3b82f6,stroke:#1d4ed8,stroke-width:2px,color:#fff
|
|
581
|
-
classDef analyzerStyle fill:#8b5cf6,stroke:#6d28d9,stroke-width:2px,color:#fff
|
|
582
|
-
classDef parserStyle fill:#ec4899,stroke:#be185d,stroke-width:2px,color:#fff
|
|
583
|
-
classDef generatorStyle fill:#f59e0b,stroke:#d97706,stroke-width:2px,color:#fff
|
|
584
|
-
classDef exporterStyle fill:#10b981,stroke:#059669,stroke-width:2px,color:#fff
|
|
585
|
-
classDef outputStyle fill:#22c55e,stroke:#16a34a,stroke-width:2px,color:#fff
|
|
586
|
-
</pre>
|
|
587
|
-
</div>
|
|
588
|
-
</div>
|
|
589
|
-
|
|
590
|
-
<div id="content-area"><h1>Rapport Technique DocsToDev</h1><p>> 📅 Généré le : vendredi 9 janvier 2026 à 10:01</p><p>> 📊 7 fichiers analysés • 15 dépendances identifiées</p><h2>🎯 But du Projet</h2><p>Le projet DocsToDev est conçu pour analyser et générer des documents techniques à partir de données brutes de projets logiciels. Il vise à résoudre les problèmes liés à la documentation et à la compréhension des structures de projets complexes. Le public cible est constitué de développeurs, d'architectes logiciels et de membres d'équipes de développement qui ont besoin d'une vision claire et d'une compréhension approfondie de leurs projets.</p><h2>💡 Recommandations</h2><div class="list-item">1. Refactorisation et Modularisation : Organiser le code en modules plus petits et plus spécialisés pour améliorer la lisibilité et la maintenabilité.</div><p>2. Gestion des Secrets : Utiliser des méthodes sécurisées pour stocker et récupérer les clés API et autres secrets, comme les variables d'environnement ou des services de gestion de secrets.</p><p>3. Optimisation des Performances : Analyser les performances de l'application, notamment lors de l'analyse de projets de grande taille, et optimiser les algorithmes et les requêtes pour améliorer les temps de réponse.</p><p>4. Tests Automatisés : Développer une suite de tests automatisés pour vérifier la fonctionnalité, la performance et la sécurité de l'application.</p><p>5. Documentation et Commentaires : Améliorer la documentation et les commentaires dans le code pour faciliter la compréhension et la maintenance par d'autres développeurs.</p><h2>💡 Analyse Intelligente</h2><h2>`But` du `Projet`</h2><p><code>Le</code> projet <code>DocsToDev</code> est conçu pour analyser et générer des documents techniques à partir de données brutes de projets logiciels.</p><p><code>Il</code> vise à résoudre les problèmes liés à la documentation et à la compréhension des structures de projets complexes.</p><p><code>Le</code> public cible est constitué de développeurs, d'architectes logiciels et de membres d'équipes de développement qui ont besoin d'une vision claire et d'une compréhension approfondie de leurs projets.</p><h2>`Design` `System` Détecté</h2><p><code>Le</code> projet utilise une palette de couleurs qui n'est pas explicitement définie dans les extraits de code fournis, mais il semblerait qu'il s'appuie sur des standards web modernes.</p><p><code>La</code> typographie est également standard, sans spécifications particulières.</p><p><code>Les</code> patterns de composants incluent des éléments tels que des tables, des liens, des codes, et potentiellement des graphiques générés par <code>Mermaid</code> pour représenter des structures de données ou des flux de travail.</p><h2>`Risques` `Identifi`és</h2><div class="list-item">🔴 <code>Critique</code> : <code>La</code> sécurité des données et la gestion des clés API (comme la clé GROQ_API_KEY) sont cruciales.</div><p>L'exposition de ces clés dans le code pose un risque élevé.</p><div class="list-item">🟡 <code>Moyen</code> : <code>La</code> complexité du code et la gestion des dépendances pourraient nécessiter une attention particulière pour éviter les problèmes de maintenance et de performance.</div><div class="list-item">🟢 <code>Faible</code> : L'amélioration de l'expérience utilisateur et la personnalisation de la génération de rapports pourraient être des points d'amélioration mineurs mais importants pour l'adoption et la satisfaction des utilisateurs.</div><h2>`Recommandations`</h2><p>1.</p><p><code>Refactorisation</code> et <code>Modularisation</code> : <code>Organiser</code> le code en modules plus petits et plus spécialisés pour améliorer la lisibilité et la maintenabilité.</p><p>2.</p><p><code>Gestion</code> des <code>Secrets</code> : <code>Utiliser</code> des méthodes sécurisées pour stocker et récupérer les clés API et autres secrets, comme les variables d'environnement ou des services de gestion de secrets.</p><p>3.</p><p><code>Optimisation</code> des <code>Performances</code> : <code>Analyser</code> les performances de l'application, notamment lors de l'analyse de projets de grande taille, et optimiser les algorithmes et les requêtes pour améliorer les temps de réponse.</p><p>4.</p><p><code>Tests</code> <code>Automatis</code>és : Développer une suite de tests automatisés pour vérifier la fonctionnalité, la performance et la sécurité de l'application.</p><p>5.</p><p><code>Documentation</code> et <code>Commentaires</code> : <code>Am</code>éliorer la documentation et les commentaires dans le code pour faciliter la compréhension et la maintenance par d'autres développeurs.</p><h2>`Analyse` Détaillée des `Fichiers`</h2><div class="tree-line">- <code>src/analyzers/</code>languageAnalyzer<code>.ts</code> : <code>Ce</code> fichier définit les analyseurs de langages de programmation.</div><p><code>Il</code> joue un rôle crucial dans l'analyse du code source et la génération de rapports.</p><p><code>Ses</code> dépendances incluent les régular expressions pour l'analyse syntaxique.</p><div class="tree-line">- <code>src/ai/</code>analyzer.ts<code> : </code>Ce` fichier est responsable de l'interaction avec l'IA pour l'analyse des données techniques.</div><p><code>Il</code> utilise des options de configuration pour personnaliser l'analyse et les résultats.</p><div class="tree-line">- <code>src/cache/</code>cacheManager<code>.ts</code> : <code>Il</code> gère le cache des analyses pour améliorer les performances en réutilisant les résultats d'analyses précédentes.</div><p><code>Ses</code> dépendances incluent les modules de fichier et de cryptographie pour la gestion sécurisée du cache.</p><div class="tree-line">- <code>src/cli/</code>index.ts<code> : </code>Ce` fichier définit l'interface de ligne de commande de l'application.</div><p><code>Il</code> utilise des commandes pour exécuter des tâches spécifiques, comme générer des résumés ou exécuter l'analyse.</p><div class="tree-line">- <code>src/commands/</code>generateSummary<code>.ts</code> : <code>Il</code> est utilisé pour générer un résumé du projet analysé, en incluant des métadonnées et des statistiques sur le code.</div><div class="tree-line">- <code>src/commands/</code>run.ts<code> : </code>Ce` fichier contient la logique pour exécuter l'analyse complète d'un projet, en utilisant les analyseurs de langage et les capacités d'analyse IA.</div><div class="tree-line">- <code>src/exporters/</code>html.ts<code> : </code>Il` est responsable de la conversion des résultats d'analyse en documents HTML, facilitant ainsi la visualisation et la partage des résultats.</div><h2>📂 Architecture du projet</h2><p><code></code>`</p><div class="tree-line"><span class="branch">├─</span> <a href="../package-lock.json">package-lock.json</a></div><div class="tree-line"><span class="branch">├─</span> <a href="../package.json">package.json</a></div><div class="tree-line"><span class="branch">├─</span> <a href="../src/ai/analyzer.ts">src/ai/analyzer.ts</a></div><div class="tree-line"><span class="branch">├─</span> <a href="../src/analyzers/languageAnalyzer.ts">src/analyzers/languageAnalyzer.ts</a></div><div class="tree-line"><span class="branch">├─</span> <a href="../src/cache/cacheManager.ts">src/cache/cacheManager.ts</a></div><div class="tree-line"><span class="branch">├─</span> <a href="../src/cli/index.ts">src/cli/index.ts</a></div><div class="tree-line"><span class="branch">├─</span> <a href="../src/commands/generateSummary.ts">src/commands/generateSummary.ts</a></div><div class="tree-line"><span class="branch">├─</span> <a href="../src/commands/run.ts">src/commands/run.ts</a></div><div class="tree-line"><span class="branch">├─</span> <a href="../src/exporters/html.ts">src/exporters/html.ts</a></div><div class="tree-line"><span class="branch">└─</span> <a href="../tsconfig.json">tsconfig.json</a></div><p><code></code>`</p><h2>🔬 Analyse détaillée des composants</h2><div class="tree-line">### 📄 <a href="../src/analyzers/languageAnalyzer.ts"><code>src/analyzers/languageAnalyzer.ts</code></a></div><p>Complexité et maintenance : 580 lignes • 🟠 Élevée (270)</p><p>Fonctions : <code>getAnalyzer()</code>, <code>getSupportedExtensions()</code>, <code>isExplicitlySupported()</code></p><p>Classes : <code>TSJSAnalyzer</code>, <code>PythonAnalyzer</code>, <code>JavaAnalyzer</code>, <code>CSharpAnalyzer</code>, <code>GoAnalyzer</code>, <code>RustAnalyzer</code>, <code>HTMLAnalyzer</code>, <code>CSSAnalyzer</code>, <code>PHPAnalyzer</code>, <code>RubyAnalyzer</code>, <code>SQLAnalyzer</code>, <code>DefaultAnalyzer</code></p><div class="tree-line">Types/Interfaces : <code>LanguageAnalyzer</code>, <code>FileAnalysisResult</code></div><p>Exports publics : <code>LanguageAnalyzer</code>, <code>FileAnalysisResult</code>, <code>getAnalyzer</code>, <code>getSupportedExtensions</code>, <code>isExplicitlySupported</code></p><p>---</p><div class="tree-line">### 📄 <a href="../src/ai/analyzer.ts"><code>src/ai/analyzer.ts</code></a></div><p>Complexité et maintenance : 289 lignes • 🟢 Faible (46)</p><p>Fonctions : <code>askAI()</code>, <code>askAIDetailed()</code>, <code>buildSystemPrompt()</code>, <code>parseAIResponse()</code></p><div class="tree-line">Types/Interfaces : <code>AIAnalysisOptions</code>, <code>AIAnalysisResult</code></div><p>Exports publics : <code>AIAnalysisOptions</code>, <code>AIAnalysisResult</code>, <code>askAI</code>, <code>askAIDetailed</code></p><p>---</p><div class="tree-line">### 📄 <a href="../src/cache/cacheManager.ts"><code>src/cache/cacheManager.ts</code></a></div><p>Complexité et maintenance : 179 lignes • 🟢 Faible (36)</p><p>Classes : <code>CacheManager</code></p><div class="tree-line">Types/Interfaces : <code>CacheEntry</code>, <code>CacheManifest</code></div><p>Exports publics : <code>CacheEntry</code>, <code>CacheManifest</code>, <code>CacheManager</code></p><p>Dépendances :</p><div class="list-item"><code>node:crypto</code> (Node.js) → utilise <code>createHash</code></div><div class="list-item"><code>node:fs</code> (Node.js) → utilise <code>readFileSync, writeFileSync, existsSync, statSync, mkdirSync</code></div><div class="list-item"><code>node:path</code> (Node.js) → utilise <code>path</code></div><p>---</p><div class="tree-line">### 📄 <a href="../src/cli/index.ts"><code>src/cli/index.ts</code></a></div><p>Complexité et maintenance : 355 lignes • 🟡 Modérée (77)</p><p>Fonctions : <code>typeWriter()</code>, <code>showBanner()</code>, <code>selectLanguage()</code>, <code>showTransition()</code></p><p>Classes : <code>Spinner</code>, <code>ProgressBar</code></p><p>Dépendances :</p><div class="list-item"><code>commander</code> (NPM) → utilise <code>Command</code></div><div class="tree-line">• <code>../commands/run.js</code> (Interne) → utilise <code>runCommand</code></div><div class="tree-line">• <code>../commands/generateSummary.js</code> (Interne) → utilise <code>generateSummary</code></div><div class="tree-line">• <code>node:readline/promises</code> (Node.js) → utilise <code>readline</code></div><div class="list-item"><code>node:process</code> (Node.js) → utilise <code>stdin as input, stdout as output</code></div><div class="list-item"><code>node:path</code> (Node.js) → utilise <code>path</code></div><p>---</p><div class="tree-line">### 📄 <a href="../src/commands/generateSummary.ts"><code>src/commands/generateSummary.ts</code></a></div><p>Complexité et maintenance : 150 lignes • 🟢 Faible (27)</p><p>Fonctions : <code>generateSummary()</code></p><div class="tree-line">Types/Interfaces : <code>SummaryData</code></div><p>Exports publics : <code>generateSummary</code></p><p>Dépendances :</p><div class="list-item"><code>node:fs</code> (Node.js) → utilise <code>writeFileSync, mkdirSync</code></div><div class="list-item"><code>node:path</code> (Node.js) → utilise <code>path</code></div><p>---</p><div class="tree-line">### 📄 <a href="../src/commands/run.ts"><code>src/commands/run.ts</code></a></div><p>Complexité et maintenance : 459 lignes • 🟡 Modérée (108)</p><p>Fonctions : <code>buildTree()</code>, <code>renderTree()</code>, <code>analyzeFile()</code>, <code>getComplexityLevel()</code>, <code>formatAISummary()</code>, <code>runCommand()</code>, <code>generatePDF()</code></p><div class="tree-line">Types/Interfaces : <code>AIAnalysisOptions</code>, <code>TreeNode</code>, <code>FileAnalysis</code></div><p>Exports publics : <code>runCommand</code></p><p>Dépendances :</p><div class="list-item"><code>globby</code> (NPM) → utilise <code>globby</code></div><div class="list-item"><code>node:fs</code> (Node.js) → utilise <code>writeFileSync, readFileSync, existsSync, mkdirSync</code></div><div class="list-item"><code>node:path</code> (Node.js) → utilise <code>path</code></div><div class="list-item"><code>puppeteer</code> (NPM) → utilise <code>puppeteer</code></div><div class="tree-line">• <code>../exporters/html.js</code> (Interne) → utilise <code>exportToHTML</code></div><div class="tree-line">• <code>../ai/analyzer.js</code> (Interne) → utilise <code>askAIDetailed, type AIAnalysisOptions</code></div><div class="tree-line">• <code>../analyzers/languageAnalyzer.js</code> (Interne) → utilise <code>getAnalyzer, getSupportedExtensions</code></div><div class="tree-line">• <code>../cache/cacheManager.js</code> (Interne) → utilise <code>CacheManager</code></div><p>---</p><div class="tree-line">### 📄 <a href="../src/exporters/html.ts"><code>src/exporters/html.ts</code></a></div><p>Complexité et maintenance : 894 lignes • 🟠 Élevée (152)</p><p>Fonctions : <code>exportToHTML()</code>, <code>toggleTheme()</code>, <code>sanitizeMermaidGraph()</code>, <code>generateHierarchyGraph()</code>, <code>sanitizeLabel()</code>, <code>getFileExtension()</code>, <code>getNodeStyle()</code>, <code>traverse()</code>, <code>getDefaultHierarchyGraph()</code>, <code>generateDataFlowGraph()</code>, <code>formatRisksSection()</code>, <code>formatText()</code></p><div class="tree-line">Types/Interfaces : <code>TreeStructure</code></div><p>Exports publics : <code>exportToHTML</code></p><p>Dépendances :</p><div class="list-item"><code>node:fs</code> (Node.js) → utilise <code>writeFileSync</code></div><div class="list-item"><code>node:path</code> (Node.js) → utilise <code>path</code></div><div class="tree-line">• <code>https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs</code> (NPM) → utilise <code>mermaid</code></div><p>---</p><h2>📦 Modules externes</h2><div class="table-container"><table><tr><th>Module</th><th>Type</th><th>Occurrences</th></tr><tr><td><code>../ai/analyzer.js</code></td><td>Interne</td><td>1</td></tr><tr><td><code>../analyzers/languageAnalyzer.js</code></td><td>Interne</td><td>1</td></tr><tr><td><code>../cache/cacheManager.js</code></td><td>Interne</td><td>1</td></tr><tr><td><code>../commands/generateSummary.js</code></td><td>Interne</td><td>1</td></tr><tr><td><code>../commands/run.js</code></td><td>Interne</td><td>1</td></tr><tr><td><code>../exporters/html.js</code></td><td>Interne</td><td>1</td></tr><tr><td><code>commander</code></td><td>NPM</td><td>1</td></tr><tr><td><code>globby</code></td><td>NPM</td><td>1</td></tr><tr><td><code>https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.esm.min.mjs</code></td><td>NPM</td><td>1</td></tr><tr><td><code>node:crypto</code></td><td>Node.js</td><td>1</td></tr><tr><td><code>node:fs</code></td><td>Node.js</td><td>4</td></tr><tr><td><code>node:path</code></td><td>Node.js</td><td>5</td></tr><tr><td><code>node:process</code></td><td>Node.js</td><td>1</td></tr><tr><td><code>node:readline/promises</code></td><td>Node.js</td><td>1</td></tr><tr><td><code>puppeteer</code></td><td>NPM</td><td>1</td></tr></table></div></div>
|
|
591
|
-
|
|
592
|
-
</div>
|
|
593
|
-
|
|
594
|
-
<script>
|
|
595
|
-
function toggleTheme() {
|
|
596
|
-
const root = document.documentElement;
|
|
597
|
-
const next = root.dataset.theme === "dark" ? "light" : "dark";
|
|
598
|
-
root.dataset.theme = next;
|
|
599
|
-
localStorage.setItem("theme", next);
|
|
600
|
-
location.reload();
|
|
601
|
-
}
|
|
602
|
-
|
|
603
|
-
document.documentElement.dataset.theme = localStorage.getItem("theme") || "dark";
|
|
604
|
-
|
|
605
|
-
const originalHTML = document.getElementById("content-area").innerHTML;
|
|
606
|
-
|
|
607
|
-
document.getElementById("search").addEventListener("input", e => {
|
|
608
|
-
const term = e.target.value.trim();
|
|
609
|
-
const container = document.getElementById("content-area");
|
|
610
|
-
|
|
611
|
-
if (!term) {
|
|
612
|
-
container.innerHTML = originalHTML;
|
|
613
|
-
return;
|
|
614
|
-
}
|
|
615
|
-
|
|
616
|
-
const regex = new RegExp("(" + term.replace(/[.*+?\${}()|[\]\\]/g, "\\$&") + ")", "gi");
|
|
617
|
-
container.innerHTML = originalHTML.replace(regex, "<mark>$1</mark>");
|
|
618
|
-
|
|
619
|
-
const first = container.querySelector("mark");
|
|
620
|
-
if (first) first.scrollIntoView({ behavior: "smooth", block: "center" });
|
|
621
|
-
});
|
|
622
|
-
|
|
623
|
-
window.addEventListener('load', () => {
|
|
624
|
-
setTimeout(() => {
|
|
625
|
-
document.querySelectorAll('.mermaid').forEach(el => {
|
|
626
|
-
if (!el.querySelector('svg') && !el.querySelector('.error-message')) {
|
|
627
|
-
const errorMsg = document.createElement('div');
|
|
628
|
-
errorMsg.className = 'error-message';
|
|
629
|
-
errorMsg.textContent = 'Erreur de rendu du graphe';
|
|
630
|
-
el.appendChild(errorMsg);
|
|
631
|
-
}
|
|
632
|
-
});
|
|
633
|
-
}, 3000);
|
|
634
|
-
});
|
|
635
|
-
</script>
|
|
636
|
-
|
|
637
|
-
</body>
|
|
638
|
-
</html>
|
package/docs/report.pdf
DELETED
|
Binary file
|
package/docs/summary.md
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
# 📊 Vue d'ensemble du Projet – DocsToDev
|
|
2
|
-
|
|
3
|
-
> 📅 **Rapport généré le :** vendredi 9 janvier 2026 à 10:01
|
|
4
|
-
|
|
5
|
-
## 🚀 État des lieux
|
|
6
|
-
Salut ! J'ai passé ton projet au peigne fin. Voici un résumé rapide de ce que j'ai trouvé :
|
|
7
|
-
- **Volume traité :** 10 fichiers analysés avec succès.
|
|
8
|
-
- **Diagnostic :** La structure est claire et l'analyse est complète. ✅
|
|
9
|
-
|
|
10
|
-
## 🧭 Navigation Rapide
|
|
11
|
-
Pour aller plus loin, tu peux consulter les documents suivants :
|
|
12
|
-
- **[📂 Arborescence & Analyse](../docs/docs-to-dev.md)** : Pour comprendre la vocation de chaque fichier et les capacités du système.
|
|
13
|
-
- **[💻 Code Source](../)** : Pour retourner explorer la racine de ton projet.
|
|
14
|
-
|
|
15
|
-
---
|
|
16
|
-
*DocsToDev – Ton allié pour une documentation technique vivante et intelligente.*
|