Hacking Checks¶
neutron_lib.hacking 包实现了许多公共的 flake8 检查,旨在帮助使用者验证其是否符合最新的 hacking 标准。
采用 neutron-lib 的 hacking 检查
更新您项目的
tox.ini文件,以包含来自 neutron-lib 的 hacking 检查。更具体地说,将 neutron-libtox.ini文件中“Checks for neutron and related projects”下的 hacking 检查复制到您项目tox.ini文件中的[flake8.local-plugin] extension部分。例如,在您的
tox.ini文件中:[flake8:local-plugins] extension = # Checks from neutron-lib N521 = neutron_lib.hacking.checks:use_jsonutils N524 = neutron_lib.hacking.checks:check_no_contextlib_nested N529 = neutron_lib.hacking.checks:no_mutable_default_args N530 = neutron_lib.hacking.checks:check_neutron_namespace_imports N532 = neutron_lib.hacking.translation_checks:check_log_warn_deprecated N534 = neutron_lib.hacking.translation_checks:check_raised_localized_exceptions N536 = neutron_lib.hacking.checks:assert_equal_none N537 = neutron_lib.hacking.translation_checks:no_translate_logs
在某些情况下,使用者可能需要暂时忽略特定的 neutron-lib hacking 检查。您可以通过注释掉这些检查来忽略它们(并附上合理的理由)。
如果您的项目有自己的 hacking 检查,您可以将更多的规则添加到
[flake8.local-plugin] extension部分,同时包含来自 neutron-lib 的 hacking 检查。注意
上述配置假设使用的是 hacking 2.x。如果您的项目使用 hacking 1.x,请参阅下文的 Hacking 1.x support。
更新您项目的
tox.ini文件,以启用 neutron-lib 的tox.ini文件中启用的任何 flake8 扩展。这些是默认禁用的 hacking 检查,而 neutron-lib 期望运行它们。例如,在 neutron-lib 的
tox.ini文件中:[flake8] # H904: Delay string interpolations at logging calls enable-extensions=H904
在上面的示例中,使用者还应该在他们的
tox.ini文件中的enable-extensions部分添加H904。积极采用 neutron-lib 的 hacking 检查,方法是运行并监控 neutron-lib 的 定期作业(遵循 stadium 指南)并关注公告。关于 neutron-lib 采用者 hacking 检查的公告将通过 openstack-discuss 邮件列表和 neutron 会议 进行沟通。
Hacking 1.x support¶
如果您的项目使用 hacking 1.x,您需要一种不同的方式来使用 neutron-lib 的 hacking 检查。
警告
hacking 1.x 支持已弃用,一旦所有与 neutron 相关的项目迁移到 hacking 2.x,将不再支持。
更新您项目的 tox.ini 文件,为其 local-check-factory 使用 neutron_lib.hacking.checks.factory。
例如,在您的 tox.ini 文件中:
[hacking]
local-check-factory = neutron_lib.hacking.checks.factory
如果您的项目需要注册额外的项目特定 hacking 检查,您可以定义自己的工厂函数,该函数会调用 neutron-lib 的 factory 函数。
例如,在您的项目的 Python 源代码中:
def my_factory(register):
# register neutron-lib checks
neutron_lib_checks.factory(register)
# register project specific checks
register(my_project_check)
并在 tox.ini 文件中使用您项目自己的工厂:
[hacking]
local-check-factory = myproject.mypkg.my_factory