让 Claude 检查 Python 代码规范:用 AST 找出星号导入,并保留准确行号

Claude 检查代码规范时,先给项目已有规则。对于“不允许星号导入”这样的确定规则,可以用 AST 找到实际语法节点,再让模型解释原因,减少按字符串误报注释的情况。

Claude 检查代码规范时,先给项目已有规则。对于“不允许星号导入”这样的确定规则,可以用 AST 找到实际语法节点,再让模型解释原因,减少按字符串误报注释的情况。

希望让Claude按项目规范审查代码的开发者。本文使用 Python 3.11 或以上版本的标准库,先验证一组人工构造的小样本。AI 负责提出实现或解释差异,结果由本地检查决定;这里没有把模型回答当成真实运行结果。

让 Claude 检查 Python 代码规范:用 AST 找出星号导入,并保留准确行号

检查星号导入是否违反项目约定前,先定规则

规范不是模型偏好。本例明确只禁止from module import *,不把任何普通import都列成问题,也不自动改写导入列表。

按字符串搜索会把注释或字符串中的同样文字也算成违规。AST只检查ImportFrom节点,并保存lineno供读者回到源码。

源码必须能解析;SyntaxError是独立失败,不应当成“没有违规”。规范检查通过也不证明模块真的可以导入或运行。

给 AI 的输入要包含什么

把下面这份输入说明和你的实际样本一起交给可用的 AI 编程助手。示例只含虚构数据;对真实材料先去除账号凭据和个人信息。

Claude,请按本项目规则审查:禁止from ... import *。解释发现的位置,不改代码。实现标准库AST扫描,忽略注释和字符串,同步返回module和lineno。语法错误应明确失败。

要求模型保留检查条件,并把它认为缺少的业务定义列出来。若回答改变了输入字段、忽略异常分支或直接删除原材料,先要求修正,再运行。提示词的作用是缩小任务范围,验收仍以代码和数据为准。

保存并运行最小验证程序

下方程序把关键规则和验证用例放在同一个可复跑示例中,便于先理解输入如何变成输出,再用它检查 AI 给出的实现。

新建一个空目录,把下面代码保存为 check.py,在该目录打开终端,运行 python -X utf8 check.py。代码自带示例输入,不需要安装第三方库。

import ast
source="""# from fake import *
note = 'from text import *'
from math import *
from collections import Counter
"""
tree=ast.parse(source)
issues=[]
for node in ast.walk(tree):
    if isinstance(node,ast.ImportFrom) and any(a.name=='*' for a in node.names):
        issues.append({'line':node.lineno,'module':node.module})
assert issues==[{'line':3,'module':'math'}]
print(issues)
try: ast.parse('def broken(:')
except SyntaxError: print('syntax_error_separate',True)
else: raise AssertionError('应报告语法错误')

怎样判断结果符合要求

只报告第3行math星号导入,第1行注释和第2行字符串不报告。无效语法应走SyntaxError分支。

下方是这份最小示例在本地执行得到的输出。它验证示例程序与断言的关系,不代表任何 AI 模型一次就能生成同样代码,也不构成性能或生产可靠性结论。

[{'line': 3, 'module': 'math'}]
syntax_error_separate True

不能简单把星号改为所有公开名字:模块导出规则与实际使用对象需另查。先确认源码使用哪些符号,再做最小改动。

AST行号以提供的源码为准,若把多个文件拼接后扫描,行号会失真,必须按文件保存结果。

哪些失败必须停下来处理

项目可能允许__init__.py中的特定重导出,应把例外写成明确路径与模块规则。

AST不检查动态导入、运行时属性或第三方类型。它只解决这里的确定规范。

接入自己的任务前再核对一次

把违规报告交给Claude解释或提议补丁,再审查diff和原测试。

使用项目原有规范工具时复用其规则,本例作为理解静态检查与减少误报的小型补充。

资料与适用范围

ast.parse生成语法树,ImportFrom节点包含模块、导入名与源码行号。以下链接核对于 2026-10-03;运行环境及额外依赖按本文前述说明。

相关基础可阅读 AI 生成的 Python 代码怎么检查?用 Ruff 找出静态问题。本文的重点是检查星号导入是否违反项目约定,可以把两项检查作为不同步骤保留。

Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/33349.html

赞 (0)
AI小管家的头像AI小管家
AI 写的代码注释怎样核对?用 doctest 检查文档里的输入输出例子
上一篇 3小时前
AI 代码优化建议从哪里开始?用 cProfile 找到耗时函数,再保留结果对照
下一篇 3小时前

相关推荐

联系我们

联系我们

1

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
关注微信
分享本页
返回顶部