如何工作
要求 AI 使用 PyCourt 审计自己生成的代码
并按照审计报告进行整改和修复。
生产级质量体系
从真实项目迭代中提炼、确保系统长期可维护性与健壮性的生产级规范。
禁止依赖any、未知dict和cast,以避免将核心数据流转变为静态检查无法保护的未类型化的“鸭子类型”迷雾。
禁止在HTTP/适配器边界上使用原始或容器类型,以避免在系统边缘泄露内部模型,而不是显式DTO/契约类型。
禁止绕过核心抽象的跨组件导入,以避免破坏依赖倒置并紧密耦合模块到彼此的实现。
禁止直接使用 datetime.now() / utcnow(),以避免隐藏的时间漂移和在单一 TimeProvider 之外不可测试的时间相关逻辑。
禁止公共函数和类缺少清晰、非平凡的文档字符串,以避免意图和契约无法被审查的不透明API。
禁止在常量模块之外使用硬编码的业务字面量和魔法数字,以避免在分散的代码中隐藏配置和跨引擎契约。
禁止函数长度或循环复杂度超过约定阈值,以避免过程过大且纠缠而无法安全推理。
禁止在核心代码中使用裸对象作为类型,以避免“灰色迷雾”值没有契约,其中不变量和能力无法强制执行。
禁止将业务可调整规则视为核心常量,并绕过RuleProvider直接访问规则文件,以避免将操作控制与技术常量混淆。
禁止在 `__init__.py` 文件中包含逻辑的导出技巧,以避免包外观退化为第二个隐藏的实现模块。
禁止直接通过I/O读取assets/skills,以避免将业务代码与物理技能布局耦合,而不是使用中央SkillId注册表和提供者。
禁止任何使用 if TYPE_CHECKING: 的结构,以避免隐藏循环依赖关系,这些依赖关系在“仅类型”导入中仍然纠缠模块。
禁止导入重I/O堆栈的单元测试,将SQLAlchemy偷偷带入白名单之外,以避免缓慢、脆弱和虚假覆盖的测试。
禁止在仓库中使用commit() / rollback() 调用,以避免违反工作单元的原子性并泄露事务控制。
禁止触发路由不支持的向量和实体事件,以避免发出向量服务在运行时无法实际履行的事件。
精心设计的审计策略
为三种不同开发场景提供精心设计的审计策略
定制你的法庭
定义法律和审判程序,为项目量身定制质量治理体系。
你的项目法典
根据你的项目架构给予战略豁免
- 启用或禁用某条法律。
- 调整法律阈值和选项。
- 为特别文件声明豁免。
- 运行
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 仓库