| 语言 | 扩展名 | 解析器 | 内置规则 |
|---|---|---|---|
| Python | .py, .pyw, .pyi, .pyx | 是 | 是 |
| JavaScript | .js, .mjs, .cjs, .jsx, .vue, .svelte | 是 | 是 |
| TypeScript / TSX | .ts, .tsx, .mts, .cts | 是 | 是(JS规则) |
| Java | .java | 是 | 是 |
| PHP | .php, .phtml | 是 | 是 |
| C# | .cs, .csx | 是 | 是 |
| Go | .go | 是 | 是 |
| Ruby | .rb | 是 | 是 |
| HTML | .html, .htm, .twig, .ejs, .hbs, ... | 是 | 是 |
| Django模板 | .html(Django语法) | 是 | 是(HTML规则) |
当前不支持:Razor(.cshtml),C/C++(.c, .h)。
先决条件:
从源码构建:
git clone https://github.com/Corgea/Sighthound.git
cd Sighthound
cargo build --release
二进制路径:target/release/sighthound
兼容Linux容器的发布导出:
DOCKER_BUILDKIT=1 docker build \
--target export \
--output type=local,dest=./sighthound_release \
.
或者运行 ./build_all_platforms.sh。
# 自动检测语言并运行内置规则
cargo run --bin sighthound -- /path/to/project
# 指定语言 + 自定义规则路径
cargo run --bin sighthound -- /path/to/project python rules/python
# 仅进行污点分析并输出JSON
cargo run --bin sighthound -- --taint-analysis --output-format json /path/to/project > findings.json
# SARIF输出,用于GitHub代码扫描
cargo run --bin sighthound -- --output-format sarif /path/to/project > results.sarif
CLI形式:
sighthound [OPTIONS] <ROOT_DIR> [LANGUAGE] [RULES_PATH]
运行 sighthound --help 查看完整选项列表。
sarif 输出格式生成SARIF 2.1.0,GitHub代码扫描可直接读取。从工作流上传,以便发现结果内联显示在拉取请求和仓库的“安全”选项卡中:
从仓库根目录运行扫描,并使用 .(或仓库根目录的绝对路径)作为 <ROOT_DIR>,以保持SARIF工件URI相对于仓库。
- name: Run Sighthound
run: sighthound --output-format sarif . > results.sarif
- name: Upload SARIF
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: results.sarif
规则以RON格式编写,支持:
mode: "search" 用于模式匹配mode: "taint" 用于源/汇/消毒器分析从以下位置开始:
核心命令:
make check # 修复 + 格式化 + 检查 + 测试 + 抑制报告
make pre-commit # 暂存的Rust文件(钩子)
make pre-push # 推送门控检查
make ci # 严格CI流水线
额外的质量门控:
make complexity
make audit
make acceptance
cargo harness coverage --min=0
cargo harness crap --max=30