OpenStack黑客准则实施

hacking的Python项目详细描述


简介:hacking是一组flake8插件,用于测试和执行:ref:`styleguide`.


hacking锁定其依赖项,因为一些依赖项的新版本可能会中断基于hacking的选通作业。这是因为新版本的依赖项可以引入新规则,或使现有规则更加严格。


安装
==




``黑客攻击``,
``pep8`,``mccabe``和``pyflakes``插件。


origin
==


hacking在nova的第一次提交中以文本文件的形式开始了它的生命。它最初基于"google python风格指南",随着时间的推移,添加了更多特定于openstack的规则。黑客攻击有几个目的:

1。就共同的风格指南达成一致,这样评论就不会陷入风格的泥潭。(例如:docstring指南)
2.通过使
样式更加统一,使许多不同作者编写的代码更易于阅读。(例如:Unix与Windows换行)
3.说出危险的模式并避免它们。(例如:隐藏内置
或保留字)

_` google python style guide`:https://google.github.io/styleguide/pyguide.html


这样,项目就可以在接受维护更新时锁定"major.minor"编号,从而启动黑客攻击,而不必担心新版本将通过新的检查来打开大门。例如,项目可以依赖于"hacking"=0.10.0,<;0.11.0`,并且可以知道w
在"0.10.0"通过的地方,"0.10.1"不会失败。




添加附加检查
=======


每个检查都是一个pep8插件,请阅读

-https://github.com/jcrocholl/pep8/blob/master/docs/developer.rst更改后的规则应执行以下操作之一

-大幅提高代码的可审查性(例如:h301、h303)
,因为它们使人们易于理解符号的来源)
-捕获将来可能出现的常见编程错误(h201)
-防止出现这种情况这将100%的时间由
developers(h903)


开发,但是,一如既往,记住这些是指导原则。把他们当作这样。总有例外的时候。所有新规则都应支持noqa。

我们不想指定
样式,只想强制执行它。
-openstack样式指南的规范源是:ref:`styleguide`,
而hacking只会强制执行它们;所以当添加新的检查时,它必须在``hacking.rst`
-假阴性是可以的,但假阳性不是可以的。
-不能是特定于项目的,特定于项目的检查应为"本地检查"
-包括广泛的测试
-注册为"setup.cfg"中的入口点
-错误代码必须在相关的"hxxx"组中
-检查不应尝试从正在检查的代码导入模块d.
导入随机模块,在过去给我们带来了各种麻烦。




这些检查是:

-[h106]不要将vim配置放在源文件中。
-[h203]使用assert(not)none检查none。
-[h204]使用assert(not)equal检查equality。
-[h205]使用assert(greater less)(equal)进行比较。
-[h210]要求在
mock.patch/mock.patch.object调用中使用"autospec"、"spec"或"spec"seterpolations at logging calls.

要启用这些检查,请编辑"tox.ini"文件的"flake8"部分。
例如,要启用h106和h203:

代码块:ini

[flake8]
enable extensions=h106,h203


local checks
==


hacking支持在源树中进行本地更改。它们可以配置为以两种不同的方式运行。它们可以单独注册,也可以使用工厂函数进行注册。


对于单独注册,请在tox.ini的hacking部分中放置一个以逗号分隔的pep8兼容的检查函数列表。例如:

…代码块::ini

[hacking]
local check=nova.tests.hacking.bad_code_is_可怕

如果想要
注册,可调用的
应该期望对所有内容调用传入函数。例如:

…代码块:ini

[黑客攻击]
本地检查工厂=nova.tests.hacking.factory





欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
使用applets查询的多人java游戏?   java如何基于字符串生成数组   基于java多边形的路径查找   java如何对多列ArrayList排序   java批处理更新从更新中返回了意外的行数(Spring/Hibernate)   java如何使用SeleniumWebDriver列出<tr>标记内的所有<td>   java如何使用SimpleFlatMapper将前缀为CSV的列别名到映射?   java为什么通过eclipse运行/调试TomCat时会出现ClassNotFoundException   java Android滚动视图上次视图未显示内部线性布局   替换字符串中不带空格的字符序列   调用方法时Java Swing GUI冻结   java是否允许/建议重用收集器?   在同步方法中使用java hashmap迭代器时   在java XMLDecoder XMLEncoder中写入XMLdatabase   java I无法在活动的片段中填充recyclerview   java Jitsi在调用过程中播放WAV文件如果可能,与音频混合   java JPA为什么我看到DB中每行有两个实体实例?