Nox-Lumen AutoNox-Lumen Auto

Python 静态分析

Python 栈的 L1 静态分析由 4 个 skill 协同,覆盖安全、风格、类型、SAST 四个维度。

Skill维度一句话描述
bandit安全Python 安全漏洞扫描(SQL 注入 / 命令注入 / 硬编码密钥 / 不安全函数)
ruff风格 + 复合Python 极速 lint(替代 Flake8/Pylint/isort/Black,900+ 规则,Rust 编写)
mypy类型Python 类型检查(类型不匹配 / 缺失注解 / 不兼容赋值,PEP 484 参考实现)
semgrepSAST跨语言 SAST(SQL 注入 / XSS / 密钥泄露 / taint tracking,Python 也覆盖)

bandit

用途:Python 专用安全漏洞扫描器。

检测类型示例
SQL 注入字符串拼接构造 SQL
命令注入subprocess(shell=True)
硬编码密钥代码中的 api_key = "sk-..."
不安全函数pickle.loads / eval / yaml.load 无安全参数
弱加密MD5/SHA1 用于密码

触发:"Python 安全扫描"、"bandit 检查"、"有没有 SQL 注入风险"

ruff

用途:Python 生态最快的 lint(Rust 实现),几乎取代 Flake8 + Pylint + isort + Black。

  • 900+ 规则
  • 秒级扫描大型项目
  • 规则分组可配置:E(pycodestyle errors)/ W(warnings)/ F(pyflakes)/ I(isort)/ N(naming)等
  • 可替代 black 做格式化

触发:"Python lint"、"代码风格检查"、"ruff 跑一下"

mypy

用途PEP 484 参考实现的 Python 静态类型检查器。

检测项示例
类型不匹配def f(x: int) -> str: return x
缺失注解函数参数 / 返回值无类型
不兼容赋值a: list[int] = ["x"]
Optional 忽略Optional[T] 不做 None check

触发:"Python 类型检查"、"mypy 报错"、"类型不一致"

semgrep

用途:跨语言(不止 Python)语义级 SAST 扫描,支持自定义 YAML 规则

检测类型说明
SQL 注入 / XSS常见 OWASP
密钥泄露硬编码凭据
Taint tracking跟踪不可信输入到危险 sink
自定义规则企业特有安全规则

与 bandit 的区别:bandit 聚焦 Python 特定模式;semgrep 是规则可编程的语义引擎,覆盖 Python/Java/JS/Go/Ruby 等多语言。

触发:"SAST 扫描"、"写一条自定义规则"、"跨语言安全检查"

组合使用建议

ruff      → 基础门槛(必跑)
mypy      → 类型修复(必跑)
bandit    → 安全门禁(必跑)
semgrep   → 定制规则 / 跨语言项目(按需)

L1 扫描完 → 输出 CodeEvidence → 交给 code-review 做 L2 语义评审。

On this page