# be somewhere in your project directory
# see the diff with pep, see the changes you've made since master
pep8radius master --diff
# make those changes
pep8radius master --diff --in-place
或者清除自上次提交以来提交的新行:
pep8radius --diff
pep8radius --diff --in-place
# the lines which changed since a specific commit `git diff 98f51f`
pep8radius 98f51f --diff
@Andy Hayden对autopep8做了很好的概述。除此之外,还有一个名为pep8ify的包也做同样的事情。
但是,这两个包只能删除lint错误,但不能格式化代码。
上面的代码在pep8ify之后也保持不变。但代码看起来还不太好。您可以使用像yapf这样的格式化程序,它将格式化代码,即使代码符合PEP8。 以上代码将被格式化为
有时这甚至会破坏您的手动格式。例如
将转换为
但是你可以告诉它忽略一些部分。
摘自我以前的博客:Automatically PEP8 & Format Your Python Code!
你可以用autopep8!当你为自己煮一杯咖啡时,这个工具会很高兴地移除所有那些讨厌的PEP8违规行为,这些行为不会改变代码的含义。
通过pip安装:
将此应用于特定文件:
或者对于您的项目(递归地),verbose选项会给您一些关于项目进展的反馈:
注意:有时默认的100次传递是不够的,我将其设置为2000次,因为它相当高,将捕获所有文件,但最麻烦的文件除外(一旦发现没有可解决的pep8违规,它将停止传递)。。。
在这一点上,我建议重新测试和做一个承诺!
如果您想“full”PEP8合规性:我使用的一种策略是如上所述运行autopep8,然后运行PEP8,它将打印剩余的违规行为(文件、行号和什么):
并分别手动更改(例如E712s-与布尔值比较)。
注意:autopep8提供了一个
--aggressive
参数(无情地“修复”这些含义改变的违规行为),但要注意,如果您确实使用攻击性的,则可能需要调试。。。(例如,在numpy/熊猫中,True == np.bool_(True)
但不是True is np.bool_(True)
!)您可以检查每种类型(之前和之后)的违规次数:
注意:我认为E501s(行太长)是一个特殊情况,因为在您的代码中可能会有很多这样的代码,有时这些代码不会被autopep8更正。
作为一个例子,我对pandas代码库使用applied this技术。
不幸的是,“pep8风暴”(整个项目)有几个负面影响:
作为另一种选择(多亏了@y-p for the idea),我编写了一个小包,它只自动部署自上次提交/分支以来您一直在处理的那些行:
基本上只剩下一点better than you found it:
假设您已经完成了
master
的工作并准备提交:或者清除自上次提交以来提交的新行:
基本上^{} 是对git/hg diff(来自the last shared commit)输出中的行应用autopep8。
这个脚本目前与git和hg一起工作,如果您使用了其他东西,并且希望它工作please post a comment/issue/PR!
相关问题 更多 >
编程相关推荐