OpenStack黑客指南实施
项目描述
简介
hacking是一组flake8插件,用于测试和实施OpenStack风格指南
Hacking固定其依赖项,因为某些依赖项的新版本可能会破坏基于hacking的网关作业。这是因为依赖项的新版本可能会引入新规则,或者使现有规则更严格。
安装
hacking可在pypi上获得,因此只需运行
pip install hacking
这将安装带有
起源
Hacking最初是Nova的第一个提交中的文本文件。它最初基于Google Python风格指南,并且随着时间的推移,添加了更多OpenStack特定规则。Hacking具有多个用途
达成一致的风格指南,以便审查不会因风格上的细节而陷入困境。(例如:文档字符串指南)
通过使样式更统一,使由许多不同作者编写的代码更容易阅读。(例如:Unix与Windows换行符)
指出危险的模式并避免它们。(例如:覆盖内置或保留字)
最初,黑客风格指南是由审查员手动执行的,但这浪费了大量的时间,因此产生了黑客工具,以自动化流程并减轻人类审查员的工作负担。
版本控制
hacking使用major.minor.maintenance发布符号,其中维护版本不能包含新检查。这样,项目可以通过锁定major.minor数字来控制hacking,同时接受维护更新,而不用担心新版本会因为新的检查而破坏控制。
例如,一个项目可以依赖于hacking>=0.10.0,<0.11.0,并且可以知道0.10.1不会在0.10.0通过的地方失败。
添加额外的检查
每个检查都是一个pep8插件,请阅读
新规则或更改的规则应专注于以下之一
显著提高代码的可审查性(例如:H301,H303),因为它们使理解符号来源变得容易)
捕获未来可能出现的常见编程错误(H201)
防止100%会被开发者拒绝的情况(H903)
但是,就像往常一样,请记住,这些都是指南。把它们当作指南来对待。总有例外的时候。所有新规则都应该支持noqa。
如果需要分阶段添加检查,或者它们不适用于每个项目或其分支,则可以默认关闭这些检查。
要求
启用默认关闭的检查
一些可用的检查默认是禁用的。这些检查是
[H106] 不要在源文件中放置vim配置。
[H203] 使用assertIs(Not)None来检查None。
[H204] 使用assert(Not)Equal来检查相等。
[H205] 使用assert(Greater|Less)(Equal)进行比较。
[H210] 在mock.patch/mock.patch.object调用中要求‘autospec’,‘spec’或‘spec_set’
[H904] 在日志调用中延迟字符串插值。
要启用这些检查,请编辑tox.ini文件中的flake8部分。例如,要启用H106和H203
[flake8]
enable-extensions = H106,H203
本地检查
hacking支持在源树中有本地更改。它们需要在tox.ini中单独注册。
在tox.ini中添加一个新的部分flake8:local-plugins,并列出每个插件及其entry-point。此外,您还可以添加包含插件的文件的路径,这样就不需要用paths指令安装存储库。
[flake8:local-plugins]
extension =
N307 = checks:import_no_db_in_virt
N325 = checks:CheckForStrUnicodeExc
paths =
./nova/hacking
例如,在上面的例子中,插件位于nova/hacking/checks.py中,需要用@core.flake8ext注释所有函数。
from hacking import core
...
@core.flake8ext
def import_no_db_in_virt(logical_line, filename):
...
class CheckForStrUnicodeExc(BaseASTChecker):
name = "check_for_str_unicode_exc"
version = "1.0"
...
更多详细信息请参阅 flake8 文档。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源代码发行版
构建发行版
hacking-7.0.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b9b6c2e5280f7d54fa82c58fe09983f68c5b6f634ac3fa339f8ba16a5715cab7 |
|
MD5 | 2e6976e60d286f7df6d43fa9cc3abfc8 |
|
BLAKE2b-256 | f719cf7a61cb63288c226bf2fa012ddcda51e4baad3039dbb4fc4b4e1a2b8e16 |
hacking-7.0.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 4a5f5a1ef1c03e7ee244eb2d296181a5e07d1f3d64f706cf2c9a9542fa1f256d |
|
MD5 | 7d3ed2859066d1a654da6c13af1d820f |
|
BLAKE2b-256 | 32139a50cf96a212c760c11e65541bd32fcdc7c6648a9a18d186f02d65adafd0 |