gpt4 book ai didi

python - 如何确保在编辑代码样式/空格时不改变逻辑?

转载 作者:太空宇宙 更新时间:2023-11-04 03:36:53 26 4
gpt4 key购买 nike

当对 Python 脚本进行表面更改(例如,更改代码样式/格式/空格)时,能够检查是否(意外地)对代码进行了任何逻辑更改是很有用的。

对于 C/C++,我生成汇编程序并对其进行差异化处理(对于平台特定的 ifdef's 并非 100% 万无一失,但仍然有用)。虽然我可以对 pyc 文件进行二进制比较,但这对查看到底发生了什么变化没有太大帮助。

有没有一种方便的方法来获取一些可以检查更改的 AST 的人类可读文本输出?

这当然可能会引发一些误报(例如,将 str % bar 替换为 str.format(bar)),但我仍然很想知道是否存在一些方便的方法。


背景信息

因为建议只运行测试。这是我为什么问这个问题的一些背景。这段代码没有测试,而且它不太可能有 100% 的测试覆盖率,因为它恰好是构建系统实用程序脚本。理论上,我们可以花时间添加测试套件并找到使测试能够在不同平台上运行的方法(猴子补丁 sys.platform 或在 VM 中的所有支持平台上运行持续集成...... ) 但我们目前根本无法证明花费这种努力是合理的。

此外,您可能想要清理测试代码本身!

最佳答案

解析 AST 以检查逻辑差异是个好主意。 Python 使用 its AST难以置信的简单。

import ast

original_ast = ast.parse("""
import sys
for a in range(0,10):
print(a)
sys.exit(0)""")

altered_ast = ast.parse("""
import sys
for a in range(0,10):
print(a + 1)
sys.exit(0)""")

ast.dump(original_ast) == ast.dump(altered_ast)

如果您想查看差异,Python 有另一个 built in diff library .

关于python - 如何确保在编辑代码样式/空格时不改变逻辑?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28596003/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com