codeslick-cli 1.0.3 → 1.1.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/README.md +73 -21
- package/bin/codeslick.cjs +21 -2
- package/dist/packages/cli/src/commands/scan.d.ts +3 -0
- package/dist/packages/cli/src/commands/scan.d.ts.map +1 -1
- package/dist/packages/cli/src/commands/scan.js +103 -24
- package/dist/packages/cli/src/commands/scan.js.map +1 -1
- package/dist/packages/cli/src/reporters/cli-reporter.d.ts +28 -2
- package/dist/packages/cli/src/reporters/cli-reporter.d.ts.map +1 -1
- package/dist/packages/cli/src/reporters/cli-reporter.js +393 -4
- package/dist/packages/cli/src/reporters/cli-reporter.js.map +1 -1
- package/dist/packages/cli/src/scanner/local-scanner.d.ts +5 -1
- package/dist/packages/cli/src/scanner/local-scanner.d.ts.map +1 -1
- package/dist/packages/cli/src/scanner/local-scanner.js +110 -16
- package/dist/packages/cli/src/scanner/local-scanner.js.map +1 -1
- package/dist/src/lib/analyzers/java/security-checks/hardcoded-credentials.d.ts.map +1 -1
- package/dist/src/lib/analyzers/java/security-checks/hardcoded-credentials.js +24 -16
- package/dist/src/lib/analyzers/java/security-checks/hardcoded-credentials.js.map +1 -1
- package/dist/src/lib/analyzers/javascript/security-checks/ai-generated-code.d.ts.map +1 -1
- package/dist/src/lib/analyzers/javascript/security-checks/ai-generated-code.js +4 -12
- package/dist/src/lib/analyzers/javascript/security-checks/ai-generated-code.js.map +1 -1
- package/dist/src/lib/analyzers/javascript/security-checks/credential-crypto.d.ts.map +1 -1
- package/dist/src/lib/analyzers/javascript/security-checks/credential-crypto.js +22 -9
- package/dist/src/lib/analyzers/javascript/security-checks/credential-crypto.js.map +1 -1
- package/dist/src/lib/analyzers/javascript-analyzer.d.ts.map +1 -1
- package/dist/src/lib/analyzers/javascript-analyzer.js +28 -13
- package/dist/src/lib/analyzers/javascript-analyzer.js.map +1 -1
- package/dist/src/lib/analyzers/python/security-checks/credentials-crypto.d.ts.map +1 -1
- package/dist/src/lib/analyzers/python/security-checks/credentials-crypto.js +44 -18
- package/dist/src/lib/analyzers/python/security-checks/credentials-crypto.js.map +1 -1
- package/dist/src/lib/analyzers/python-analyzer.d.ts.map +1 -1
- package/dist/src/lib/analyzers/python-analyzer.js +21 -13
- package/dist/src/lib/analyzers/python-analyzer.js.map +1 -1
- package/dist/src/lib/analyzers/secrets/validators/context-checker.d.ts.map +1 -1
- package/dist/src/lib/analyzers/secrets/validators/context-checker.js +21 -0
- package/dist/src/lib/analyzers/secrets/validators/context-checker.js.map +1 -1
- package/dist/src/lib/analyzers/typescript/security-checks/ai-generated-code.d.ts.map +1 -1
- package/dist/src/lib/analyzers/typescript/security-checks/ai-generated-code.js +4 -12
- package/dist/src/lib/analyzers/typescript/security-checks/ai-generated-code.js.map +1 -1
- package/dist/src/lib/analyzers/typescript/security-checks/credentials-crypto.d.ts.map +1 -1
- package/dist/src/lib/analyzers/typescript/security-checks/credentials-crypto.js +25 -9
- package/dist/src/lib/analyzers/typescript/security-checks/credentials-crypto.js.map +1 -1
- package/dist/src/lib/analyzers/typescript/security-checks/security-misconfiguration.d.ts.map +1 -1
- package/dist/src/lib/analyzers/typescript/security-checks/security-misconfiguration.js +14 -4
- package/dist/src/lib/analyzers/typescript/security-checks/security-misconfiguration.js.map +1 -1
- package/dist/src/lib/analyzers/typescript/type-checker.d.ts +32 -0
- package/dist/src/lib/analyzers/typescript/type-checker.d.ts.map +1 -1
- package/dist/src/lib/analyzers/typescript/type-checker.js +264 -22
- package/dist/src/lib/analyzers/typescript/type-checker.js.map +1 -1
- package/dist/src/lib/analyzers/typescript-analyzer.d.ts.map +1 -1
- package/dist/src/lib/analyzers/typescript-analyzer.js +27 -23
- package/dist/src/lib/analyzers/typescript-analyzer.js.map +1 -1
- package/package.json +1 -1
- package/src/commands/scan.ts +77 -25
- package/src/reporters/cli-reporter.ts +449 -4
- package/src/scanner/local-scanner.ts +132 -19
package/README.md
CHANGED
|
@@ -15,6 +15,22 @@ Catch security vulnerabilities before they enter your codebase with automated pr
|
|
|
15
15
|
- **CI/CD Ready** - JSON output mode for automation
|
|
16
16
|
- **OWASP Top 10:2025 Compliant** - 268 comprehensive security checks
|
|
17
17
|
|
|
18
|
+
## Prerequisites
|
|
19
|
+
|
|
20
|
+
**Git is required** - CodeSlick CLI works with any git repository (local or remote):
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
# Initialize git in your project (if not already done)
|
|
24
|
+
git init
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
**Note**: You do NOT need GitHub, GitLab, or any remote hosting. CodeSlick works with local git repositories, GitHub repositories, GitLab, Bitbucket, or any git-based workflow.
|
|
28
|
+
|
|
29
|
+
**System Requirements**:
|
|
30
|
+
- Node.js 18.0.0 or higher
|
|
31
|
+
- Git (any version)
|
|
32
|
+
- macOS, Linux, or Windows
|
|
33
|
+
|
|
18
34
|
## Installation
|
|
19
35
|
|
|
20
36
|
### Option 1: Use `npx` (Recommended - No Installation Required)
|
|
@@ -60,10 +76,18 @@ npx codeslick-cli init
|
|
|
60
76
|
|
|
61
77
|
## Quick Start
|
|
62
78
|
|
|
63
|
-
### 1.
|
|
79
|
+
### 1. Make Sure You Have Git Initialized
|
|
64
80
|
|
|
65
81
|
```bash
|
|
66
82
|
cd your-project/
|
|
83
|
+
|
|
84
|
+
# If not already a git repository, initialize it first:
|
|
85
|
+
git init
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### 2. Initialize CodeSlick in Your Repository
|
|
89
|
+
|
|
90
|
+
```bash
|
|
67
91
|
npx codeslick-cli init
|
|
68
92
|
# or if you installed globally:
|
|
69
93
|
codeslick init # or: cs init
|
|
@@ -71,18 +95,18 @@ codeslick init # or: cs init
|
|
|
71
95
|
|
|
72
96
|
This will:
|
|
73
97
|
- Create `.codeslick.json` configuration file
|
|
74
|
-
- Install pre-commit hook
|
|
98
|
+
- Install pre-commit hook in `.git/hooks/`
|
|
75
99
|
- Configure automatic scanning
|
|
76
100
|
|
|
77
|
-
###
|
|
101
|
+
### 3. Configure Severity Threshold (Optional)
|
|
78
102
|
|
|
79
103
|
```bash
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
104
|
+
npx codeslick-cli config set severity critical # Block only CRITICAL issues
|
|
105
|
+
npx codeslick-cli config set severity high # Block HIGH+ issues (recommended)
|
|
106
|
+
npx codeslick-cli config set severity medium # Block MEDIUM+ issues (default)
|
|
83
107
|
```
|
|
84
108
|
|
|
85
|
-
###
|
|
109
|
+
### 4. Commit as Usual
|
|
86
110
|
|
|
87
111
|
```bash
|
|
88
112
|
git add .
|
|
@@ -125,15 +149,21 @@ codeslick scan [files...] [options]
|
|
|
125
149
|
```
|
|
126
150
|
|
|
127
151
|
**Options:**
|
|
128
|
-
- `--
|
|
152
|
+
- `--all, -a` - Scan all files in repository (overrides default staged-only behavior)
|
|
153
|
+
- `--quick, -q` - Quick scan - skip deep TypeScript type checking for speed
|
|
154
|
+
- `--verbose, -v` - Show all issues including MEDIUM and LOW (default: HIGH+ only)
|
|
129
155
|
- `--severity, -s <level>` - Override severity threshold (critical|high|medium|low)
|
|
130
156
|
- `--fix` - Auto-apply fixes where possible (experimental)
|
|
131
157
|
- `--json` - Output results as JSON (for CI/CD)
|
|
132
158
|
|
|
159
|
+
**Default Behavior:** Scans only **staged files** for fast pre-commit feedback.
|
|
160
|
+
|
|
133
161
|
**Examples:**
|
|
134
162
|
```bash
|
|
135
|
-
codeslick scan # Scan
|
|
136
|
-
codeslick scan --
|
|
163
|
+
codeslick scan # Scan staged files (default)
|
|
164
|
+
codeslick scan --all # Scan entire repository
|
|
165
|
+
codeslick scan --quick # Fast scan (skip TypeScript type checking)
|
|
166
|
+
codeslick scan --verbose # Show all issues (including MEDIUM/LOW)
|
|
137
167
|
codeslick scan src/**/*.js # Scan specific files/patterns
|
|
138
168
|
codeslick scan --json # JSON output (for CI/CD)
|
|
139
169
|
codeslick scan --severity high # Temporarily override threshold
|
|
@@ -350,20 +380,39 @@ codeslick init --force # Re-install hook
|
|
|
350
380
|
|
|
351
381
|
**Problem**: Running `codeslick init` in a non-git directory.
|
|
352
382
|
|
|
383
|
+
**Why this happens**: CodeSlick CLI requires git to:
|
|
384
|
+
- Install pre-commit hooks in `.git/hooks/` directory
|
|
385
|
+
- Track staged files for scanning
|
|
386
|
+
- Work with your existing git workflow
|
|
387
|
+
|
|
353
388
|
**Solution**: Initialize git first:
|
|
354
389
|
```bash
|
|
390
|
+
# Initialize git in your project
|
|
355
391
|
git init
|
|
356
|
-
|
|
392
|
+
|
|
393
|
+
# Now run CodeSlick init
|
|
394
|
+
npx codeslick-cli init
|
|
357
395
|
```
|
|
358
396
|
|
|
359
|
-
|
|
397
|
+
**Note**: You do NOT need GitHub or any remote repository. CodeSlick works with local git repositories.
|
|
398
|
+
|
|
399
|
+
### "No staged files to scan" message
|
|
400
|
+
|
|
401
|
+
**Problem**: Running `codeslick scan` with no staged files.
|
|
360
402
|
|
|
361
|
-
**
|
|
403
|
+
**Why this happens**: By default, CodeSlick scans only staged files for fast pre-commit feedback.
|
|
362
404
|
|
|
363
|
-
**
|
|
405
|
+
**Solutions**:
|
|
364
406
|
```bash
|
|
407
|
+
# Option 1: Stage files first
|
|
365
408
|
git add <files>
|
|
366
|
-
codeslick scan
|
|
409
|
+
codeslick scan
|
|
410
|
+
|
|
411
|
+
# Option 2: Scan entire repository
|
|
412
|
+
codeslick scan --all
|
|
413
|
+
|
|
414
|
+
# Option 3: Scan specific path
|
|
415
|
+
codeslick scan src/
|
|
367
416
|
```
|
|
368
417
|
|
|
369
418
|
### Pre-commit hook not running
|
|
@@ -483,6 +532,14 @@ MIT License - see [LICENSE](../../LICENSE) for details.
|
|
|
483
532
|
- **Issues**: https://github.com/VitorLourenco/codeslick2/issues
|
|
484
533
|
- **Email**: support@codeslick.dev
|
|
485
534
|
|
|
535
|
+
## What's New in v1.0
|
|
536
|
+
|
|
537
|
+
- **Staged Files by Default** - Fast pre-commit scans (<1s for most commits)
|
|
538
|
+
- **Quick Mode** - Skip TypeScript type checking with `--quick` for even faster scans
|
|
539
|
+
- **Smart Output** - Only shows CRITICAL and HIGH issues by default (use `--verbose` for all)
|
|
540
|
+
- **Markdown Reports** - Auto-generates detailed reports for large scans (>20 files or >30 issues)
|
|
541
|
+
- **268 Security Checks** - OWASP Top 10:2025 compliant
|
|
542
|
+
|
|
486
543
|
## Roadmap
|
|
487
544
|
|
|
488
545
|
### v1.1 (Q2 2026)
|
|
@@ -490,12 +547,7 @@ MIT License - see [LICENSE](../../LICENSE) for details.
|
|
|
490
547
|
- Custom rule configuration
|
|
491
548
|
- IDE integration (VS Code extension)
|
|
492
549
|
|
|
493
|
-
### v1.2 (Q3 2026)
|
|
494
|
-
- SBOM generation
|
|
495
|
-
- SARIF output format
|
|
496
|
-
- Team collaboration features
|
|
497
|
-
|
|
498
550
|
---
|
|
499
551
|
|
|
500
|
-
**Made with
|
|
552
|
+
**Made with security in mind by CodeSlick**
|
|
501
553
|
https://codeslick.dev
|
package/bin/codeslick.cjs
CHANGED
|
@@ -25,6 +25,7 @@ const { scanCommand } = require('../dist/packages/cli/src/commands/scan');
|
|
|
25
25
|
const { initCommand } = require('../dist/packages/cli/src/commands/init');
|
|
26
26
|
const { configCommand } = require('../dist/packages/cli/src/commands/config');
|
|
27
27
|
const { loginCommand, logoutCommand, whoamiCommand } = require('../dist/packages/cli/src/commands/auth');
|
|
28
|
+
const { version } = require('../package.json');
|
|
28
29
|
|
|
29
30
|
// Detect if running as 'cs' or 'codeslick'
|
|
30
31
|
const scriptName = process.argv[1].includes('/cs') ? 'cs' : 'codeslick';
|
|
@@ -66,7 +67,25 @@ yargs(hideBin(process.argv))
|
|
|
66
67
|
})
|
|
67
68
|
.option('staged', {
|
|
68
69
|
type: 'boolean',
|
|
69
|
-
description: 'Scan only staged files (git)',
|
|
70
|
+
description: 'Scan only staged files (git) - this is the default',
|
|
71
|
+
default: true,
|
|
72
|
+
})
|
|
73
|
+
.option('all', {
|
|
74
|
+
alias: 'a',
|
|
75
|
+
type: 'boolean',
|
|
76
|
+
description: 'Scan all files in repository (overrides --staged)',
|
|
77
|
+
default: false,
|
|
78
|
+
})
|
|
79
|
+
.option('quick', {
|
|
80
|
+
alias: 'q',
|
|
81
|
+
type: 'boolean',
|
|
82
|
+
description: 'Quick scan - skip deep TypeScript type checking for speed',
|
|
83
|
+
default: false,
|
|
84
|
+
})
|
|
85
|
+
.option('verbose', {
|
|
86
|
+
alias: 'v',
|
|
87
|
+
type: 'boolean',
|
|
88
|
+
description: 'Show detailed results for all files (default: top 10 only)',
|
|
70
89
|
default: false,
|
|
71
90
|
})
|
|
72
91
|
.option('severity', {
|
|
@@ -146,7 +165,7 @@ yargs(hideBin(process.argv))
|
|
|
146
165
|
.demandCommand(1, 'You must provide a command')
|
|
147
166
|
.help()
|
|
148
167
|
.alias('help', 'h')
|
|
149
|
-
.version(
|
|
168
|
+
.version(version)
|
|
150
169
|
.alias('version', 'v')
|
|
151
170
|
.epilog('For more information, visit https://codeslick.dev/docs/cli')
|
|
152
171
|
.strict()
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../../../../src/commands/scan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;
|
|
1
|
+
{"version":3,"file":"scan.d.ts","sourceRoot":"","sources":["../../../../../src/commands/scan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAyBH;;GAEG;AACH,UAAU,QAAQ;IAChB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IAClD,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAwCD;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CA0L/D"}
|
|
@@ -16,6 +16,39 @@
|
|
|
16
16
|
*
|
|
17
17
|
* @module packages/cli/src/commands/scan
|
|
18
18
|
*/
|
|
19
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
20
|
+
if (k2 === undefined) k2 = k;
|
|
21
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
22
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
23
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
24
|
+
}
|
|
25
|
+
Object.defineProperty(o, k2, desc);
|
|
26
|
+
}) : (function(o, m, k, k2) {
|
|
27
|
+
if (k2 === undefined) k2 = k;
|
|
28
|
+
o[k2] = m[k];
|
|
29
|
+
}));
|
|
30
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
31
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
32
|
+
}) : function(o, v) {
|
|
33
|
+
o["default"] = v;
|
|
34
|
+
});
|
|
35
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
36
|
+
var ownKeys = function(o) {
|
|
37
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
38
|
+
var ar = [];
|
|
39
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
40
|
+
return ar;
|
|
41
|
+
};
|
|
42
|
+
return ownKeys(o);
|
|
43
|
+
};
|
|
44
|
+
return function (mod) {
|
|
45
|
+
if (mod && mod.__esModule) return mod;
|
|
46
|
+
var result = {};
|
|
47
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
48
|
+
__setModuleDefault(result, mod);
|
|
49
|
+
return result;
|
|
50
|
+
};
|
|
51
|
+
})();
|
|
19
52
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
20
53
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
21
54
|
};
|
|
@@ -49,14 +82,17 @@ async function getStagedFiles() {
|
|
|
49
82
|
}
|
|
50
83
|
/**
|
|
51
84
|
* Expand glob patterns to file paths
|
|
85
|
+
* @param patterns - Glob patterns to match
|
|
86
|
+
* @param exclude - Patterns to exclude (optional)
|
|
52
87
|
*/
|
|
53
|
-
async function expandGlobPatterns(patterns) {
|
|
88
|
+
async function expandGlobPatterns(patterns, exclude) {
|
|
54
89
|
const allFiles = [];
|
|
55
90
|
for (const pattern of patterns) {
|
|
56
91
|
const files = await (0, glob_1.glob)(pattern, {
|
|
57
92
|
cwd: process.cwd(),
|
|
58
93
|
absolute: true,
|
|
59
94
|
nodir: true,
|
|
95
|
+
ignore: exclude || [], // Apply exclusions during glob expansion
|
|
60
96
|
});
|
|
61
97
|
allFiles.push(...files);
|
|
62
98
|
}
|
|
@@ -83,27 +119,21 @@ async function scanCommand(args) {
|
|
|
83
119
|
severityThreshold: args.severity || config.severity || 'critical',
|
|
84
120
|
exclude: config.exclude || [],
|
|
85
121
|
autofix: args.fix || config.autofix || false,
|
|
122
|
+
quickMode: args.quick || false,
|
|
86
123
|
};
|
|
87
124
|
// Determine which files to scan
|
|
125
|
+
// Priority: specific files > --all > --staged (default)
|
|
88
126
|
let filePaths = [];
|
|
89
|
-
if (args.
|
|
90
|
-
// Scan
|
|
91
|
-
filePaths = await
|
|
92
|
-
if (filePaths.length === 0) {
|
|
93
|
-
(0, cli_reporter_1.printError)('No staged files found. Stage files with: git add <files>');
|
|
94
|
-
process.exit(0);
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
else if (args.files && args.files.length > 0) {
|
|
98
|
-
// Scan specific files/patterns
|
|
99
|
-
filePaths = await expandGlobPatterns(args.files);
|
|
127
|
+
if (args.files && args.files.length > 0) {
|
|
128
|
+
// Priority 1: Scan specific files/patterns provided by user
|
|
129
|
+
filePaths = await expandGlobPatterns(args.files, config.exclude);
|
|
100
130
|
if (filePaths.length === 0) {
|
|
101
131
|
(0, cli_reporter_1.printError)(`No files matched patterns: ${args.files.join(', ')}`);
|
|
102
132
|
process.exit(1);
|
|
103
133
|
}
|
|
104
134
|
}
|
|
105
|
-
else {
|
|
106
|
-
// Scan all files
|
|
135
|
+
else if (args.all) {
|
|
136
|
+
// Priority 2: Scan all files in repository (--all flag)
|
|
107
137
|
const defaultPatterns = config.languages?.map((lang) => {
|
|
108
138
|
switch (lang) {
|
|
109
139
|
case 'javascript':
|
|
@@ -118,45 +148,94 @@ async function scanCommand(args) {
|
|
|
118
148
|
return '';
|
|
119
149
|
}
|
|
120
150
|
}).filter(Boolean) || ['**/*.{js,jsx,ts,tsx,py,java}'];
|
|
121
|
-
filePaths = await expandGlobPatterns(defaultPatterns);
|
|
151
|
+
filePaths = await expandGlobPatterns(defaultPatterns, config.exclude);
|
|
122
152
|
if (filePaths.length === 0) {
|
|
123
153
|
(0, cli_reporter_1.printError)('No files found to scan.');
|
|
124
154
|
process.exit(0);
|
|
125
155
|
}
|
|
126
156
|
}
|
|
127
|
-
|
|
157
|
+
else {
|
|
158
|
+
// Priority 3 (Default): Scan staged files only
|
|
159
|
+
const stagedFiles = await getStagedFiles();
|
|
160
|
+
// Apply exclusions to staged files
|
|
161
|
+
if (config.exclude && config.exclude.length > 0) {
|
|
162
|
+
const { shouldExclude } = await Promise.resolve().then(() => __importStar(require('../scanner/local-scanner')));
|
|
163
|
+
filePaths = stagedFiles.filter(file => !shouldExclude(file, config.exclude));
|
|
164
|
+
}
|
|
165
|
+
else {
|
|
166
|
+
filePaths = stagedFiles;
|
|
167
|
+
}
|
|
168
|
+
if (filePaths.length === 0) {
|
|
169
|
+
// Friendly message for no staged files (this is the default behavior)
|
|
170
|
+
console.log('');
|
|
171
|
+
console.log(chalk_1.default.cyan(' No staged files to scan.'));
|
|
172
|
+
console.log('');
|
|
173
|
+
console.log(chalk_1.default.gray(' CodeSlick scans staged files by default for fast feedback.'));
|
|
174
|
+
console.log('');
|
|
175
|
+
console.log(chalk_1.default.white(' Options:'));
|
|
176
|
+
console.log(chalk_1.default.green(' git add <files>') + chalk_1.default.gray(' Stage files, then run cs scan'));
|
|
177
|
+
console.log(chalk_1.default.green(' cs scan --all') + chalk_1.default.gray(' Scan entire repository'));
|
|
178
|
+
console.log(chalk_1.default.green(' cs scan src/') + chalk_1.default.gray(' Scan specific path'));
|
|
179
|
+
console.log('');
|
|
180
|
+
process.exit(0);
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
// Print scan start with file count info
|
|
128
184
|
if (!args.json) {
|
|
129
185
|
(0, cli_reporter_1.printScanStart)(filePaths.length);
|
|
186
|
+
// Warn user about large scans
|
|
187
|
+
if (filePaths.length > 50) {
|
|
188
|
+
console.log('');
|
|
189
|
+
console.log(chalk_1.default.yellow(` Large scan detected (${filePaths.length} files)`));
|
|
190
|
+
if (!args.quick) {
|
|
191
|
+
console.log(chalk_1.default.gray(' TypeScript files require deep type analysis - this may take 1-3 minutes'));
|
|
192
|
+
console.log(chalk_1.default.gray(' Tip: Use --quick for faster scans (skips type checking)'));
|
|
193
|
+
}
|
|
194
|
+
console.log('');
|
|
195
|
+
}
|
|
130
196
|
}
|
|
131
197
|
// Show progress spinner
|
|
132
|
-
const spinner = !args.json ? (0, ora_1.default)(
|
|
198
|
+
const spinner = !args.json ? (0, ora_1.default)({
|
|
199
|
+
text: `Analyzing ${filePaths.length} files...`,
|
|
200
|
+
spinner: 'dots'
|
|
201
|
+
}).start() : null;
|
|
133
202
|
// Scan all files
|
|
134
203
|
const results = await (0, local_scanner_1.scanFiles)(filePaths, scannerConfig);
|
|
135
|
-
// Stop spinner
|
|
204
|
+
// Stop spinner with success
|
|
136
205
|
if (spinner) {
|
|
137
|
-
spinner.
|
|
206
|
+
spinner.succeed(`Analyzed ${results.length} files`);
|
|
138
207
|
}
|
|
139
208
|
const duration = Date.now() - startTime;
|
|
209
|
+
// Track unsupported files (files that were in the glob but not scanned)
|
|
210
|
+
const scannedPaths = new Set(results.map(r => r.filePath));
|
|
211
|
+
const skippedFiles = filePaths.filter(fp => !scannedPaths.has(fp));
|
|
212
|
+
// Calculate total vulnerabilities for output decision
|
|
213
|
+
const totalVulnerabilities = results.reduce((sum, r) => sum + r.critical + r.high + r.medium + r.low, 0);
|
|
140
214
|
// Output results
|
|
141
215
|
if (args.json) {
|
|
142
216
|
// JSON output mode (for CI/CD)
|
|
143
217
|
(0, cli_reporter_1.printJSONResults)(results);
|
|
144
218
|
}
|
|
219
|
+
else if (results.length > 20 || totalVulnerabilities > 30) {
|
|
220
|
+
// For large outputs: Generate report, show brief summary on screen
|
|
221
|
+
// Triggers when: >20 files OR >30 total vulnerabilities
|
|
222
|
+
const reportPath = (0, cli_reporter_1.generateMarkdownReport)(results, skippedFiles, duration);
|
|
223
|
+
(0, cli_reporter_1.printBriefSummary)(results, reportPath, duration);
|
|
224
|
+
}
|
|
145
225
|
else {
|
|
146
|
-
//
|
|
226
|
+
// For small outputs: Show full details on screen
|
|
147
227
|
(0, cli_reporter_1.printScanComplete)(duration);
|
|
148
|
-
(0, cli_reporter_1.printDetailedResults)(results);
|
|
149
228
|
(0, cli_reporter_1.printSummaryTable)(results);
|
|
229
|
+
(0, cli_reporter_1.printDetailedResults)(results, args.verbose);
|
|
150
230
|
}
|
|
151
231
|
// Show AI-Fix availability message if --fix flag was used
|
|
152
232
|
if (args.fix && !args.json) {
|
|
153
|
-
|
|
154
|
-
if (totalVulns > 0) {
|
|
233
|
+
if (totalVulnerabilities > 0) {
|
|
155
234
|
console.log('');
|
|
156
235
|
console.log(chalk_1.default.cyan.bold('🤖 AI-Powered Auto-Fix Available'));
|
|
157
236
|
console.log(chalk_1.default.gray('─'.repeat(50)));
|
|
158
237
|
console.log('');
|
|
159
|
-
console.log(chalk_1.default.white(`Found ${
|
|
238
|
+
console.log(chalk_1.default.white(`Found ${totalVulnerabilities} ${totalVulnerabilities === 1 ? 'vulnerability' : 'vulnerabilities'} that can be fixed with AI.`));
|
|
160
239
|
console.log('');
|
|
161
240
|
console.log(chalk_1.default.yellow('Auto-fix is available through:'));
|
|
162
241
|
console.log('');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scan.js","sourceRoot":"","sources":["../../../../../src/commands/scan.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;GAgBG
|
|
1
|
+
{"version":3,"file":"scan.js","sourceRoot":"","sources":["../../../../../src/commands/scan.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,11 +29,13 @@ export declare function printSummaryTable(results: FileScanResult[]): void;
|
|
|
29
29
|
/**
|
|
30
30
|
* Print detailed vulnerabilities for a file
|
|
31
31
|
*/
|
|
32
|
-
export declare function printFileVulnerabilities(result: FileScanResult): void;
|
|
32
|
+
export declare function printFileVulnerabilities(result: FileScanResult, showAll?: boolean): void;
|
|
33
33
|
/**
|
|
34
34
|
* Print all scan results with details
|
|
35
|
+
* @param results - Scan results
|
|
36
|
+
* @param verbose - If true, show all severities; if false, only HIGH and CRITICAL
|
|
35
37
|
*/
|
|
36
|
-
export declare function printDetailedResults(results: FileScanResult[]): void;
|
|
38
|
+
export declare function printDetailedResults(results: FileScanResult[], verbose?: boolean): void;
|
|
37
39
|
/**
|
|
38
40
|
* Print scan start message
|
|
39
41
|
*/
|
|
@@ -62,8 +64,32 @@ export declare function printCommitBlocked(threshold: string, critical: number,
|
|
|
62
64
|
* Print commit allowed message
|
|
63
65
|
*/
|
|
64
66
|
export declare function printCommitAllowed(): void;
|
|
67
|
+
/**
|
|
68
|
+
* Print summary table grouped by language
|
|
69
|
+
* Shows files scanned, issues found, and critical count per language
|
|
70
|
+
*/
|
|
71
|
+
export declare function printLanguageSummary(results: FileScanResult[]): void;
|
|
72
|
+
/**
|
|
73
|
+
* Print unsupported/skipped files summary
|
|
74
|
+
* Groups by extension and shows counts
|
|
75
|
+
*/
|
|
76
|
+
export declare function printUnsupportedFiles(skippedFiles: string[]): void;
|
|
77
|
+
/**
|
|
78
|
+
* Print Top 10 most critical issues
|
|
79
|
+
* Shows the highest priority issues that should be fixed first
|
|
80
|
+
*/
|
|
81
|
+
export declare function printTop10Critical(results: FileScanResult[]): void;
|
|
65
82
|
/**
|
|
66
83
|
* Output results as JSON
|
|
67
84
|
*/
|
|
68
85
|
export declare function printJSONResults(results: FileScanResult[]): void;
|
|
86
|
+
/**
|
|
87
|
+
* Generate Markdown report file
|
|
88
|
+
* Returns the path to the generated report
|
|
89
|
+
*/
|
|
90
|
+
export declare function generateMarkdownReport(results: FileScanResult[], skippedFiles: string[], duration: number): string;
|
|
91
|
+
/**
|
|
92
|
+
* Print brief summary for screen (when report is generated)
|
|
93
|
+
*/
|
|
94
|
+
export declare function printBriefSummary(results: FileScanResult[], reportPath: string, duration: number): void;
|
|
69
95
|
//# sourceMappingURL=cli-reporter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-reporter.d.ts","sourceRoot":"","sources":["../../../../../src/reporters/cli-reporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;
|
|
1
|
+
{"version":3,"file":"cli-reporter.d.ts","sourceRoot":"","sources":["../../../../../src/reporters/cli-reporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAG/D;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAa3E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAa1D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,IAAI,CAqCjE;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,UAAQ,GAAG,IAAI,CAgDtF;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,cAAc,EAAE,EAAE,OAAO,UAAQ,GAAG,IAAI,CA8BrF;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAItD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAGxD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAIhD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAIlD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAIlD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,GACV,IAAI,CAwBN;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAKzC;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,IAAI,CAwDpE;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,IAAI,CAkClE;AA4BD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,IAAI,CAqDlE;AAUD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,IAAI,CAyBhE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,cAAc,EAAE,EACzB,YAAY,EAAE,MAAM,EAAE,EACtB,QAAQ,EAAE,MAAM,GACf,MAAM,CA4KR;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,cAAc,EAAE,EACzB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,IAAI,CAgCN"}
|