codeslick-cli 1.0.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 +458 -0
- package/__tests__/cli-reporter.test.ts +86 -0
- package/__tests__/config-loader.test.ts +247 -0
- package/__tests__/local-scanner.test.ts +245 -0
- package/bin/codeslick.cjs +153 -0
- package/dist/packages/cli/src/commands/auth.d.ts +36 -0
- package/dist/packages/cli/src/commands/auth.d.ts.map +1 -0
- package/dist/packages/cli/src/commands/auth.js +226 -0
- package/dist/packages/cli/src/commands/auth.js.map +1 -0
- package/dist/packages/cli/src/commands/config.d.ts +37 -0
- package/dist/packages/cli/src/commands/config.d.ts.map +1 -0
- package/dist/packages/cli/src/commands/config.js +196 -0
- package/dist/packages/cli/src/commands/config.js.map +1 -0
- package/dist/packages/cli/src/commands/init.d.ts +32 -0
- package/dist/packages/cli/src/commands/init.d.ts.map +1 -0
- package/dist/packages/cli/src/commands/init.js +171 -0
- package/dist/packages/cli/src/commands/init.js.map +1 -0
- package/dist/packages/cli/src/commands/scan.d.ts +40 -0
- package/dist/packages/cli/src/commands/scan.d.ts.map +1 -0
- package/dist/packages/cli/src/commands/scan.js +204 -0
- package/dist/packages/cli/src/commands/scan.js.map +1 -0
- package/dist/packages/cli/src/config/config-loader.d.ts +67 -0
- package/dist/packages/cli/src/config/config-loader.d.ts.map +1 -0
- package/dist/packages/cli/src/config/config-loader.js +146 -0
- package/dist/packages/cli/src/config/config-loader.js.map +1 -0
- package/dist/packages/cli/src/reporters/cli-reporter.d.ts +69 -0
- package/dist/packages/cli/src/reporters/cli-reporter.d.ts.map +1 -0
- package/dist/packages/cli/src/reporters/cli-reporter.js +244 -0
- package/dist/packages/cli/src/reporters/cli-reporter.js.map +1 -0
- package/dist/packages/cli/src/scanner/local-scanner.d.ts +92 -0
- package/dist/packages/cli/src/scanner/local-scanner.d.ts.map +1 -0
- package/dist/packages/cli/src/scanner/local-scanner.js +221 -0
- package/dist/packages/cli/src/scanner/local-scanner.js.map +1 -0
- package/dist/src/lib/analyzers/helpers/ai-code-detection-utils.d.ts +88 -0
- package/dist/src/lib/analyzers/helpers/ai-code-detection-utils.d.ts.map +1 -0
- package/dist/src/lib/analyzers/helpers/ai-code-detection-utils.js +371 -0
- package/dist/src/lib/analyzers/helpers/ai-code-detection-utils.js.map +1 -0
- package/dist/src/lib/analyzers/helpers/jsx-helpers.d.ts +63 -0
- package/dist/src/lib/analyzers/helpers/jsx-helpers.d.ts.map +1 -0
- package/dist/src/lib/analyzers/helpers/jsx-helpers.js +95 -0
- package/dist/src/lib/analyzers/helpers/jsx-helpers.js.map +1 -0
- package/dist/src/lib/analyzers/helpers/variable-tracker.d.ts +59 -0
- package/dist/src/lib/analyzers/helpers/variable-tracker.d.ts.map +1 -0
- package/dist/src/lib/analyzers/helpers/variable-tracker.js +231 -0
- package/dist/src/lib/analyzers/helpers/variable-tracker.js.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/access-control.d.ts +20 -0
- package/dist/src/lib/analyzers/java/security-checks/access-control.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/access-control.js +129 -0
- package/dist/src/lib/analyzers/java/security-checks/access-control.js.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/ai-generated-code.d.ts +25 -0
- package/dist/src/lib/analyzers/java/security-checks/ai-generated-code.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/ai-generated-code.js +221 -0
- package/dist/src/lib/analyzers/java/security-checks/ai-generated-code.js.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/code-quality.d.ts +18 -0
- package/dist/src/lib/analyzers/java/security-checks/code-quality.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/code-quality.js +84 -0
- package/dist/src/lib/analyzers/java/security-checks/code-quality.js.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/crypto-validation.d.ts +18 -0
- package/dist/src/lib/analyzers/java/security-checks/crypto-validation.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/crypto-validation.js +161 -0
- package/dist/src/lib/analyzers/java/security-checks/crypto-validation.js.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/deserialization-xxe.d.ts +20 -0
- package/dist/src/lib/analyzers/java/security-checks/deserialization-xxe.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/deserialization-xxe.js +163 -0
- package/dist/src/lib/analyzers/java/security-checks/deserialization-xxe.js.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/enhanced-supply-chain.d.ts +24 -0
- package/dist/src/lib/analyzers/java/security-checks/enhanced-supply-chain.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/enhanced-supply-chain.js +178 -0
- package/dist/src/lib/analyzers/java/security-checks/enhanced-supply-chain.js.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/exception-handling.d.ts +25 -0
- package/dist/src/lib/analyzers/java/security-checks/exception-handling.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/exception-handling.js +179 -0
- package/dist/src/lib/analyzers/java/security-checks/exception-handling.js.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/file-operations.d.ts +17 -0
- package/dist/src/lib/analyzers/java/security-checks/file-operations.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/file-operations.js +67 -0
- package/dist/src/lib/analyzers/java/security-checks/file-operations.js.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/framework-security.d.ts +25 -0
- package/dist/src/lib/analyzers/java/security-checks/framework-security.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/framework-security.js +396 -0
- package/dist/src/lib/analyzers/java/security-checks/framework-security.js.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/hardcoded-credentials.d.ts +20 -0
- package/dist/src/lib/analyzers/java/security-checks/hardcoded-credentials.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/hardcoded-credentials.js +123 -0
- package/dist/src/lib/analyzers/java/security-checks/hardcoded-credentials.js.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/injection-attacks.d.ts +23 -0
- package/dist/src/lib/analyzers/java/security-checks/injection-attacks.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/injection-attacks.js +201 -0
- package/dist/src/lib/analyzers/java/security-checks/injection-attacks.js.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/insecure-design.d.ts +20 -0
- package/dist/src/lib/analyzers/java/security-checks/insecure-design.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/insecure-design.js +121 -0
- package/dist/src/lib/analyzers/java/security-checks/insecure-design.js.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/logging-failures.d.ts +20 -0
- package/dist/src/lib/analyzers/java/security-checks/logging-failures.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/logging-failures.js +89 -0
- package/dist/src/lib/analyzers/java/security-checks/logging-failures.js.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/security-misconfiguration.d.ts +26 -0
- package/dist/src/lib/analyzers/java/security-checks/security-misconfiguration.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/security-misconfiguration.js +309 -0
- package/dist/src/lib/analyzers/java/security-checks/security-misconfiguration.js.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/unsafe-patterns.d.ts +18 -0
- package/dist/src/lib/analyzers/java/security-checks/unsafe-patterns.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java/security-checks/unsafe-patterns.js +114 -0
- package/dist/src/lib/analyzers/java/security-checks/unsafe-patterns.js.map +1 -0
- package/dist/src/lib/analyzers/java/utils/createVulnerability.d.ts +58 -0
- package/dist/src/lib/analyzers/java/utils/createVulnerability.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java/utils/createVulnerability.js +71 -0
- package/dist/src/lib/analyzers/java/utils/createVulnerability.js.map +1 -0
- package/dist/src/lib/analyzers/java-analyzer.d.ts +209 -0
- package/dist/src/lib/analyzers/java-analyzer.d.ts.map +1 -0
- package/dist/src/lib/analyzers/java-analyzer.js +1720 -0
- package/dist/src/lib/analyzers/java-analyzer.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/ai-hallucinations.d.ts +27 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/ai-hallucinations.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/ai-hallucinations.js +123 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/ai-hallucinations.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/async-patterns.d.ts +44 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/async-patterns.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/async-patterns.js +224 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/async-patterns.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/code-patterns.d.ts +50 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/code-patterns.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/code-patterns.js +284 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/code-patterns.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/comparison-issues.d.ts +27 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/comparison-issues.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/comparison-issues.js +86 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/comparison-issues.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/reference-errors.d.ts +32 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/reference-errors.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/reference-errors.js +44 -0
- package/dist/src/lib/analyzers/javascript/quality-checks/reference-errors.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/access-control.d.ts +22 -0
- package/dist/src/lib/analyzers/javascript/security-checks/access-control.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/access-control.js +168 -0
- package/dist/src/lib/analyzers/javascript/security-checks/access-control.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/ai-generated-code.d.ts +25 -0
- package/dist/src/lib/analyzers/javascript/security-checks/ai-generated-code.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/ai-generated-code.js +232 -0
- package/dist/src/lib/analyzers/javascript/security-checks/ai-generated-code.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/authentication-failures.d.ts +27 -0
- package/dist/src/lib/analyzers/javascript/security-checks/authentication-failures.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/authentication-failures.js +222 -0
- package/dist/src/lib/analyzers/javascript/security-checks/authentication-failures.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/credential-crypto.d.ts +28 -0
- package/dist/src/lib/analyzers/javascript/security-checks/credential-crypto.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/credential-crypto.js +176 -0
- package/dist/src/lib/analyzers/javascript/security-checks/credential-crypto.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/enhanced-supply-chain.d.ts +23 -0
- package/dist/src/lib/analyzers/javascript/security-checks/enhanced-supply-chain.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/enhanced-supply-chain.js +113 -0
- package/dist/src/lib/analyzers/javascript/security-checks/enhanced-supply-chain.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/exception-handling.d.ts +28 -0
- package/dist/src/lib/analyzers/javascript/security-checks/exception-handling.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/exception-handling.js +227 -0
- package/dist/src/lib/analyzers/javascript/security-checks/exception-handling.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/injection-attacks.d.ts +32 -0
- package/dist/src/lib/analyzers/javascript/security-checks/injection-attacks.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/injection-attacks.js +260 -0
- package/dist/src/lib/analyzers/javascript/security-checks/injection-attacks.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/insecure-design.d.ts +26 -0
- package/dist/src/lib/analyzers/javascript/security-checks/insecure-design.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/insecure-design.js +164 -0
- package/dist/src/lib/analyzers/javascript/security-checks/insecure-design.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/security-misconfiguration.d.ts +26 -0
- package/dist/src/lib/analyzers/javascript/security-checks/security-misconfiguration.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/security-misconfiguration.js +775 -0
- package/dist/src/lib/analyzers/javascript/security-checks/security-misconfiguration.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/software-integrity.d.ts +25 -0
- package/dist/src/lib/analyzers/javascript/security-checks/software-integrity.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/software-integrity.js +168 -0
- package/dist/src/lib/analyzers/javascript/security-checks/software-integrity.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/storage-security.d.ts +27 -0
- package/dist/src/lib/analyzers/javascript/security-checks/storage-security.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/storage-security.js +108 -0
- package/dist/src/lib/analyzers/javascript/security-checks/storage-security.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/xss-dom-security.d.ts +28 -0
- package/dist/src/lib/analyzers/javascript/security-checks/xss-dom-security.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/security-checks/xss-dom-security.js +143 -0
- package/dist/src/lib/analyzers/javascript/security-checks/xss-dom-security.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/syntax/syntax-helpers.d.ts +53 -0
- package/dist/src/lib/analyzers/javascript/syntax/syntax-helpers.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/syntax/syntax-helpers.js +144 -0
- package/dist/src/lib/analyzers/javascript/syntax/syntax-helpers.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/syntax/typescript-syntax.d.ts +72 -0
- package/dist/src/lib/analyzers/javascript/syntax/typescript-syntax.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/syntax/typescript-syntax.js +314 -0
- package/dist/src/lib/analyzers/javascript/syntax/typescript-syntax.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/utils/createVulnerability.d.ts +58 -0
- package/dist/src/lib/analyzers/javascript/utils/createVulnerability.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/utils/createVulnerability.js +71 -0
- package/dist/src/lib/analyzers/javascript/utils/createVulnerability.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/utils/metrics-calculator.d.ts +36 -0
- package/dist/src/lib/analyzers/javascript/utils/metrics-calculator.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/utils/metrics-calculator.js +70 -0
- package/dist/src/lib/analyzers/javascript/utils/metrics-calculator.js.map +1 -0
- package/dist/src/lib/analyzers/javascript/utils/performance-analyzer.d.ts +29 -0
- package/dist/src/lib/analyzers/javascript/utils/performance-analyzer.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript/utils/performance-analyzer.js +55 -0
- package/dist/src/lib/analyzers/javascript/utils/performance-analyzer.js.map +1 -0
- package/dist/src/lib/analyzers/javascript-analyzer.d.ts +95 -0
- package/dist/src/lib/analyzers/javascript-analyzer.d.ts.map +1 -0
- package/dist/src/lib/analyzers/javascript-analyzer.js +2141 -0
- package/dist/src/lib/analyzers/javascript-analyzer.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/access-control.d.ts +21 -0
- package/dist/src/lib/analyzers/python/security-checks/access-control.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/access-control.js +305 -0
- package/dist/src/lib/analyzers/python/security-checks/access-control.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/ai-generated-code.d.ts +25 -0
- package/dist/src/lib/analyzers/python/security-checks/ai-generated-code.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/ai-generated-code.js +242 -0
- package/dist/src/lib/analyzers/python/security-checks/ai-generated-code.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/authentication-flaws.d.ts +24 -0
- package/dist/src/lib/analyzers/python/security-checks/authentication-flaws.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/authentication-flaws.js +207 -0
- package/dist/src/lib/analyzers/python/security-checks/authentication-flaws.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/code-quality.d.ts +27 -0
- package/dist/src/lib/analyzers/python/security-checks/code-quality.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/code-quality.js +206 -0
- package/dist/src/lib/analyzers/python/security-checks/code-quality.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/credentials-crypto.d.ts +24 -0
- package/dist/src/lib/analyzers/python/security-checks/credentials-crypto.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/credentials-crypto.js +113 -0
- package/dist/src/lib/analyzers/python/security-checks/credentials-crypto.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/crypto-failures.d.ts +20 -0
- package/dist/src/lib/analyzers/python/security-checks/crypto-failures.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/crypto-failures.js +129 -0
- package/dist/src/lib/analyzers/python/security-checks/crypto-failures.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/data-integrity.d.ts +19 -0
- package/dist/src/lib/analyzers/python/security-checks/data-integrity.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/data-integrity.js +90 -0
- package/dist/src/lib/analyzers/python/security-checks/data-integrity.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/deserialization.d.ts +20 -0
- package/dist/src/lib/analyzers/python/security-checks/deserialization.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/deserialization.js +68 -0
- package/dist/src/lib/analyzers/python/security-checks/deserialization.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/django-security.d.ts +25 -0
- package/dist/src/lib/analyzers/python/security-checks/django-security.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/django-security.js +180 -0
- package/dist/src/lib/analyzers/python/security-checks/django-security.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/enhanced-supply-chain.d.ts +23 -0
- package/dist/src/lib/analyzers/python/security-checks/enhanced-supply-chain.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/enhanced-supply-chain.js +127 -0
- package/dist/src/lib/analyzers/python/security-checks/enhanced-supply-chain.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/exception-handling.d.ts +23 -0
- package/dist/src/lib/analyzers/python/security-checks/exception-handling.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/exception-handling.js +120 -0
- package/dist/src/lib/analyzers/python/security-checks/exception-handling.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/flask-security.d.ts +24 -0
- package/dist/src/lib/analyzers/python/security-checks/flask-security.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/flask-security.js +143 -0
- package/dist/src/lib/analyzers/python/security-checks/flask-security.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/injection-attacks.d.ts +28 -0
- package/dist/src/lib/analyzers/python/security-checks/injection-attacks.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/injection-attacks.js +174 -0
- package/dist/src/lib/analyzers/python/security-checks/injection-attacks.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/insecure-design.d.ts +20 -0
- package/dist/src/lib/analyzers/python/security-checks/insecure-design.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/insecure-design.js +160 -0
- package/dist/src/lib/analyzers/python/security-checks/insecure-design.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/logging-failures.d.ts +20 -0
- package/dist/src/lib/analyzers/python/security-checks/logging-failures.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/logging-failures.js +121 -0
- package/dist/src/lib/analyzers/python/security-checks/logging-failures.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/nosql-injection.d.ts +26 -0
- package/dist/src/lib/analyzers/python/security-checks/nosql-injection.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/nosql-injection.js +248 -0
- package/dist/src/lib/analyzers/python/security-checks/nosql-injection.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/security-misconfiguration.d.ts +26 -0
- package/dist/src/lib/analyzers/python/security-checks/security-misconfiguration.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/security-misconfiguration.js +375 -0
- package/dist/src/lib/analyzers/python/security-checks/security-misconfiguration.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/ssrf-detection.d.ts +26 -0
- package/dist/src/lib/analyzers/python/security-checks/ssrf-detection.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/ssrf-detection.js +160 -0
- package/dist/src/lib/analyzers/python/security-checks/ssrf-detection.js.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/web-security.d.ts +23 -0
- package/dist/src/lib/analyzers/python/security-checks/web-security.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/security-checks/web-security.js +117 -0
- package/dist/src/lib/analyzers/python/security-checks/web-security.js.map +1 -0
- package/dist/src/lib/analyzers/python/utils/createVulnerability.d.ts +58 -0
- package/dist/src/lib/analyzers/python/utils/createVulnerability.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python/utils/createVulnerability.js +71 -0
- package/dist/src/lib/analyzers/python/utils/createVulnerability.js.map +1 -0
- package/dist/src/lib/analyzers/python-analyzer.d.ts +111 -0
- package/dist/src/lib/analyzers/python-analyzer.d.ts.map +1 -0
- package/dist/src/lib/analyzers/python-analyzer.js +1600 -0
- package/dist/src/lib/analyzers/python-analyzer.js.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/ai-providers.d.ts +14 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/ai-providers.d.ts.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/ai-providers.js +47 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/ai-providers.js.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/aws.d.ts +13 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/aws.d.ts.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/aws.js +36 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/aws.js.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/cloud-providers.d.ts +15 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/cloud-providers.d.ts.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/cloud-providers.js +68 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/cloud-providers.js.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/communication.d.ts +15 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/communication.d.ts.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/communication.js +68 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/communication.js.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/generic.d.ts +12 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/generic.d.ts.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/generic.js +45 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/generic.js.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/github.d.ts +14 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/github.d.ts.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/github.js +47 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/github.js.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/stripe.d.ts +13 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/stripe.d.ts.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/stripe.js +36 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys/stripe.js.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys.d.ts +15 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys.d.ts.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys.js +32 -0
- package/dist/src/lib/analyzers/secrets/patterns/api-keys.js.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/credentials.d.ts +15 -0
- package/dist/src/lib/analyzers/secrets/patterns/credentials.d.ts.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/credentials.js +68 -0
- package/dist/src/lib/analyzers/secrets/patterns/credentials.js.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/private-keys.d.ts +16 -0
- package/dist/src/lib/analyzers/secrets/patterns/private-keys.d.ts.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/private-keys.js +79 -0
- package/dist/src/lib/analyzers/secrets/patterns/private-keys.js.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/tokens.d.ts +15 -0
- package/dist/src/lib/analyzers/secrets/patterns/tokens.d.ts.map +1 -0
- package/dist/src/lib/analyzers/secrets/patterns/tokens.js +58 -0
- package/dist/src/lib/analyzers/secrets/patterns/tokens.js.map +1 -0
- package/dist/src/lib/analyzers/secrets/secrets-analyzer.d.ts +88 -0
- package/dist/src/lib/analyzers/secrets/secrets-analyzer.d.ts.map +1 -0
- package/dist/src/lib/analyzers/secrets/secrets-analyzer.js +162 -0
- package/dist/src/lib/analyzers/secrets/secrets-analyzer.js.map +1 -0
- package/dist/src/lib/analyzers/secrets/validators/context-checker.d.ts +56 -0
- package/dist/src/lib/analyzers/secrets/validators/context-checker.d.ts.map +1 -0
- package/dist/src/lib/analyzers/secrets/validators/context-checker.js +199 -0
- package/dist/src/lib/analyzers/secrets/validators/context-checker.js.map +1 -0
- package/dist/src/lib/analyzers/secrets/validators/entropy-checker.d.ts +56 -0
- package/dist/src/lib/analyzers/secrets/validators/entropy-checker.d.ts.map +1 -0
- package/dist/src/lib/analyzers/secrets/validators/entropy-checker.js +102 -0
- package/dist/src/lib/analyzers/secrets/validators/entropy-checker.js.map +1 -0
- package/dist/src/lib/analyzers/security-checks/es6-security.d.ts +38 -0
- package/dist/src/lib/analyzers/security-checks/es6-security.d.ts.map +1 -0
- package/dist/src/lib/analyzers/security-checks/es6-security.js +125 -0
- package/dist/src/lib/analyzers/security-checks/es6-security.js.map +1 -0
- package/dist/src/lib/analyzers/security-checks/python-async-security.d.ts +46 -0
- package/dist/src/lib/analyzers/security-checks/python-async-security.d.ts.map +1 -0
- package/dist/src/lib/analyzers/security-checks/python-async-security.js +92 -0
- package/dist/src/lib/analyzers/security-checks/python-async-security.js.map +1 -0
- package/dist/src/lib/analyzers/security-checks/react-security.d.ts +49 -0
- package/dist/src/lib/analyzers/security-checks/react-security.d.ts.map +1 -0
- package/dist/src/lib/analyzers/security-checks/react-security.js +125 -0
- package/dist/src/lib/analyzers/security-checks/react-security.js.map +1 -0
- package/dist/src/lib/analyzers/types.d.ts +92 -0
- package/dist/src/lib/analyzers/types.d.ts.map +1 -0
- package/dist/src/lib/analyzers/types.js +3 -0
- package/dist/src/lib/analyzers/types.js.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/access-control.d.ts +19 -0
- package/dist/src/lib/analyzers/typescript/security-checks/access-control.d.ts.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/access-control.js +210 -0
- package/dist/src/lib/analyzers/typescript/security-checks/access-control.js.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/ai-generated-code.d.ts +25 -0
- package/dist/src/lib/analyzers/typescript/security-checks/ai-generated-code.d.ts.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/ai-generated-code.js +242 -0
- package/dist/src/lib/analyzers/typescript/security-checks/ai-generated-code.js.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/authentication.d.ts +28 -0
- package/dist/src/lib/analyzers/typescript/security-checks/authentication.d.ts.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/authentication.js +357 -0
- package/dist/src/lib/analyzers/typescript/security-checks/authentication.js.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/code-injection.d.ts +26 -0
- package/dist/src/lib/analyzers/typescript/security-checks/code-injection.d.ts.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/code-injection.js +380 -0
- package/dist/src/lib/analyzers/typescript/security-checks/code-injection.js.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/code-quality.d.ts +23 -0
- package/dist/src/lib/analyzers/typescript/security-checks/code-quality.d.ts.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/code-quality.js +109 -0
- package/dist/src/lib/analyzers/typescript/security-checks/code-quality.js.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/credentials-crypto.d.ts +21 -0
- package/dist/src/lib/analyzers/typescript/security-checks/credentials-crypto.d.ts.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/credentials-crypto.js +153 -0
- package/dist/src/lib/analyzers/typescript/security-checks/credentials-crypto.js.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/enhanced-supply-chain.d.ts +23 -0
- package/dist/src/lib/analyzers/typescript/security-checks/enhanced-supply-chain.d.ts.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/enhanced-supply-chain.js +146 -0
- package/dist/src/lib/analyzers/typescript/security-checks/enhanced-supply-chain.js.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/exception-handling.d.ts +23 -0
- package/dist/src/lib/analyzers/typescript/security-checks/exception-handling.d.ts.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/exception-handling.js +187 -0
- package/dist/src/lib/analyzers/typescript/security-checks/exception-handling.js.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/information-disclosure.d.ts +19 -0
- package/dist/src/lib/analyzers/typescript/security-checks/information-disclosure.d.ts.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/information-disclosure.js +97 -0
- package/dist/src/lib/analyzers/typescript/security-checks/information-disclosure.js.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/injection-attacks.d.ts +29 -0
- package/dist/src/lib/analyzers/typescript/security-checks/injection-attacks.d.ts.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/injection-attacks.js +319 -0
- package/dist/src/lib/analyzers/typescript/security-checks/injection-attacks.js.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/logging-failures.d.ts +21 -0
- package/dist/src/lib/analyzers/typescript/security-checks/logging-failures.d.ts.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/logging-failures.js +121 -0
- package/dist/src/lib/analyzers/typescript/security-checks/logging-failures.js.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/security-misconfiguration.d.ts +27 -0
- package/dist/src/lib/analyzers/typescript/security-checks/security-misconfiguration.d.ts.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/security-misconfiguration.js +213 -0
- package/dist/src/lib/analyzers/typescript/security-checks/security-misconfiguration.js.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/type-security.d.ts +19 -0
- package/dist/src/lib/analyzers/typescript/security-checks/type-security.d.ts.map +1 -0
- package/dist/src/lib/analyzers/typescript/security-checks/type-security.js +59 -0
- package/dist/src/lib/analyzers/typescript/security-checks/type-security.js.map +1 -0
- package/dist/src/lib/analyzers/typescript/type-checker.d.ts +17 -0
- package/dist/src/lib/analyzers/typescript/type-checker.d.ts.map +1 -0
- package/dist/src/lib/analyzers/typescript/type-checker.js +515 -0
- package/dist/src/lib/analyzers/typescript/type-checker.js.map +1 -0
- package/dist/src/lib/analyzers/typescript/utils/createVulnerability.d.ts +58 -0
- package/dist/src/lib/analyzers/typescript/utils/createVulnerability.d.ts.map +1 -0
- package/dist/src/lib/analyzers/typescript/utils/createVulnerability.js +71 -0
- package/dist/src/lib/analyzers/typescript/utils/createVulnerability.js.map +1 -0
- package/dist/src/lib/analyzers/typescript-analyzer.d.ts +116 -0
- package/dist/src/lib/analyzers/typescript-analyzer.d.ts.map +1 -0
- package/dist/src/lib/analyzers/typescript-analyzer.js +1660 -0
- package/dist/src/lib/analyzers/typescript-analyzer.js.map +1 -0
- package/dist/src/lib/security/compliance-mapping.d.ts +29 -0
- package/dist/src/lib/security/compliance-mapping.d.ts.map +1 -0
- package/dist/src/lib/security/compliance-mapping.js +1342 -0
- package/dist/src/lib/security/compliance-mapping.js.map +1 -0
- package/dist/src/lib/security/severity-scoring.d.ts +47 -0
- package/dist/src/lib/security/severity-scoring.d.ts.map +1 -0
- package/dist/src/lib/security/severity-scoring.js +965 -0
- package/dist/src/lib/security/severity-scoring.js.map +1 -0
- package/dist/src/lib/standards/references.d.ts +16 -0
- package/dist/src/lib/standards/references.d.ts.map +1 -0
- package/dist/src/lib/standards/references.js +1161 -0
- package/dist/src/lib/standards/references.js.map +1 -0
- package/dist/src/lib/types/index.d.ts +167 -0
- package/dist/src/lib/types/index.d.ts.map +1 -0
- package/dist/src/lib/types/index.js +3 -0
- package/dist/src/lib/types/index.js.map +1 -0
- package/dist/src/lib/utils/code-cleaner.d.ts +59 -0
- package/dist/src/lib/utils/code-cleaner.d.ts.map +1 -0
- package/dist/src/lib/utils/code-cleaner.js +283 -0
- package/dist/src/lib/utils/code-cleaner.js.map +1 -0
- package/package.json +51 -0
- package/src/commands/auth.ts +308 -0
- package/src/commands/config.ts +226 -0
- package/src/commands/init.ts +202 -0
- package/src/commands/scan.ts +238 -0
- package/src/config/config-loader.ts +175 -0
- package/src/reporters/cli-reporter.ts +282 -0
- package/src/scanner/local-scanner.ts +250 -0
- package/tsconfig.json +24 -0
- package/tsconfig.tsbuildinfo +1 -0
package/README.md
ADDED
|
@@ -0,0 +1,458 @@
|
|
|
1
|
+
# @codeslick/cli
|
|
2
|
+
|
|
3
|
+
**CodeSlick CLI** - Pre-commit security scanner for JavaScript, TypeScript, Python, and Java.
|
|
4
|
+
|
|
5
|
+
Catch security vulnerabilities before they enter your codebase with automated pre-commit scanning.
|
|
6
|
+
|
|
7
|
+
## Features
|
|
8
|
+
|
|
9
|
+
- **Local Security Scanning** - No API calls required, fully offline
|
|
10
|
+
- **Pre-commit Hook Integration** - Automatically scans staged files before each commit
|
|
11
|
+
- **Fast Analysis** - <3s for 10 files using CodeSlick's analyzer engine
|
|
12
|
+
- **Multi-language Support** - JavaScript, TypeScript, Python, Java
|
|
13
|
+
- **Configurable Thresholds** - Block commits on CRITICAL, HIGH, MEDIUM, or LOW severity
|
|
14
|
+
- **Beautiful Terminal Output** - Color-coded results with CVSS scores and fix suggestions
|
|
15
|
+
- **CI/CD Ready** - JSON output mode for automation
|
|
16
|
+
- **OWASP Top 10:2025 Compliant** - 268 comprehensive security checks
|
|
17
|
+
|
|
18
|
+
## Installation
|
|
19
|
+
|
|
20
|
+
### Global Installation (Recommended)
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
npm install -g codeslick-cli
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
After installation, you can use either `codeslick` or the shorter alias `cs`:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
codeslick --version
|
|
30
|
+
# or
|
|
31
|
+
cs --version
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Both commands work identically. Use `cs` for faster typing!
|
|
35
|
+
|
|
36
|
+
### Local Installation (Per Project)
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
npm install --save-dev codeslick-cli
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
## Quick Start
|
|
43
|
+
|
|
44
|
+
### 1. Initialize CodeSlick in Your Repository
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
cd your-project/
|
|
48
|
+
codeslick init
|
|
49
|
+
# or use the shorter alias:
|
|
50
|
+
cs init
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
This will:
|
|
54
|
+
- Create `.codeslick.json` configuration file
|
|
55
|
+
- Install pre-commit hook
|
|
56
|
+
- Configure automatic scanning
|
|
57
|
+
|
|
58
|
+
### 2. Configure Severity Threshold (Optional)
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
cs config set severity critical # Block only CRITICAL issues
|
|
62
|
+
cs config set severity high # Block HIGH+ issues (recommended)
|
|
63
|
+
cs config set severity medium # Block MEDIUM+ issues (default)
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### 3. Commit as Usual
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
git add .
|
|
70
|
+
git commit -m "Add new feature"
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
CodeSlick will automatically scan staged files. If vulnerabilities are found that meet your severity threshold, the commit will be blocked.
|
|
74
|
+
|
|
75
|
+
## Commands
|
|
76
|
+
|
|
77
|
+
### `codeslick init`
|
|
78
|
+
|
|
79
|
+
Initialize CodeSlick in your repository.
|
|
80
|
+
|
|
81
|
+
**Usage:**
|
|
82
|
+
```bash
|
|
83
|
+
codeslick init [options]
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
**Options:**
|
|
87
|
+
- `--force, -f` - Force re-initialization (overwrite existing config)
|
|
88
|
+
- `--severity, -s <level>` - Set default severity threshold (critical|high|medium|low)
|
|
89
|
+
|
|
90
|
+
**Examples:**
|
|
91
|
+
```bash
|
|
92
|
+
codeslick init # Initialize with defaults
|
|
93
|
+
codeslick init --force # Overwrite existing configuration
|
|
94
|
+
codeslick init --severity high # Initialize with HIGH severity threshold
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
### `codeslick scan`
|
|
100
|
+
|
|
101
|
+
Scan files for security vulnerabilities.
|
|
102
|
+
|
|
103
|
+
**Usage:**
|
|
104
|
+
```bash
|
|
105
|
+
codeslick scan [files...] [options]
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
**Options:**
|
|
109
|
+
- `--staged` - Scan only staged files (for pre-commit hooks)
|
|
110
|
+
- `--severity, -s <level>` - Override severity threshold (critical|high|medium|low)
|
|
111
|
+
- `--fix` - Auto-apply fixes where possible (experimental)
|
|
112
|
+
- `--json` - Output results as JSON (for CI/CD)
|
|
113
|
+
|
|
114
|
+
**Examples:**
|
|
115
|
+
```bash
|
|
116
|
+
codeslick scan # Scan all files
|
|
117
|
+
codeslick scan --staged # Scan staged files only
|
|
118
|
+
codeslick scan src/**/*.js # Scan specific files/patterns
|
|
119
|
+
codeslick scan --json # JSON output (for CI/CD)
|
|
120
|
+
codeslick scan --severity high # Temporarily override threshold
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
### `codeslick config`
|
|
126
|
+
|
|
127
|
+
Manage CodeSlick configuration.
|
|
128
|
+
|
|
129
|
+
**Usage:**
|
|
130
|
+
```bash
|
|
131
|
+
codeslick config <action> [key] [value]
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
**Actions:**
|
|
135
|
+
- `list` - Display all configuration values
|
|
136
|
+
- `get <key>` - Get a specific configuration value
|
|
137
|
+
- `set <key> <value>` - Set a configuration value
|
|
138
|
+
|
|
139
|
+
**Configuration Keys:**
|
|
140
|
+
- `severity` - Severity threshold (critical|high|medium|low)
|
|
141
|
+
- `autofix` - Enable/disable auto-fix (true|false)
|
|
142
|
+
- `languages` - Comma-separated list of languages
|
|
143
|
+
- `exclude` - Comma-separated list of exclude patterns
|
|
144
|
+
|
|
145
|
+
**Examples:**
|
|
146
|
+
```bash
|
|
147
|
+
codeslick config list # Show all config
|
|
148
|
+
codeslick config get severity # Get current severity
|
|
149
|
+
codeslick config set severity critical # Set severity to CRITICAL only
|
|
150
|
+
codeslick config set autofix true # Enable auto-fix
|
|
151
|
+
codeslick config set languages js,ts,py # Enable only JS, TS, Python
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
## Command Aliases
|
|
155
|
+
|
|
156
|
+
For faster typing, use `cs` instead of `codeslick`:
|
|
157
|
+
|
|
158
|
+
| Long Command | Short Alias | Description |
|
|
159
|
+
|--------------|-------------|-------------|
|
|
160
|
+
| `codeslick init` | `cs init` | Initialize CodeSlick |
|
|
161
|
+
| `codeslick scan` | `cs scan` | Scan files |
|
|
162
|
+
| `codeslick config` | `cs config` | Manage config |
|
|
163
|
+
| `codeslick auth` | `cs auth` | Authenticate |
|
|
164
|
+
| `codeslick --help` | `cs --help` | Show help |
|
|
165
|
+
| `codeslick --version` | `cs --version` | Show version |
|
|
166
|
+
|
|
167
|
+
**Examples:**
|
|
168
|
+
```bash
|
|
169
|
+
# All of these are equivalent:
|
|
170
|
+
codeslick scan --staged
|
|
171
|
+
cs scan --staged
|
|
172
|
+
|
|
173
|
+
codeslick config set severity high
|
|
174
|
+
cs config set severity high
|
|
175
|
+
|
|
176
|
+
codeslick init --force
|
|
177
|
+
cs init --force
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
Both commands work identically - choose whichever you prefer!
|
|
181
|
+
|
|
182
|
+
## Configuration
|
|
183
|
+
|
|
184
|
+
The `.codeslick.json` file controls how CodeSlick scans your code.
|
|
185
|
+
|
|
186
|
+
### Default Configuration
|
|
187
|
+
|
|
188
|
+
```json
|
|
189
|
+
{
|
|
190
|
+
"version": "1.0",
|
|
191
|
+
"severity": "critical",
|
|
192
|
+
"autofix": false,
|
|
193
|
+
"exclude": [
|
|
194
|
+
"node_modules/**",
|
|
195
|
+
"dist/**",
|
|
196
|
+
"build/**",
|
|
197
|
+
"coverage/**",
|
|
198
|
+
"**/*.test.{js,ts}",
|
|
199
|
+
"**/*.spec.{js,ts}",
|
|
200
|
+
"**/test/**",
|
|
201
|
+
"**/tests/**"
|
|
202
|
+
],
|
|
203
|
+
"languages": ["javascript", "typescript", "python", "java"]
|
|
204
|
+
}
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
### Configuration Reference
|
|
208
|
+
|
|
209
|
+
| Key | Type | Default | Description |
|
|
210
|
+
|-----|------|---------|-------------|
|
|
211
|
+
| `version` | string | `"1.0"` | Configuration version (do not modify) |
|
|
212
|
+
| `severity` | string | `"critical"` | Severity threshold: `critical`, `high`, `medium`, `low` |
|
|
213
|
+
| `autofix` | boolean | `false` | Enable auto-fix (experimental) |
|
|
214
|
+
| `exclude` | string[] | See above | Glob patterns to exclude from scanning |
|
|
215
|
+
| `languages` | string[] | All | Languages to scan: `javascript`, `typescript`, `python`, `java` |
|
|
216
|
+
|
|
217
|
+
### Severity Thresholds
|
|
218
|
+
|
|
219
|
+
| Threshold | Blocks On | Use Case |
|
|
220
|
+
|-----------|-----------|----------|
|
|
221
|
+
| `critical` | CRITICAL only | Minimum protection (fastest) |
|
|
222
|
+
| `high` | CRITICAL + HIGH | Recommended for most projects |
|
|
223
|
+
| `medium` | CRITICAL + HIGH + MEDIUM | Strict security requirements |
|
|
224
|
+
| `low` | All issues | Maximum security (slowest) |
|
|
225
|
+
|
|
226
|
+
## Security Checks
|
|
227
|
+
|
|
228
|
+
CodeSlick CLI uses the same analysis engine as the GitHub App and WebTool.
|
|
229
|
+
|
|
230
|
+
### Coverage by Language
|
|
231
|
+
|
|
232
|
+
| Language | Security Checks | Key Detections |
|
|
233
|
+
|----------|-----------------|----------------|
|
|
234
|
+
| **JavaScript** | 28 checks | SQL injection, XSS, eval(), dangerous APIs |
|
|
235
|
+
| **TypeScript** | 56 checks | Type errors, property validation, AI code |
|
|
236
|
+
| **Python** | 47 checks | Django/Flask security, pickle, exec(), secrets |
|
|
237
|
+
| **Java** | 32 checks | Log4j, Spring Security, SQL injection, deserialization |
|
|
238
|
+
|
|
239
|
+
**Total**: 268 comprehensive security checks
|
|
240
|
+
|
|
241
|
+
### OWASP Top 10:2025 Compliance
|
|
242
|
+
|
|
243
|
+
CodeSlick CLI is 95% compliant with OWASP Top 10:2025:
|
|
244
|
+
|
|
245
|
+
- A01:2025 - Broken Access Control
|
|
246
|
+
- A02:2025 - Cryptographic Failures
|
|
247
|
+
- A03:2025 - Injection
|
|
248
|
+
- A04:2025 - Insecure Design
|
|
249
|
+
- A05:2025 - Security Misconfiguration
|
|
250
|
+
- A06:2025 - Vulnerable and Outdated Components
|
|
251
|
+
- A07:2025 - Identification and Authentication Failures
|
|
252
|
+
- A08:2025 - Software and Data Integrity Failures
|
|
253
|
+
- A09:2025 - Security Logging and Monitoring Failures
|
|
254
|
+
- A10:2025 - Server-Side Request Forgery (SSRF)
|
|
255
|
+
|
|
256
|
+
## CI/CD Integration
|
|
257
|
+
|
|
258
|
+
Use CodeSlick CLI in your CI/CD pipeline with JSON output mode.
|
|
259
|
+
|
|
260
|
+
### GitHub Actions
|
|
261
|
+
|
|
262
|
+
```yaml
|
|
263
|
+
name: Security Scan
|
|
264
|
+
on: [push, pull_request]
|
|
265
|
+
|
|
266
|
+
jobs:
|
|
267
|
+
codeslick:
|
|
268
|
+
runs-on: ubuntu-latest
|
|
269
|
+
steps:
|
|
270
|
+
- uses: actions/checkout@v3
|
|
271
|
+
- uses: actions/setup-node@v3
|
|
272
|
+
with:
|
|
273
|
+
node-version: 18
|
|
274
|
+
- run: npm install -g @codeslick/cli
|
|
275
|
+
- run: codeslick scan --json > results.json
|
|
276
|
+
- uses: actions/upload-artifact@v3
|
|
277
|
+
if: always()
|
|
278
|
+
with:
|
|
279
|
+
name: codeslick-results
|
|
280
|
+
path: results.json
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
### GitLab CI
|
|
284
|
+
|
|
285
|
+
```yaml
|
|
286
|
+
codeslick:
|
|
287
|
+
image: node:18
|
|
288
|
+
script:
|
|
289
|
+
- npm install -g @codeslick/cli
|
|
290
|
+
- codeslick scan --json > results.json
|
|
291
|
+
artifacts:
|
|
292
|
+
when: always
|
|
293
|
+
paths:
|
|
294
|
+
- results.json
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
### Jenkins
|
|
298
|
+
|
|
299
|
+
```groovy
|
|
300
|
+
pipeline {
|
|
301
|
+
agent any
|
|
302
|
+
stages {
|
|
303
|
+
stage('Security Scan') {
|
|
304
|
+
steps {
|
|
305
|
+
sh 'npm install -g @codeslick/cli'
|
|
306
|
+
sh 'codeslick scan --json > results.json'
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
post {
|
|
311
|
+
always {
|
|
312
|
+
archiveArtifacts artifacts: 'results.json'
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
## Skipping the Pre-commit Hook
|
|
319
|
+
|
|
320
|
+
If you need to commit without scanning (not recommended):
|
|
321
|
+
|
|
322
|
+
```bash
|
|
323
|
+
git commit --no-verify -m "Emergency hotfix"
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
Or temporarily disable:
|
|
327
|
+
|
|
328
|
+
```bash
|
|
329
|
+
rm .git/hooks/pre-commit
|
|
330
|
+
# Make your commits
|
|
331
|
+
codeslick init --force # Re-install hook
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
## Troubleshooting
|
|
335
|
+
|
|
336
|
+
### "Not a git repository" error
|
|
337
|
+
|
|
338
|
+
**Problem**: Running `codeslick init` in a non-git directory.
|
|
339
|
+
|
|
340
|
+
**Solution**: Initialize git first:
|
|
341
|
+
```bash
|
|
342
|
+
git init
|
|
343
|
+
codeslick init
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
### "No staged files found" error
|
|
347
|
+
|
|
348
|
+
**Problem**: Running `codeslick scan --staged` with no staged files.
|
|
349
|
+
|
|
350
|
+
**Solution**: Stage files first:
|
|
351
|
+
```bash
|
|
352
|
+
git add <files>
|
|
353
|
+
codeslick scan --staged
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
### Pre-commit hook not running
|
|
357
|
+
|
|
358
|
+
**Problem**: Hook installed but not executing.
|
|
359
|
+
|
|
360
|
+
**Solution**: Ensure hook is executable (Unix):
|
|
361
|
+
```bash
|
|
362
|
+
chmod +x .git/hooks/pre-commit
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
**Solution**: Re-install hook:
|
|
366
|
+
```bash
|
|
367
|
+
codeslick init --force
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
### "Command not found: codeslick" error
|
|
371
|
+
|
|
372
|
+
**Problem**: CLI not installed globally or not in PATH.
|
|
373
|
+
|
|
374
|
+
**Solution**: Install globally:
|
|
375
|
+
```bash
|
|
376
|
+
npm install -g @codeslick/cli
|
|
377
|
+
```
|
|
378
|
+
|
|
379
|
+
**Solution**: Use npx (no install required):
|
|
380
|
+
```bash
|
|
381
|
+
npx @codeslick/cli init
|
|
382
|
+
npx @codeslick/cli scan
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
### Slow scanning performance
|
|
386
|
+
|
|
387
|
+
**Problem**: Scanning takes >5s for small projects.
|
|
388
|
+
|
|
389
|
+
**Solution**: Exclude unnecessary directories:
|
|
390
|
+
```bash
|
|
391
|
+
codeslick config set exclude "node_modules/**,dist/**,coverage/**"
|
|
392
|
+
```
|
|
393
|
+
|
|
394
|
+
### Too many false positives
|
|
395
|
+
|
|
396
|
+
**Problem**: Legitimate code flagged as vulnerable.
|
|
397
|
+
|
|
398
|
+
**Solution**: Adjust severity threshold:
|
|
399
|
+
```bash
|
|
400
|
+
codeslick config set severity high # Only block HIGH+ issues
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
**Solution**: Exclude specific files:
|
|
404
|
+
```bash
|
|
405
|
+
codeslick config set exclude "test/**,migrations/**"
|
|
406
|
+
```
|
|
407
|
+
|
|
408
|
+
## Performance
|
|
409
|
+
|
|
410
|
+
Typical scan times on a 2020 MacBook Pro:
|
|
411
|
+
|
|
412
|
+
| Files | Languages | Time |
|
|
413
|
+
|-------|-----------|------|
|
|
414
|
+
| 10 | Mixed | <3s |
|
|
415
|
+
| 50 | Mixed | <10s |
|
|
416
|
+
| 100 | Mixed | <20s |
|
|
417
|
+
| 500 | Mixed | <60s |
|
|
418
|
+
|
|
419
|
+
## Comparison with Alternatives
|
|
420
|
+
|
|
421
|
+
| Tool | Local Scanning | Pre-commit Hook | Offline | Languages | OWASP 2025 |
|
|
422
|
+
|------|----------------|----------------|---------|-----------|------------|
|
|
423
|
+
| **CodeSlick CLI** | ✅ | ✅ | ✅ | 4 | 95% |
|
|
424
|
+
| Snyk CLI | ✅ | ✅ | ❌ (API required) | Many | Partial |
|
|
425
|
+
| SonarLint CLI | ✅ | ✅ | ✅ | Many | Partial |
|
|
426
|
+
| Semgrep | ✅ | ✅ | ✅ | Many | Partial |
|
|
427
|
+
| ESLint | ✅ | ✅ | ✅ | JS/TS only | No |
|
|
428
|
+
|
|
429
|
+
## Contributing
|
|
430
|
+
|
|
431
|
+
We welcome contributions! Please see [CONTRIBUTING.md](../../CONTRIBUTING.md) for guidelines.
|
|
432
|
+
|
|
433
|
+
## License
|
|
434
|
+
|
|
435
|
+
MIT License - see [LICENSE](../../LICENSE) for details.
|
|
436
|
+
|
|
437
|
+
## Support
|
|
438
|
+
|
|
439
|
+
- **Documentation**: https://codeslick.dev/docs/cli
|
|
440
|
+
- **Issues**: https://github.com/VitorLourenco/codeslick2/issues
|
|
441
|
+
- **Email**: support@codeslick.dev
|
|
442
|
+
|
|
443
|
+
## Roadmap
|
|
444
|
+
|
|
445
|
+
### v1.1 (Q2 2026)
|
|
446
|
+
- Auto-fix support (--fix flag)
|
|
447
|
+
- Custom rule configuration
|
|
448
|
+
- IDE integration (VS Code extension)
|
|
449
|
+
|
|
450
|
+
### v1.2 (Q3 2026)
|
|
451
|
+
- SBOM generation
|
|
452
|
+
- SARIF output format
|
|
453
|
+
- Team collaboration features
|
|
454
|
+
|
|
455
|
+
---
|
|
456
|
+
|
|
457
|
+
**Made with ❤️ by CodeSlick**
|
|
458
|
+
https://codeslick.dev
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI Reporter Tests
|
|
3
|
+
*
|
|
4
|
+
* Tests for terminal output formatting and display functions.
|
|
5
|
+
*
|
|
6
|
+
* Coverage:
|
|
7
|
+
* - Severity colors and symbols
|
|
8
|
+
* - Summary table generation
|
|
9
|
+
* - Detailed results display
|
|
10
|
+
* - JSON output format
|
|
11
|
+
* - Status messages (success, error, warning)
|
|
12
|
+
*/
|
|
13
|
+
|
|
14
|
+
import { describe, it, expect } from 'vitest';
|
|
15
|
+
import {
|
|
16
|
+
getSeverityColor,
|
|
17
|
+
getSeveritySymbol,
|
|
18
|
+
} from '../src/reporters/cli-reporter';
|
|
19
|
+
|
|
20
|
+
describe('CLI Reporter - Severity Formatting', () => {
|
|
21
|
+
describe('Severity Colors', () => {
|
|
22
|
+
it('should return red bold for CRITICAL', () => {
|
|
23
|
+
const colorFn = getSeverityColor('CRITICAL');
|
|
24
|
+
expect(typeof colorFn).toBe('function');
|
|
25
|
+
expect(colorFn('test')).toContain('test');
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
it('should return red for HIGH', () => {
|
|
29
|
+
const colorFn = getSeverityColor('HIGH');
|
|
30
|
+
expect(typeof colorFn).toBe('function');
|
|
31
|
+
expect(colorFn('test')).toContain('test');
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
it('should return yellow for MEDIUM', () => {
|
|
35
|
+
const colorFn = getSeverityColor('MEDIUM');
|
|
36
|
+
expect(typeof colorFn).toBe('function');
|
|
37
|
+
expect(colorFn('test')).toContain('test');
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
it('should return blue for LOW', () => {
|
|
41
|
+
const colorFn = getSeverityColor('LOW');
|
|
42
|
+
expect(typeof colorFn).toBe('function');
|
|
43
|
+
expect(colorFn('test')).toContain('test');
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
it('should return gray for unknown severity', () => {
|
|
47
|
+
const colorFn = getSeverityColor('UNKNOWN');
|
|
48
|
+
expect(typeof colorFn).toBe('function');
|
|
49
|
+
expect(colorFn('test')).toContain('test');
|
|
50
|
+
});
|
|
51
|
+
|
|
52
|
+
it('should be case-insensitive', () => {
|
|
53
|
+
const colorFn1 = getSeverityColor('critical');
|
|
54
|
+
const colorFn2 = getSeverityColor('CRITICAL');
|
|
55
|
+
expect(typeof colorFn1).toBe('function');
|
|
56
|
+
expect(typeof colorFn2).toBe('function');
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
describe('Severity Symbols', () => {
|
|
61
|
+
it('should return ✖ for CRITICAL', () => {
|
|
62
|
+
expect(getSeveritySymbol('CRITICAL')).toBe('✖');
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
it('should return ⚠ for HIGH', () => {
|
|
66
|
+
expect(getSeveritySymbol('HIGH')).toBe('⚠');
|
|
67
|
+
});
|
|
68
|
+
|
|
69
|
+
it('should return ◆ for MEDIUM', () => {
|
|
70
|
+
expect(getSeveritySymbol('MEDIUM')).toBe('◆');
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
it('should return ○ for LOW', () => {
|
|
74
|
+
expect(getSeveritySymbol('LOW')).toBe('○');
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
it('should return · for unknown severity', () => {
|
|
78
|
+
expect(getSeveritySymbol('UNKNOWN')).toBe('·');
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
it('should be case-insensitive', () => {
|
|
82
|
+
expect(getSeveritySymbol('critical')).toBe('✖');
|
|
83
|
+
expect(getSeveritySymbol('CRITICAL')).toBe('✖');
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
});
|