PythonCourt logo

PythonCourt

基于 AST 分析和 Rule 系统的 Python 代码审计引擎
确保AI生成的代码符合生产级质量标准。

pip install pycourt
将 PyCourt 安装到你的 Python 项目环境中。

如何工作

要求 AI 使用 PyCourt 审计自己生成的代码
并按照审计报告进行整改和修复。

查看文档

生产级质量体系

从真实项目迭代中提炼、确保系统长期可维护性与健壮性的生产级规范。

AC001
- 鸭子类型 -

禁止依赖any、未知dict和cast,以避免将核心数据流转变为静态检查无法保护的未类型化的“鸭子类型”迷雾。

BC001
- 边境管理 -

禁止在HTTP/适配器边界上使用原始或容器类型,以避免在系统边缘泄露内部模型,而不是显式DTO/契约类型。

DI001
- 依赖倒置 -

禁止绕过核心抽象的跨组件导入,以避免破坏依赖倒置并紧密耦合模块到彼此的实现。

DT001
- 时间漂移 -

禁止直接使用 datetime.now() / utcnow(),以避免隐藏的时间漂移和在单一 TimeProvider 之外不可测试的时间相关逻辑。

DS001
- 文档字符串 -

禁止公共函数和类缺少清晰、非平凡的文档字符串,以避免意图和契约无法被审查的不透明API。

HC001
- 硬编码 -

禁止在常量模块之外使用硬编码的业务字面量和魔法数字,以避免在分散的代码中隐藏配置和跨引擎契约。

LL001
- 过度复杂 -

禁止函数长度或循环复杂度超过约定阈值,以避免过程过大且纠缠而无法安全推理。

OU001
- 裸对象类型 -

禁止在核心代码中使用裸对象作为类型,以避免“灰色迷雾”值没有契约,其中不变量和能力无法强制执行。

PC001
- 参数分类 -

禁止将业务可调整规则视为核心常量,并绕过RuleProvider直接访问规则文件,以避免将操作控制与技术常量混淆。

RE001
- 聚合导出 -

禁止在 `__init__.py` 文件中包含逻辑的导出技巧,以避免包外观退化为第二个隐藏的实现模块。

SK001
- 技能提供者 -

禁止直接通过I/O读取assets/skills,以避免将业务代码与物理技能布局耦合,而不是使用中央SkillId注册表和提供者。

TC001
- 内部盘查 -

禁止任何使用 if TYPE_CHECKING: 的结构,以避免隐藏循环依赖关系,这些依赖关系在“仅类型”导入中仍然纠缠模块。

TP001
- 测试代码 -

禁止导入重I/O堆栈的单元测试,将SQLAlchemy偷偷带入白名单之外,以避免缓慢、脆弱和虚假覆盖的测试。

UW001
- 工作单元 -

禁止在仓库中使用commit() / rollback() 调用,以避免违反工作单元的原子性并泄露事务控制。

VT001
- 向量触发器 -

禁止触发路由不支持的向量和实体事件,以避免发出向量服务在运行时无法实际履行的事件。

精心设计的审计策略

为三种不同开发场景提供精心设计的审计策略

定制你的法庭

定义法律和审判程序,为项目量身定制质量治理体系。

你的项目法典

根据你的项目架构给予战略豁免

  • 启用或禁用某条法律。
  • 调整法律阈值和选项。
  • 为特别文件声明豁免。
  • 运行 pycourt init 生成并手动编辑它
# pycourt.yaml
laws:
  ll001:
    enabled: true
    max_function_lines: 50

exemptions:
  DI001:
    files:
      - "src/di/**" # 组合根不适用 DI001

你项目的质量主权

声明生产代码的疆域,并接受 PyCourt 完整审查。

  • 根据架构层次和依赖方向绘制你的文明领土。
  • 将散乱组件映射到文明路径(并注释掉它们)。
  • 使用单一的真实来源作为覆盖阈值。
  • 取消路径的注释开始对该层进行审计。
  • 没有注释意味着你获得了一个纯净的组件。
  • 现在,自信地进行PR。
# pyproject.toml
[tool.pycourt]
# 跨域组件和模块审计集成。
civilized_paths = [
    "src/api",      # 文明
    "src/business", # 文明
    "src/services", # 文明
    "src/infra",    # 文明
    "src/core",     # 文明
    # "tools",    # 不参与本次 CI 运行
]
# 单一真实来源的覆盖阈值(%)
coverage = 85

社区 & 讨论

“停止独自挣扎,开始共同进步“。

作为一名始用AI编程的代码新手,我一直在与代码质量作斗争。

我创建了PyCourt——一个扭转局势的方法。

如果你曾经有过同样的困惑,欢迎加入 PythonCourt 社区。

使用并反馈

尝试在你的项目中使用 PyCourt,并分享你的使用体验。

我将非常感激你教会我更多。

设计与发布

改善或设计全新的法典或者武器

发布你的作品,让它造福他人。

讨论与规划

提出新的法律、武器或人工智能工作流程。

让我们讨论如何快速实现高质量成长。

准备好组队了吗?

在这里开始试用、设计武器或则加入我们:
PythonCourt 组织 pycourt 仓库