Skip to content

快速开始

扫描目录

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-rules

CI 集成

当发现达到 --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"

详见配置文件页面。