快速开始
扫描目录
bash
# 扫描当前目录
codescan .
# 扫描指定目录
codescan src/
# 扫描多个路径
codescan src/ tests/ scripts/示例输出
error[SECRET001]: Hardcoded password
--> src/db/connection.py:14:12
|
14 | password = "hunter2"
| ^^^^^^^^^
= help: Use environment variables or a secrets manager instead
warning[CRYPTO001]: Weak hashing algorithm
--> src/auth/hash.py:8:5
|
8 | hashlib.md5(data).hexdigest()
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= help: Use SHA-256 or better
found 1 error, 1 warning, 0 notes常用选项
按严重性过滤
bash
# 仅显示错误
codescan --severity error .
# 显示警告及以上
codescan --severity warning .排除路径
bash
codescan --exclude "tests/**" --exclude "vendor/**" .仅检查指定规则
bash
codescan --only-rules SECRET001,SECRET002,CRYPTO001 .跳过指定规则
bash
codescan --skip-rules INFRA004 .输出格式
bash
# Pretty(交互模式默认)
codescan --format pretty .
# JSON(每行一个对象)
codescan --format json . > findings.jsonl
# 纯文本(CI/管道默认)
codescan --format text .显示被抑制的发现
bash
codescan --show-suppressed .列出所有规则
bash
codescan --list-rulesCI 集成
当发现达到 --fail-on 阈值(默认:error)时,codescan 以退出码 1 退出。
yaml
# GitHub Actions 示例
- name: 安全扫描
run: codescan --format text --fail-on error src/bash
# 警告也触发失败
codescan --fail-on warning src/
# 从不失败(审计模式)
codescan --fail-on none src/使用配置文件
在项目根目录创建 codescan.toml:
toml
[scanner]
max_file_size = 524288 # 512 KB
[exclude]
paths = ["vendor", "node_modules", "dist", ".git"]
extensions = ["min.js", "lock"]
[rules]
disabled = ["INFRA004"]
[rules.severity_overrides]
SECRET001 = "error"
CRYPTO001 = "warning"详见配置文件页面。