ts-analyzer 1.2.0 โ 1.3.0
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/.github/workflows/release.yml +44 -0
- package/README.md +18 -330
- package/bin/cli.ts +30 -2
- package/dist/bin/cli.js +28 -2
- package/dist/bin/cli.js.map +1 -1
- package/dist/src/code-complexity.d.ts +12 -0
- package/dist/src/code-complexity.js +84 -9
- package/dist/src/code-complexity.js.map +1 -1
- package/dist/src/html-formatter.d.ts +2 -0
- package/dist/src/html-formatter.js +156 -0
- package/dist/src/html-formatter.js.map +1 -0
- package/dist/src/typescript-safety.js.map +1 -1
- package/package.json +8 -4
- package/src/code-complexity.ts +108 -10
- package/src/html-formatter.ts +159 -0
- package/src/typescript-safety.ts +3 -1
- package/test/complexity.test.ts +76 -0
- package/test/html-formatter.test.ts +62 -0
- package/test/line-counting.test.ts +45 -0
- package/test/ts-safety.test.ts +50 -0
- package/vitest.config.ts +9 -0
- package/ts-analyzer.config.json +0 -3
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- 'v*' # Trigger on tags starting with 'v', e.g., v1.3.0
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
build-and-release:
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
permissions:
|
|
12
|
+
contents: write # Needed for creating a release
|
|
13
|
+
|
|
14
|
+
steps:
|
|
15
|
+
- name: Checkout code
|
|
16
|
+
uses: actions/checkout@v4
|
|
17
|
+
|
|
18
|
+
- name: Setup Node.js
|
|
19
|
+
uses: actions/setup-node@v4
|
|
20
|
+
with:
|
|
21
|
+
node-version: '20'
|
|
22
|
+
registry-url: 'https://registry.npmjs.org'
|
|
23
|
+
|
|
24
|
+
- name: Install dependencies
|
|
25
|
+
run: npm ci
|
|
26
|
+
|
|
27
|
+
- name: Run tests
|
|
28
|
+
run: npm test
|
|
29
|
+
|
|
30
|
+
- name: Build project
|
|
31
|
+
run: npm run build
|
|
32
|
+
|
|
33
|
+
- name: Publish to NPM
|
|
34
|
+
run: npm publish
|
|
35
|
+
env:
|
|
36
|
+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
37
|
+
|
|
38
|
+
- name: Create GitHub Release
|
|
39
|
+
uses: softprops/action-gh-release@v2
|
|
40
|
+
with:
|
|
41
|
+
generate_release_notes: true
|
|
42
|
+
files: |
|
|
43
|
+
README.md
|
|
44
|
+
LICENSE
|
package/README.md
CHANGED
|
@@ -1,356 +1,44 @@
|
|
|
1
1
|
# ts-analyzer
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-

|
|
6
|
-

|
|
7
|
-
|
|
8
|
-
> **Note**: This is the new and improved version of the previous `react-loc-analyzer` package, with enhanced TypeScript safety analysis, code complexity metrics, and better reports.
|
|
3
|
+
ts-analyzer is a static analysis tool for checking TypeScript code quality, focusing on type safety and structural complexity.
|
|
9
4
|
|
|
10
5
|
## Features
|
|
11
6
|
|
|
12
|
-
-
|
|
13
|
-
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
16
|
-
- ๐ฏ **Framework-Agnostic** works with any TypeScript project (React, Vue, Angular, Node.js)
|
|
17
|
-
- ๐จ **Beautiful Formatted Output** with colored terminal support
|
|
18
|
-
- โก **Fast Performance** with asynchronous file processing
|
|
19
|
-
- โ๏ธ **Highly Configurable** with customizable options
|
|
20
|
-
|
|
21
|
-
## Installation
|
|
7
|
+
- TypeScript safety metrics (type coverage, any usage, assertions).
|
|
8
|
+
- Cyclomatic complexity and nesting depth analysis.
|
|
9
|
+
- Detection of anti-patterns like magic numbers, callback hell, and god files.
|
|
10
|
+
- Formatted output in Text, JSON, and HTML.
|
|
22
11
|
|
|
23
|
-
|
|
12
|
+
## Quick Start
|
|
24
13
|
|
|
25
14
|
```bash
|
|
26
15
|
npx ts-analyzer
|
|
27
16
|
```
|
|
28
17
|
|
|
29
|
-
Or install it globally:
|
|
30
|
-
|
|
31
|
-
```bash
|
|
32
|
-
npm install -g ts-analyzer
|
|
33
|
-
```
|
|
34
|
-
|
|
35
18
|
## Usage
|
|
36
19
|
|
|
37
|
-
### Basic Usage
|
|
38
|
-
|
|
39
|
-
Analyze the current directory:
|
|
40
|
-
```bash
|
|
41
|
-
npx ts-analyzer
|
|
42
|
-
```
|
|
43
|
-
|
|
44
20
|
Analyze a specific directory:
|
|
45
21
|
```bash
|
|
46
|
-
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
### Options
|
|
50
|
-
|
|
51
|
-
```bash
|
|
52
|
-
npx ts-analyzer [directory] [options]
|
|
53
|
-
|
|
54
|
-
Options:
|
|
55
|
-
-V, --version output version number
|
|
56
|
-
-e, --exclude <patterns> additional patterns to exclude (comma-separated)
|
|
57
|
-
-i, --include <extensions> additional file extensions to include (comma-separated)
|
|
58
|
-
--no-color disable colored output
|
|
59
|
-
--no-safety disable TypeScript safety analysis
|
|
60
|
-
--no-complexity disable code complexity analysis
|
|
61
|
-
-h, --help display help for command
|
|
22
|
+
ts-analyzer /path/to/project
|
|
62
23
|
```
|
|
63
24
|
|
|
64
|
-
|
|
25
|
+
Available options:
|
|
26
|
+
- `-f, --format <type>`: `text`, `json`, or `html`.
|
|
27
|
+
- `-e, --exclude <patterns>`: Comma-separated ignore patterns.
|
|
28
|
+
- `--no-safety`: Skip type-safety analysis.
|
|
29
|
+
- `--no-complexity`: Skip complexity analysis.
|
|
65
30
|
|
|
66
|
-
|
|
67
|
-
```bash
|
|
68
|
-
npx ts-analyzer --exclude .cache,public,static
|
|
69
|
-
```
|
|
31
|
+
## Development
|
|
70
32
|
|
|
71
|
-
|
|
33
|
+
Run tests:
|
|
72
34
|
```bash
|
|
73
|
-
|
|
35
|
+
npm test
|
|
74
36
|
```
|
|
75
37
|
|
|
76
|
-
|
|
38
|
+
Generate coverage:
|
|
77
39
|
```bash
|
|
78
|
-
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
## Output
|
|
82
|
-
|
|
83
|
-
The analyzer provides four main sections of output:
|
|
84
|
-
|
|
85
|
-
### 1. Project Summary
|
|
86
|
-
Shows overall statistics including:
|
|
87
|
-
- Total Files
|
|
88
|
-
- Total Lines
|
|
89
|
-
- Code Lines
|
|
90
|
-
- Comment Lines
|
|
91
|
-
- Empty Lines
|
|
92
|
-
|
|
93
|
-
### 2. Files by Type
|
|
94
|
-
Detailed breakdown for each file extension:
|
|
95
|
-
- Number of files
|
|
96
|
-
- Total lines
|
|
97
|
-
- Code lines
|
|
98
|
-
- Comment lines
|
|
99
|
-
- Empty lines
|
|
100
|
-
- Percentage of codebase
|
|
101
|
-
|
|
102
|
-
### 3. TypeScript Safety Analysis
|
|
103
|
-
Comprehensive TypeScript safety metrics:
|
|
104
|
-
- TypeScript Files Count
|
|
105
|
-
- Type Coverage Percentage
|
|
106
|
-
- Any Type Usage Count
|
|
107
|
-
- Type Assertions Count
|
|
108
|
-
- Type Safety Score
|
|
109
|
-
- Type Safety Rating
|
|
110
|
-
|
|
111
|
-
### 4. Code Complexity Analysis
|
|
112
|
-
Detailed complexity metrics:
|
|
113
|
-
- Function Count
|
|
114
|
-
- Cyclomatic Complexity
|
|
115
|
-
- Nesting Depth
|
|
116
|
-
- Function Size
|
|
117
|
-
- Overall Complexity Rating
|
|
118
|
-
|
|
119
|
-
### 5. Code Quality Recommendations
|
|
120
|
-
Actionable suggestions to improve your code quality.
|
|
121
|
-
|
|
122
|
-
## Example Output
|
|
123
|
-
|
|
124
|
-
```
|
|
125
|
-
Project Summary:
|
|
126
|
-
โโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโ
|
|
127
|
-
โ Metric โ Value โ
|
|
128
|
-
โโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโค
|
|
129
|
-
โ Total Files โ 156 โ
|
|
130
|
-
โ Total Lines โ 15,234 โ
|
|
131
|
-
โ Code Lines โ 12,845 โ
|
|
132
|
-
โ Comment Lines โ 1,523 โ
|
|
133
|
-
โ Empty Lines โ 866 โ
|
|
134
|
-
โโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโ
|
|
135
|
-
|
|
136
|
-
Files by Type:
|
|
137
|
-
โโโโโโโโโโโโโโฌโโโโโโโโฌโโโโโโโโโโโโโโฌโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโ
|
|
138
|
-
โ Extension โ Files โ Total Lines โ Code Lines โ % of Codebase โ
|
|
139
|
-
โโโโโโโโโโโโโโผโโโโโโโโผโโโโโโโโโโโโโโผโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโค
|
|
140
|
-
โ .ts โ 87 โ 8,456 โ 7,234 โ 56.3% โ
|
|
141
|
-
โ .tsx โ 45 โ 4,234 โ 3,845 โ 29.9% โ
|
|
142
|
-
โ .js โ 23 โ 2,456 โ 1,923 โ 15.0% โ
|
|
143
|
-
โโโโโโโโโโโโโโดโโโโโโโโดโโโโโโโโโโโโโโดโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโ
|
|
144
|
-
|
|
145
|
-
TypeScript Safety:
|
|
146
|
-
โโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
147
|
-
โ metric โ value โ
|
|
148
|
-
โโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโโโโโโโโโโโโค
|
|
149
|
-
โ TypeScript Files โ 132 (84.6% of codebase)โ
|
|
150
|
-
โ Type Coverage โ 92.3% (Good) โ
|
|
151
|
-
โ Any Type Usage โ 12 โ
|
|
152
|
-
โ Type Assertions โ 5 โ
|
|
153
|
-
โ Non-Null Assertions โ 0 โ
|
|
154
|
-
โ Type Safety Score โ 85/100 (Good โ) โ
|
|
155
|
-
โ Type Safety Rating โ Low โ
|
|
156
|
-
โโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโโโโโโโโโโโโ
|
|
157
|
-
|
|
158
|
-
Code Complexity:
|
|
159
|
-
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโ
|
|
160
|
-
โ metric โ value โ
|
|
161
|
-
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโผโโโโโโโโโโโโโค
|
|
162
|
-
โ Analyzed Files โ 110 โ
|
|
163
|
-
โ Total Functions โ 345 โ
|
|
164
|
-
โ Avg Cyclomatic Complexity โ 3.2 โ
|
|
165
|
-
โ Max Cyclomatic Complexity โ 12 โ
|
|
166
|
-
โ Avg Nesting Depth โ 2.1 โ
|
|
167
|
-
โ Max Nesting Depth โ 6 โ
|
|
168
|
-
โ Avg Function Size โ 12.5 lines โ
|
|
169
|
-
โ Complex Files โ 3 โ
|
|
170
|
-
โ Overall Complexity โ Simple โ โ
|
|
171
|
-
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโดโโโโโโโโโโโโโ
|
|
172
|
-
|
|
173
|
-
๐ Code Quality Recommendations:
|
|
174
|
-
โข Reduce usage of 'any' type (found 12 instances) by using more specific types
|
|
175
|
-
โข Consider refactoring functions with high complexity (max: 12) to improve maintainability
|
|
176
|
-
```
|
|
177
|
-
|
|
178
|
-
## TypeScript Safety Analysis
|
|
179
|
-
|
|
180
|
-
### How TypeScript Safety Analysis Works
|
|
181
|
-
|
|
182
|
-
The TypeScript safety analyzer evaluates your TypeScript code quality by calculating several metrics. Here's how it works:
|
|
183
|
-
|
|
184
|
-
```
|
|
185
|
-
โโโโโโโโโโโโโโโโโโโโโโโ
|
|
186
|
-
โ TypeScript Files โ
|
|
187
|
-
โโโโโโโโโโโฌโโโโโโโโโโโโ
|
|
188
|
-
โ
|
|
189
|
-
โผ
|
|
190
|
-
โโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโ
|
|
191
|
-
โ AST Analysis โโโโ>โ Node Classification โ
|
|
192
|
-
โโโโโโโโโโโฌโโโโโโโโโโโโ โโโโโโโโโโโฌโโโโโโโโโโโโ
|
|
193
|
-
โ โ
|
|
194
|
-
โผ โผ
|
|
195
|
-
โโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโ
|
|
196
|
-
โ Explicitly Typed โ โ Implicitly Typed โ
|
|
197
|
-
โ Nodes โ โ Nodes โ
|
|
198
|
-
โโโโโโโโโโโฌโโโโโโโโโโโโ โโโโโโโโโโโฌโโโโโโโโโโโโ
|
|
199
|
-
โ โ
|
|
200
|
-
โโโโโโโโโโโโฌโโโโโโโโโโโโโโโ
|
|
201
|
-
โ
|
|
202
|
-
โผ
|
|
203
|
-
โโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโ
|
|
204
|
-
โ Type Coverage โ<โโโโ tsconfig.json โ
|
|
205
|
-
โ Calculation โ โ Analysis โ
|
|
206
|
-
โโโโโโโโโโโฌโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโ
|
|
207
|
-
โ
|
|
208
|
-
โผ
|
|
209
|
-
โโโโโโโโโโโโโโโโโโโโโโโ
|
|
210
|
-
โ "any" & Assertion โ
|
|
211
|
-
โ Penalty Calculation โ
|
|
212
|
-
โโโโโโโโโโโฌโโโโโโโโโโโโ
|
|
213
|
-
โ
|
|
214
|
-
โผ
|
|
215
|
-
โโโโโโโโโโโโโโโโโโโโโโโ
|
|
216
|
-
โ Final Type Safety โ
|
|
217
|
-
โ Score & Rating โ
|
|
218
|
-
โโโโโโโโโโโโโโโโโโโโโโโ
|
|
40
|
+
npm run test:coverage
|
|
219
41
|
```
|
|
220
42
|
|
|
221
|
-
### Type Coverage Calculation
|
|
222
|
-
|
|
223
|
-
Type coverage measures what percentage of your code has proper type information, either through explicit type annotations or TypeScript's type inference.
|
|
224
|
-
|
|
225
|
-
```typescript
|
|
226
|
-
// Example TypeScript code with various levels of typing
|
|
227
|
-
|
|
228
|
-
// Explicitly typed (counts as typed)
|
|
229
|
-
const userName: string = "John";
|
|
230
|
-
|
|
231
|
-
// Implicitly typed through inference (counts as typed)
|
|
232
|
-
const userAge = 30; // TypeScript infers 'number'
|
|
233
|
-
|
|
234
|
-
// Object with explicit interface (counts as typed)
|
|
235
|
-
interface User {
|
|
236
|
-
id: number;
|
|
237
|
-
name: string;
|
|
238
|
-
active: boolean;
|
|
239
|
-
}
|
|
240
|
-
const user: User = { id: 1, name: "Alice", active: true };
|
|
241
|
-
|
|
242
|
-
// Function with explicit type annotations (counts as typed)
|
|
243
|
-
function calculateTotal(prices: number[]): number {
|
|
244
|
-
return prices.reduce((sum, price) => sum + price, 0);
|
|
245
|
-
}
|
|
246
|
-
|
|
247
|
-
// Any type usage (counts as typed, but with penalty)
|
|
248
|
-
const userData: any = fetchUserData();
|
|
249
|
-
|
|
250
|
-
// No type annotation or clear inference (counts as untyped)
|
|
251
|
-
let someData;
|
|
252
|
-
|
|
253
|
-
// Type assertion (counts as typed, but with penalty)
|
|
254
|
-
const userInput = document.getElementById("user-input") as HTMLInputElement;
|
|
255
|
-
```
|
|
256
|
-
|
|
257
|
-
### Type Safety Score Formula
|
|
258
|
-
|
|
259
|
-
The type safety score (0-100) is calculated using the following formula:
|
|
260
|
-
|
|
261
|
-
```
|
|
262
|
-
Type Safety Score = Coverage Score - Any Type Penalty - Type Assertion Penalty
|
|
263
|
-
```
|
|
264
|
-
|
|
265
|
-
Where:
|
|
266
|
-
- **Coverage Score** = Type Coverage Percentage ร 0.6 (60% weight)
|
|
267
|
-
- **Any Type Penalty** = (Any Type Count / Total Nodes) ร 100 ร 0.2 (20% weight)
|
|
268
|
-
- **Type Assertion Penalty** = (Type Assertions / Total Nodes) ร 100 ร 0.2 (20% weight)
|
|
269
|
-
|
|
270
|
-
### TypeScript Configuration Impact
|
|
271
|
-
|
|
272
|
-
The analyzer checks your `tsconfig.json` for strict type checking options and awards bonus points:
|
|
273
|
-
|
|
274
|
-
| Configuration Option | Points |
|
|
275
|
-
|----------------------|--------|
|
|
276
|
-
| `strict: true` | 5 |
|
|
277
|
-
| `noImplicitAny: true`| 3 |
|
|
278
|
-
| `strictNullChecks: true` | 3 |
|
|
279
|
-
| `noImplicitReturns: true` | 2 |
|
|
280
|
-
|
|
281
|
-
### Rating Scale
|
|
282
|
-
|
|
283
|
-
| Type Safety Score | Rating | Description |
|
|
284
|
-
|-------------------|--------|-------------|
|
|
285
|
-
| โฅ 80 | Good | Your TypeScript code is well-typed and maintains high type safety |
|
|
286
|
-
| 50-79 | Moderate | Your code has reasonable type safety but could be improved |
|
|
287
|
-
| < 50 | Poor | Your code has significant type safety issues that should be addressed |
|
|
288
|
-
|
|
289
|
-
### Type Coverage Benchmarks
|
|
290
|
-
|
|
291
|
-
| Type Coverage | Rating | Description |
|
|
292
|
-
|---------------|--------|-------------|
|
|
293
|
-
| โฅ 95% | Excellent | Top-tier type safety, comparable to well-maintained libraries |
|
|
294
|
-
| 85-94% | Good | Strong type safety, suitable for production applications |
|
|
295
|
-
| 70-84% | Moderate | Acceptable type safety, but has room for improvement |
|
|
296
|
-
| < 70% | Needs Improvement | Type coverage is too low for reliable code |
|
|
297
|
-
|
|
298
|
-
## Code Complexity Analysis
|
|
299
|
-
|
|
300
|
-
### How Code Complexity Analysis Works
|
|
301
|
-
|
|
302
|
-
The complexity analyzer evaluates several aspects of your code structure to determine maintainability:
|
|
303
|
-
|
|
304
|
-
1. **Cyclomatic Complexity**: Measures the number of independent paths through code
|
|
305
|
-
2. **Nesting Depth**: Measures how deeply code blocks are nested
|
|
306
|
-
3. **Function Size**: Measures average lines of code per function
|
|
307
|
-
4. **Parameter Count**: Analyzes how many parameters functions receive
|
|
308
|
-
|
|
309
|
-
### Complexity Rating Scale
|
|
310
|
-
|
|
311
|
-
| Complexity Score | Rating | Description |
|
|
312
|
-
|------------------|--------|-------------|
|
|
313
|
-
| < 30 | Simple | Your code is clean and easily maintainable |
|
|
314
|
-
| 30-60 | Moderate | Your code has reasonable complexity but watch for complex areas |
|
|
315
|
-
| > 60 | Complex | Your code may be difficult to maintain and test |
|
|
316
|
-
|
|
317
|
-
## Why This Is Better Than react-loc-analyzer
|
|
318
|
-
|
|
319
|
-
The `ts-analyzer` is a significant improvement over the previous `react-loc-analyzer`:
|
|
320
|
-
|
|
321
|
-
1. **TypeScript Specialization**: Built specifically for analyzing TypeScript codebases with deep type safety insights
|
|
322
|
-
2. **Framework Agnostic**: Works with any TypeScript project, not just React
|
|
323
|
-
3. **Advanced Metrics**: Provides sophisticated type coverage and code complexity metrics
|
|
324
|
-
4. **Actionable Insights**: Generates specific recommendations to improve your code quality
|
|
325
|
-
5. **Modern Implementation**: Fully written in TypeScript with strong typing throughout
|
|
326
|
-
6. **Better Performance**: Optimized for faster analysis of large TypeScript projects
|
|
327
|
-
|
|
328
|
-
## Default Configuration
|
|
329
|
-
|
|
330
|
-
### Included File Extensions
|
|
331
|
-
- `.js`, `.jsx`, `.ts`, `.tsx`
|
|
332
|
-
- `.css`, `.scss`, `.sass`
|
|
333
|
-
- `.html`, `.json`
|
|
334
|
-
|
|
335
|
-
### Default Ignore Patterns
|
|
336
|
-
- `node_modules`
|
|
337
|
-
- `build`
|
|
338
|
-
- `dist`
|
|
339
|
-
- `.git`
|
|
340
|
-
- `coverage`
|
|
341
|
-
- `.next`
|
|
342
|
-
- `out`
|
|
343
|
-
|
|
344
|
-
## Contributing
|
|
345
|
-
|
|
346
|
-
Contributions are welcome! Please feel free to submit a Pull Request.
|
|
347
|
-
|
|
348
|
-
1. Fork the repository
|
|
349
|
-
2. Create your feature branch (`git checkout -b feature/AmazingFeature`)
|
|
350
|
-
3. Commit your changes (`git commit -m 'Add some AmazingFeature'`)
|
|
351
|
-
4. Push to the branch (`git push origin feature/AmazingFeature`)
|
|
352
|
-
5. Open a Pull Request
|
|
353
|
-
|
|
354
43
|
## License
|
|
355
|
-
|
|
356
|
-
MIT License - see the [LICENSE](LICENSE) file for details
|
|
44
|
+
MIT
|
package/bin/cli.ts
CHANGED
|
@@ -7,6 +7,8 @@ import fs from 'fs';
|
|
|
7
7
|
import path from 'path';
|
|
8
8
|
import { analyzeProject } from '../src/index.js';
|
|
9
9
|
import { formatTable } from '../src/table-formatter.js';
|
|
10
|
+
import { generateHtmlReport } from '../src/html-formatter.js';
|
|
11
|
+
import { writeFileSync } from 'fs';
|
|
10
12
|
|
|
11
13
|
const program = new Command();
|
|
12
14
|
|
|
@@ -44,9 +46,10 @@ program
|
|
|
44
46
|
|
|
45
47
|
const format = options.format !== 'text' ? options.format : (configOptions.format || 'text');
|
|
46
48
|
const isJson = format === 'json';
|
|
47
|
-
const
|
|
49
|
+
const isHtml = format === 'html';
|
|
50
|
+
const useColors = options.color !== false && configOptions.color !== false && !isJson && !isHtml;
|
|
48
51
|
|
|
49
|
-
const spinner = isJson ? null : ora('Analyzing TypeScript project...').start();
|
|
52
|
+
const spinner = (isJson || isHtml) ? null : ora('Analyzing TypeScript project...').start();
|
|
50
53
|
|
|
51
54
|
try {
|
|
52
55
|
let extraExcludes: string[] = [];
|
|
@@ -79,6 +82,14 @@ program
|
|
|
79
82
|
process.exit(0);
|
|
80
83
|
}
|
|
81
84
|
|
|
85
|
+
if (isHtml) {
|
|
86
|
+
const htmlOutput = generateHtmlReport(stats);
|
|
87
|
+
const htmlReportPath = path.resolve(process.cwd(), 'ts-analyzer-report.html');
|
|
88
|
+
writeFileSync(htmlReportPath, htmlOutput);
|
|
89
|
+
console.log(`HTML report generated at: ${htmlReportPath}`);
|
|
90
|
+
process.exit(0);
|
|
91
|
+
}
|
|
92
|
+
|
|
82
93
|
spinner?.succeed('Analysis complete!');
|
|
83
94
|
|
|
84
95
|
// Print summary table
|
|
@@ -187,6 +198,23 @@ program
|
|
|
187
198
|
{ metric: 'Complex Files', value: stats.formatNumber(stats.codeComplexity.complexFiles) },
|
|
188
199
|
{ metric: 'Overall Complexity', value: complexityIndicator }
|
|
189
200
|
]);
|
|
201
|
+
|
|
202
|
+
console.log('\n' + (useColors ? chalk.bold.magenta('Anti-Patterns & Code Smells:') : 'Anti-Patterns & Code Smells:'));
|
|
203
|
+
const hasSmells = stats.codeComplexity.codeSmells.callbackHell > 0 ||
|
|
204
|
+
stats.codeComplexity.codeSmells.godFiles > 0 ||
|
|
205
|
+
stats.codeComplexity.codeSmells.excessiveParameters > 0 ||
|
|
206
|
+
stats.codeComplexity.codeSmells.magicNumbers > 0;
|
|
207
|
+
|
|
208
|
+
if (hasSmells) {
|
|
209
|
+
formatTable([
|
|
210
|
+
{ metric: 'Callback Hell (Depth > 3)', value: stats.formatNumber(stats.codeComplexity.codeSmells.callbackHell) },
|
|
211
|
+
{ metric: 'God Files (> 500 lines)', value: stats.formatNumber(stats.codeComplexity.codeSmells.godFiles) },
|
|
212
|
+
{ metric: 'Excessive Params (> 4)', value: stats.formatNumber(stats.codeComplexity.codeSmells.excessiveParameters) },
|
|
213
|
+
{ metric: 'Magic Numbers', value: stats.formatNumber(stats.codeComplexity.codeSmells.magicNumbers) }
|
|
214
|
+
]);
|
|
215
|
+
} else {
|
|
216
|
+
console.log(useColors ? chalk.green('โ No major code smells detected.') : 'โ No major code smells detected.');
|
|
217
|
+
}
|
|
190
218
|
}
|
|
191
219
|
|
|
192
220
|
// Add code quality recommendations
|
package/dist/bin/cli.js
CHANGED
|
@@ -7,6 +7,8 @@ import fs from 'fs';
|
|
|
7
7
|
import path from 'path';
|
|
8
8
|
import { analyzeProject } from '../src/index.js';
|
|
9
9
|
import { formatTable } from '../src/table-formatter.js';
|
|
10
|
+
import { generateHtmlReport } from '../src/html-formatter.js';
|
|
11
|
+
import { writeFileSync } from 'fs';
|
|
10
12
|
const program = new Command();
|
|
11
13
|
program
|
|
12
14
|
.name('ts-analyzer')
|
|
@@ -33,8 +35,9 @@ program
|
|
|
33
35
|
}
|
|
34
36
|
const format = options.format !== 'text' ? options.format : (configOptions.format || 'text');
|
|
35
37
|
const isJson = format === 'json';
|
|
36
|
-
const
|
|
37
|
-
const
|
|
38
|
+
const isHtml = format === 'html';
|
|
39
|
+
const useColors = options.color !== false && configOptions.color !== false && !isJson && !isHtml;
|
|
40
|
+
const spinner = (isJson || isHtml) ? null : ora('Analyzing TypeScript project...').start();
|
|
38
41
|
try {
|
|
39
42
|
let extraExcludes = [];
|
|
40
43
|
if (configOptions.exclude)
|
|
@@ -64,6 +67,13 @@ program
|
|
|
64
67
|
}, 2));
|
|
65
68
|
process.exit(0);
|
|
66
69
|
}
|
|
70
|
+
if (isHtml) {
|
|
71
|
+
const htmlOutput = generateHtmlReport(stats);
|
|
72
|
+
const htmlReportPath = path.resolve(process.cwd(), 'ts-analyzer-report.html');
|
|
73
|
+
writeFileSync(htmlReportPath, htmlOutput);
|
|
74
|
+
console.log(`HTML report generated at: ${htmlReportPath}`);
|
|
75
|
+
process.exit(0);
|
|
76
|
+
}
|
|
67
77
|
spinner?.succeed('Analysis complete!');
|
|
68
78
|
// Print summary table
|
|
69
79
|
console.log('\n' + (useColors ? chalk.bold.green('Project Summary:') : 'Project Summary:'));
|
|
@@ -169,6 +179,22 @@ program
|
|
|
169
179
|
{ metric: 'Complex Files', value: stats.formatNumber(stats.codeComplexity.complexFiles) },
|
|
170
180
|
{ metric: 'Overall Complexity', value: complexityIndicator }
|
|
171
181
|
]);
|
|
182
|
+
console.log('\n' + (useColors ? chalk.bold.magenta('Anti-Patterns & Code Smells:') : 'Anti-Patterns & Code Smells:'));
|
|
183
|
+
const hasSmells = stats.codeComplexity.codeSmells.callbackHell > 0 ||
|
|
184
|
+
stats.codeComplexity.codeSmells.godFiles > 0 ||
|
|
185
|
+
stats.codeComplexity.codeSmells.excessiveParameters > 0 ||
|
|
186
|
+
stats.codeComplexity.codeSmells.magicNumbers > 0;
|
|
187
|
+
if (hasSmells) {
|
|
188
|
+
formatTable([
|
|
189
|
+
{ metric: 'Callback Hell (Depth > 3)', value: stats.formatNumber(stats.codeComplexity.codeSmells.callbackHell) },
|
|
190
|
+
{ metric: 'God Files (> 500 lines)', value: stats.formatNumber(stats.codeComplexity.codeSmells.godFiles) },
|
|
191
|
+
{ metric: 'Excessive Params (> 4)', value: stats.formatNumber(stats.codeComplexity.codeSmells.excessiveParameters) },
|
|
192
|
+
{ metric: 'Magic Numbers', value: stats.formatNumber(stats.codeComplexity.codeSmells.magicNumbers) }
|
|
193
|
+
]);
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
console.log(useColors ? chalk.green('โ No major code smells detected.') : 'โ No major code smells detected.');
|
|
197
|
+
}
|
|
172
198
|
}
|
|
173
199
|
// Add code quality recommendations
|
|
174
200
|
if (stats.typescriptSafety || stats.codeComplexity) {
|
package/dist/bin/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../bin/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../bin/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,12 @@ export interface FileComplexityMetrics {
|
|
|
8
8
|
functionCount: number;
|
|
9
9
|
complexityScore: number;
|
|
10
10
|
complexityRating: string;
|
|
11
|
+
codeSmells: {
|
|
12
|
+
magicNumbers: number;
|
|
13
|
+
callbackHell: number;
|
|
14
|
+
godFiles: number;
|
|
15
|
+
excessiveParameters: number;
|
|
16
|
+
};
|
|
11
17
|
}
|
|
12
18
|
export interface CodeComplexityMetrics {
|
|
13
19
|
analyzedFiles: number;
|
|
@@ -19,6 +25,12 @@ export interface CodeComplexityMetrics {
|
|
|
19
25
|
totalFunctions: number;
|
|
20
26
|
complexFiles: number;
|
|
21
27
|
overallComplexity: string;
|
|
28
|
+
codeSmells: {
|
|
29
|
+
magicNumbers: number;
|
|
30
|
+
callbackHell: number;
|
|
31
|
+
godFiles: number;
|
|
32
|
+
excessiveParameters: number;
|
|
33
|
+
};
|
|
22
34
|
}
|
|
23
35
|
export declare function analyzeFileComplexity(filePath: string): Promise<FileComplexityMetrics>;
|
|
24
36
|
export declare function calculateProjectComplexity(projectPath: string, fileList: string[]): Promise<CodeComplexityMetrics>;
|