基于buildout的Python项目的静态代码分析。
项目描述
介绍
plone.recipe.codeanalysis为基于Buildout的Python项目提供静态代码分析,包括flake8、JSHint、CSS Lint和其他代码检查。
此buildout配方创建一个脚本来运行代码分析
bin/code-analysis
默认情况下,plone.recipe.codeanalysis还会创建一个git预提交钩子,以便在每次提交之前自动运行代码分析。
plone.recipe.codeanalysis附带Jenkins集成,允许在本地机器和Jenkins上使用相同的代码分析设置。
它还可以运行任意文件夹的代码分析
bin/code-analysis src/Products.CMFPlone
安装
只需在buildout.cfg中添加一个代码分析部分
[buildout]
parts += code-analysis
[code-analysis]
recipe = plone.recipe.codeanalysis
directory = ${buildout:directory}/src
目录选项不是必需的。尽管如此,如果您不指定目录,代码分析将检查buildout目录中的所有文件。
此配置对于处理现有包很有帮助。如果您创建了一个新包,您可能希望启用所有检查。此配置看起来像这样
[code-analysis]
recipe = plone.recipe.codeanalysis[recommended]
multiprocessing = True
jenkins = False
directory =
${buildout:directory}/src
return-status-codes = True
pre-commit-hook = True
# JS
jshint = True
jshint-bin = ${buildout:bin-directory}/jshint
jshint-suppress-warnings = False
jscs = True
jscs-bin = ${buildout:bin-directory}/jscs
jscs-exclude =
${buildout:directory}/dev/bower_components
${buildout:directory}/node_modules
# CSS
csslint = True
csslint-bin = ${buildout:bin-directory}/csslint
# ZPT
zptlint = True
zptlint-bin = ${buildout:bin-directory}/zptlint
# Chameleon uses XML (there is no chameleon-lint-bin, it uses lxml)
chameleon-lint = False
# XML (there is no xmllint-bin, it uses lxml)
xmllint = True
# scss-lint
scsslint = True
scsslint-bin = ${buildout:bin-directory}/scss-lint
# TS
tslint = True
tslint-bin = ${buildout:directory}/bin/tslint
tslint-exclude = ${:jscs-exclude}
# Conventions
clean-lines = True
clean-lines-exclude = ${:jscs-exclude}
# dependency-checker
dependencychecker = True
dependencychecker-bin = ${buildout:directory}/bin/dependencychecker
# i18n
find-untranslated = True
i18ndude-bin = ${buildout:bin-directory}/i18ndude
flake8-exclude = bootstrap.py,bootstrap-buildout.py,docs,*.egg,*.cpy,*.vpy,overrides
[node]
recipe = gp.recipe.node
npms = csslint jshint jscs tslint
scripts = csslint jshint jscs tslint
[推荐] 额外
此额外操作启用了大量的flake8插件。它们大多数是针对Plone风格指南的编码部分(特别是Python部分)。
以下是当前安装的额外插件
flake8-blind-except: 警告关于捕获任何异常,即except:
flake8-coding: 警告缺少编码头的Python文件
flake8-debugger: 警告代码中发现的调试语句(如pdb…)
flake8-deprecated: 警告过时的方法调用
flake8-isort: 警告未正确排序的导入(请注意,需要额外配置)
flake8-pep3101: 警告关于旧式格式化,即'format a %s' % string
flake8-plone-api: 警告可能被plone.api调用替换的代码(请注意,这禁止用于Plone核心包)
flake8-plone-hasattr: 警告使用hasattr,因为它会引发异常
flake8-print: 警告使用print
flake8-quotes: 警告使用双引号(plone风格指南说使用单引号)
flake8-string-format: 警告字符串格式化中的错误
flake8-todo: 警告代码中存在TODO、XXX
flake8-commas: 警告方法调用、列表或字典中的最后一个元素不以逗号结尾
Git钩子
pre-commit-hook
pre-commit-return-status-codes
pre-push-hook
pre-push-return-status-codes
您可以选择激活gitpre-commit-hook和/或pre-push-hook钩子。您可以通过将return-status-codes设置为‘True’来使这些钩子阻止(中止)。您可以使用pre-commit-return-status-codes和pre-push-return-status-codes分别调整每个钩子的返回代码行为。
最适合您的是口味和代码库的问题。
如果您想确保在每次提交时工作区始终保持干净,并且您希望发现任何异常时中止提交,您可以配置
[code-analysis] return-status-codes = True pre-commit-hook = True
如果您在一个大型代码库中工作,解析需要很长时间,并且您的工怍流程是使用许多小提交,那么您可能会对提交前的延迟感到烦恼。或者,也许您喜欢检查您的工作的一部分,同时在您的工怍树中有其他尚未清理的文件。
在这种情况下,您可能希望禁用提交前的检查,并使用阻塞的预推送检查。
[code-analysis] return-status-codes = True pre-commit-hook = False pre-push-hook = True
或者,您可能希望默认情况下运行非阻塞的 code-analysis,以取悦 Jenkins,但仍然希望在提交前和预推送时都有阻塞的检查?可以做到。
[code-analysis] return-status-codes = False pre-commit-hook = True pre-commit-return-status-codes = True pre-push-hook = True pre-push-return-status-codes = True
我知道,这是一个假设的例子,但它说明了相关的选项。
配置 覆盖
上述选项配置了项目级别的代码分析。有时开发者可能希望从本地偏离项目级别的设置,例如,即使项目全局设置是在违规时不要中止提交,也要让 git 预提交钩子阻塞违规。
例如,如果项目 buildout.cfg 读取
[code-analysis] overrides = code-analysis-overrides-acmecorp return-status-codes = False pre-commit-hook = True
但是作为一个开发者,我宁愿有一个阻塞的预推送而不是非阻塞的预提交,我可以在我的 .buildout/default.cfg 配置中配置覆盖项如下
[code-analysis-overrides-acmecorp] return-status-codes = True pre-commit-hook = False pre-push-hook = True
这对于让用户自己选择他们是否想要预提交钩子或预推送钩子非常有用,以及他们是否希望阻塞违规(这样他们就不必修改提交)或者他们是否希望非阻塞检查(这样他们可以在提交的文件集之外的工作树中有无效文件)。YMMV。
请注意,如果项目没有在项目级别配置 overrides,您仍然可以在 .buildout/default.cfg 中配置它
[code-analysis] overrides = code-analysis-overrides [code-analysis-overrides] return-status-codes = True
建议为每个项目定义一个覆盖名称,这样开发者就可以根据项目调整他们的覆盖项。仅当存储库确实与典型存储库有很大不同(例如,大得多)时,存储库特定的覆盖名称才有意义。例如,项目覆盖名称将在开发者的 .buildout/default.cfg 中显示如下
[code-analysis-overrides-plone] return-status-codes = True pre-commit-hook = True pre-push-hook = True [code-analysis-overrides-grok] <= code-analysis-overrides-plone [code-analysis-overrides-acmecorp] return-status-codes = True pre-commit-hook = False pre-push-hook = True
对于非常希望不向他们的开发者提供此选项的项目,有在项目 buildout.cfg 中阻塞覆盖的简单解决方案
[code-analysis] overrides = False
建议您实际上与您的同事讨论哪些覆盖项是不可接受的,而不是采取这种核选项。如果开发者不同意您正在验证的 flake8 扩展集,那实际上是一个社会问题,而不是可以在代码中解决的问题。
控制开发者允许进行的本地重新配置的另一种更微妙的方法是在项目级别配置 overrides-allowed 白名单
[code-analysis] overrides-allowed = multiprocessing return-status-codes pre-commit-hook pre-commit-return-status-codes pre-push-hook pre-push-return-status-codes
因此,这里列出的覆盖选项将从开发者的本地配置中获取,所有其他选项将从项目 buildout.cfg 中获取。列出空的 overrides-allowed 选项允许覆盖所有选项。
但当然,所有这些都运行在开发者的机器上...
Jenkins安装
plone.recipe.codeanalysis 提供了一个 Jenkins 设置,允许在 Jenkins CI 服务器上运行它,并通过 Jenkins Violations 插件 处理和集成输出。
通常您不希望配方在您的本地机器上创建 Jenkins 输出文件。因此,仅在 CI 机器上启用 Jenkins 输出是有意义的。为此,只需创建一个 jenkins.cfg 文件,该文件扩展并覆盖默认 buildout 文件(包括其他设置)
[buildout]
parts += code-analysis
[code-analysis]
recipe = plone.recipe.codeanalysis
jenkins = True
Jenkins 作业本身应运行 bin/code-analysis
python bootstrap.py -c jenkins.cfg bin/buildout -c jenkins.cfg bin/jenkins-test --all bin/code-analysis
需要配置Jenkins Violations插件以读取此配置生成的输出文件。
pep8(用于读取flake8输出)
**/parts/code-analysis/flake8.log
csslint
**/parts/code-analysis/csslint.xml
csslint
**/parts/code-analysis/scsslint.xml
jslint(用于读取jshint输出)
**/parts/code-analysis/jshint.xml
checkstyle(用于读取jscs输出)
**/parts/code-analysis/jscs.xml
文件系统输出
如果将jenkins设置为False,您仍然可以通过将flake8-filesystem = True设置在文件系统中存储输出。如果jenkins设置为True,则此设置将被忽略。
输出
**/parts/code-analysis/flake8.txt
链接
代码仓库
持续集成
问题跟踪器
支持选项
如果由于某些原因需要在特定行上绕过检查,您可以在Python中使用# noqa或在JavaScript文件中使用// noqa。这对我们的大多数检查都有效。
该配方支持以下选项
- directory
接受代码分析的目录。
- return-status-codes
如果设置为True,bin/code-analysis脚本将返回一个错误代码,持续集成服务器(如Travis CI)可以使用此代码根据代码分析输出失败或通过一个任务。请注意,Jenkins通常不需要此选项(此选项最好由Jenkins Violations插件处理)。请注意,此选项对其他代码分析脚本没有影响。默认为False。
请注意,可以通过使用--return-status-codes或--no-return-status-codes命令行选项在命令行中覆盖此选项。
请注意,如果需要,预提交和提交后钩子可以调整以具有不同的状态代码行为,如下所示。
- pre-commit-hook
如果设置为True,将安装一个git预提交钩子,在每次提交之前运行代码分析。默认为True。
- pre-commit-hook-return-status-codes
如果设置为True,如果运行了预提交钩子,它将在发现违规时中止提交。默认值是return-status-codes配置的值。
- pre-push-hook
如果设置为True,将安装一个git预推送钩子,在将代码推送至远程之前运行代码分析。默认为False。
- pre-push-hook-return-status-codes
如果设置为True,如果运行了预推送钩子,它将在发现违规时中止推送。默认值是return-status-codes配置的值。
请注意,通常建议将此选项设置为True,这样您就可以避免推送损坏的工作。具体情况具体分析。
- multiprocessing
如果设置为True,code-analysis将派生多个进程,并并行运行所有linters。这将在多核系统上显著提高速度,特别是在使用code-analysis作为预提交钩子时。默认为False。
- jenkins
如果设置为True,代码分析步骤将写入可由Jenkins Violations插件处理的输出文件。默认为False。
- flake8-filesystem
如果设置为True,flake8代码分析步骤将写入一个输出文件。如果jenkins为True,则忽略。默认为False。
- flake8
如果设置为True,运行Flake8代码分析。默认为True。
- flake8-extensions
Flake8 现在利用 flake8 扩展系统。默认为无。如果 flake8 设置为 False,则此选项将被忽略。以下是一个使用一些扩展的示例来增强功能
[code-analysis]
recipe = plone.recipe.codeanalysis
flake8 = True
flake8-extensions =
flake8-blind-except
flake8-coding
flake8-debugger
flake8-quotes
pep8-naming
flake8 设置
Flake8 使用以下文件查找设置
setup.cfg(推荐用于 Plone)
tox.ini
.flake8
[flake8]
exclude = bootstrap.py,boostrap-buildout.py,docs,*.egg
max-complexity = 10
max-line-length = 79
- 查看 Flake8 文档
以及它的插件,以查看哪些选项可用。
- check-manifest
如果设置为 True,则将运行 check-manifest 来检查您的 MANIFEST.in 文件。默认为 False。
- check-manifest-directory
默认为 .,表示检查您在 buildout 中包含代码分析的当前包。
实验性:对于使用多个源包的项目构建,您可能需要输入多个目录或使用 ${buildout:develop} 来包含所有开发包。
- dependencychecker
如果设置为 True,则运行导入语句分析并验证与 setup.py 中声明的依赖项。默认为 False。
- dependencychecker-bin
设置 dependencychecker 的自定义版本路径。
- importchecker
如果设置为 True,则运行导入语句分析并报告未使用的导入。默认为 False。
- importchecker-bin
设置 importchecker 的自定义版本路径。
- jshint
如果设置为 True,则运行 jshint 代码分析。默认为 False。请注意,plone.recipe.codeanalysis 需要 jshint >= 1.0。
- jshint-bin
JSHint 可执行文件。默认为 jshint。如果您已在系统路径中安装 JSHint,则无需执行任何操作。要在 buildout 中安装 JSHint,请使用以下命令
[jshint]
recipe = gp.recipe.node
npms = jshint
scripts = jshint
将 jshint-bin 设置为 ${buildout:bin-directory}/jshint。
- jshint-exclude
允许您指定不希望进行代码检查的目录。默认为无。如果要让 JSHint 跳过某些文件,可以在名为 .jshintignore 的文件中列出它们。有关详细信息,请参阅 JSHint 文档。
- jshint-suppress-warnings
默认情况下,jshint 的警告将被抑制且不会显示。您可以通过将其设置为 False 来禁用此功能,默认为 True,这是为了向后兼容的原因。
- jscs
如果设置为 True,则运行 jscs 代码分析。默认为 False。
JavaScript 代码风格选项应使用 .jscs.json 文件进行配置。您应该使您的 JavaScript 代码与 Plone 的下一代 JavaScript 框架 Mockup 保持一致,并使用以下可用的 .jscs.json 文件:https://github.com/plone/mockup/blob/master/mockup/.jscs.json
所有配置选项均在 jscs 网站 上有文档说明。
- jscs-bin
设置 JSCS 的自定义版本路径,例如 /usr/local/bin/jscs。
如果您已在系统路径中安装了 Javascript 代码风格检查器,则无需执行任何操作。要使用 Buildout 安装,请向您的 buildout 添加以下部分,并将 jscs-bin 设置为 {buildout:bin-directory}/jscs
[jscs]
recipe = gp.recipe.node
npms = jscs
scripts = jscs
- jscs-exclude
允许您指定不需要检查的目录和/或文件。默认为无。注意,这些目录必须以绝对路径给出,例如使用 ${buildout:directory}/foo/bar/static/js-3rd-party。
- csslint
如果设置为True,将运行CSS Lint代码分析。默认为 False。
应该使用 .csslintrc 文件来配置CSS Lint选项。一个典型的 .csslintrc 文件如下所示
--format=compact --quiet --ignore=adjoining-classes,floats,font-faces,font-sizes,ids,qualified-headings,unique-headings --exclude-list=foo/bar/static/third-party.css
此典型配置包括一个列表,其中包含将被视为无用的CSS规则,将被忽略。
请参阅 CSS Lint文档 和 CSS Lint命令行界面,以获取规则详细列表和描述。
- csslint-bin
设置自定义CSS Lint版本的路径,例如 /usr/local/bin/csslint。
如果您已将CSS Lint安装在系统路径中,您无需做任何事情。要使用Buildout安装CSS Lint,请将以下部分添加到您的buildout中,并将csslint-bin设置为 {buildout:bin-directory}/csslint
[csslint]
recipe = gp.recipe.node
npms = csslint
scripts = csslint
- csslint-exclude
允许您指定不需要检查的目录和/或文件。默认为无。
- chameleon-lint
如果设置为True,将运行ChameleonLint代码分析。默认为 False。
ChameleonLint使用 lxml 进行XML解析。没有 chameleon-lint-bin。
请注意,您可能希望激活 chameleon-lint 或 zpt-lint 中的一个,而不是两个,因为它们将应用于同一组文件扩展名(.pt,.cpt,.zpt)。zpt-lint 解析器使用实际的TAL表达式引擎来验证模板,并且通常会在Chameleon扩展上崩溃。另一方面,chameleon-lint 解析器基本上只是检查模板是否是有效的XML。
- xmllint
如果设置为True,将运行XMLLint代码分析。默认为 False。
XMLLint使用 lxml 进行XML解析。没有 xmllint-bin。
- clean-lines
如果设置为True,任何包含行尾空格或制表的文件将引起警告。默认为 False。
- clean-lines-exclude
允许您指定不需要检查的目录和/或文件。默认为无。
i18ndude, scsslint 和 zptlint 支持
为了减少Zope/Plone直接依赖项的数量,plone.recipe.codeanalysis不再依赖于i18ndude、SCSS Lint 或 zptlint;为了使用以下选项,您必须在系统上安装它们,有关示例安装,请参阅 buildout.cfg。
- find-untranslated
如果设置为True,将扫描Zope模板以查找未翻译的字符串。默认为 False。要使用此功能,您需要设置 i18ndude-bin 选项。
- find-untranslated-exclude
允许您指定不需要检查的目录和/或文件。默认为无。
- find-untranslated-no-summary
报告将只包含每个文件的错误。默认为 False。但是,当 jenkins 设置为 True 时,也会抑制摘要。
- i18ndude-bin
设置 i18ndude 的自定义版本路径。默认为无。
- scsslint
如果设置为True,将运行 SCSS Lint 代码分析。默认为 True。
- scsslint-bin
设置自定义版本的 SCSS Lint 的路径。默认为无。
注意,您通常会安装带有下划线的 gem scss_lint 来获取带有短划线的 bin 文件 scss-lint。
如果您的系统路径中已安装 SCSS Lint,您无需做任何操作。要使用 Buildout 安装 SCSS Lint,请在您的 buildout 中添加以下部分,并将 scsslint-bin 设置为 {buildout:bin-directory}/scss-lint
[rubygems]
recipe = rubygemsrecipe
gems = scss_lint
Please note that due to some buildout weirdness this will break buildout
on the first buildout run; a second buildout run will complete just fine.
scsslint-configuration
可以配置 SCSS Lint 选项,请参阅 SCSS Lint README。
- zptlint
如果设置为 True,将运行 zptlint 代码分析。默认为 False。要使用此选项,您需要设置 zptlint-bin 选项。
请注意,您需要使用 zptlint 或 chameleon-lint 中的一个,而不是两者都使用。
- zptlint-bin
设置自定义版本的 zptlint 的路径。默认为无。
- zptlint-exclude
允许您指定不需要检查的目录和/或文件。默认为无。
默认禁用这些额外 linter 的自测试。要运行涵盖这些额外 linter 的 plone.recipe.codeanalysis 自测试
TEST_ALL=true bin/test
已知问题
JSHint “ERROR: Unknown option –verbose”
JSHint [ OK ] ERROR: Unknown option --verbose
升级 JSHint 到最新版本 (>= 1.0) 以修复此问题,例如。
$ sudo npm install -g jshint
JSHint “ERROR: Unknown option –exclude”
JSHint [ OK ] ERROR: Unknown option --exclude
升级 JSHint 到最新版本 (>= 2.1.6) 以修复此问题,例如。
$ sudo npm install -g jshint
Rubygems 痛苦
Installing rubygems. rubygems: Extracting package to /app/plone.recipe.codeanalysis/parts ERROR: While executing gem ... (Errno::EACCES) Permission denied @ rb_sysopen - /usr/lib/ruby/gems/2.3.0/specifications/default/bundler-1.16.1.gemspec rubygems: b'' rubygems: Command failed with exit code 1: ['ruby', 'setup.rb', 'all', '--prefix=/app/plone.recipe.codeanalysis/parts/rubygems', '--no-rdoc', '--no-ri'] While: Installing rubygems. Error: System error
解决方案:再次运行 buildout。真的。
测试失败
Traceback (most recent call last): File "/app/plone.recipe.codeanalysis/plone/recipe/codeanalysis/__init__.py", line 18, in <module> import zc.buildout ModuleNotFoundError: No module named 'zc.buildout'
这可能是由于 https://github.com/pypa/pip/issues/4695 所致。解决方案:在运行 bin/buildout 之前运行。
bin/easy_install -U zc.buildout==2.11.0
before running bin/buildout。
示例用法
最小 buildout
>>> write('buildout.cfg', ... """ ... [buildout] ... parts = code-analysis ... ... [code-analysis] ... recipe = plone.recipe.codeanalysis ... directory = %(directory)s ... """ % { ... 'directory' : '${buildout:directory}/plone/recipe/codeanalysis', ... })
运行 buildout 会给我们一个运行整个代码分析的“code-analysis”脚本
>>> buildout_output_lower = system(buildout).lower() >>> '/sample-buildout/bin/code-analysis' in buildout_output_lower True
也可以运行单个代码分析脚本
>>> '/sample-buildout/bin/code-analysis-flake8' in buildout_output_lower True >>> '/sample-buildout/bin/code-analysis-jshint' in buildout_output_lower True
Flake 8 由 buildout 脚本安装,无需在系统上安装它
>>> '/sample-buildout/bin/flake8' in buildout_output_lower True
提交前钩子
如果我们有一个 git 仓库
>>> import subprocess >>> subprocess.call(['mkdir', '-p', '.git/hooks']) 0
然后再次运行 buildout
>>> buildout_output_lower = system(buildout).lower()
然后安装 git 预提交钩子
>>> 'installed git pre-commit hook.' in buildout_output_lower True
贡献者
Timo Stollenwerk,原始作者
Gil Forcada
Héctor Velarde
Ramiro Batista da Luz
Daniel Widerin
Michael Davis
变更历史
3.0.1 (2018-06-27)
修复 PyPi readme 页面。[timo]
3.0.0 (2018-06-27)
3.0.0a 的重新发布(棕色袋发布)。[timo]
3.0.0a (2018-06-15)
删除 flake8 默认设置,改为使用 setug.cfg。[iham]
为 .xml .xsl .zcml 文件添加 XMLLint。[janjaapdriessen]
为 sass 文件添加 scss-lint。[janjaapdriessen]
为 Chameleon 模板文件添加 XML linter。[janjaapdriessen]
通过 https://github.com/buildout/buildout/issues/434 和 https://github.com/pypa/pip/issues/4695 修复 Travis 引导和覆盖率失败的问题,这些问题掩盖了测试实际上已经通过。将不带额外信息的 python3 构建再次标记为关键。请注意,这需要双 buildout 序列来正确安装 scss-lint gem... 修复 #214。[gyst]
恢复 XMLLint 和 SCSSLint,由 janjaapdriessen 实现。添加测试和文档。[gyst]
用 spirit.zptlint 替换未维护的 zptlint 上游。[gyst]
为 Chameleon Linter 添加测试并修复 linter。修复 #180,某种程度上;验证比 ZPTLint 更不严格。[gyst]
引入 i18ndude python3 修复并标记 EXTRAS 测试为关键。[gyst]
更新 z3c.dependencychecker 依赖项并提供分析器。[gyst]
添加 importchecker linter。修复 #67。[gyst]
为 python3 工作清理源依赖项。[gyst]
引入对个人开发者偏好的覆盖支持。[gyst]
引入pre-push-hook,允许命令行和githook从默认的return-status-codes中进行偏离。[gyst]
从Jenkins输出中移除尾随点,以简化文件名复制粘贴。[janwijbrand]
引入我们自己的dogfood linter配置和版本桩,与coredev qa.cfg保持同步。[gyst]
2.3 (2018-01-18)
如果安装了flake8-isort,则安装isort脚本。[gforcada]
添加新的推荐flake8插件:flake8-commas。[gforcada]
通过使用pip安装setuptools和zc.buildout来修复持续集成(Travis)。[gforcada]
在CI上只运行一次测试。[gforcada]
移除bootstrap-buildout.py,因为它不再使用。[gforcada]
修复代码分析错误。[gforcada]
修复travis(需要较新的setuptools和zc.buildout)[gforcada]
在travis上也检查Python 3.5和3.6(尽管目前它们失败了)。[gforcada]
为i18ndude添加“find-untranslated-no-summary”选项。[tmassman]
2.2 (2016-02-20)
修复了提交钩子在NixOS上不工作的问题(修复为使用/usr/bin/env bash而不是/bin/bash)。[datakurre]
允许传递一个文件夹,在其中运行代码分析。[gforcada]
提高flake8的最小要求。旧版本可能会使插件中带有异常的检查通过。[do3cc]
2.1 (2015-09-21)
移除调试语句检查器,flake8-debugger、flake8-print和jshint可以完成同样的工作。[gforcada]
移除pep3101检查器,flake8-pep3101的功能完全相同。[gforcada]
移除已弃用的别名检查器,flake8-deprecated可以完成同样的工作。[gforcada]
移除hasattr检查器,flake8-plone-hasattr可以完成同样的工作。[gforcada]
添加一个[recommended]额外功能来安装一组flake8插件,其中一些是直到这次发布之前p.r.codeanalysis的一部分。[gforcada]
移除utf-8检查器移除后的遗留项。[gforcada]
移除导入检查器,flake8-isort可以完成同样的工作。[tisto] [gforcada]
修复测试中的拼写错误,该错误阻止了ipdb导入的查找。[hvelarde]
2.0.2 (2015-09-03)
对于pep3101减少误报。[do3cc]
如果将multiprocessing设置为False,则向flake8添加--jobs=1。[saily]
通过不实例化Lock和Value来修复#151的问题,如果multiprocessing设置为False。[saily]
2.0.1 (2015-09-02)
同步 :-) [do3cc] 修复multiprocessing错误。共享状态很难
更改pep3101逻辑。不再在日志字符串上出现误报。[do3cc]
清理测试输出。修复了https://github.com/plone/plone.recipe.codeanalysis/issues/122 [gforcada]
2.0 (2015-08-07)
改进analyser的split_lines,使得使用zc.buildout 1.7.1时,可以忽略带有多个目录的排除语句。修复了https://github.com/plone/plone.recipe.codeanalysis/issues/129 [gil-cano]
允许向flake8或其插件传递任何选项。修复了https://github.com/plone/plone.recipe.codeanalysis/issues/131 [gforcada]
如果不存在,则创建.git/hooks文件夹。修复了https://github.com/plone/plone.recipe.codeanalysis/issues/124 [gforcada]
在初始化时编译所有正则表达式,以避免每次使用时都需要编译,这将使代码分析更快。[gforcada]
2.0b1 (2015-05-03)
允许在排除语句中使用通配符。[saily]
将 check-manifest 添加为新依赖项和基本检查。修复了 https://github.com/plone/plone.recipe.codeanalysis/issues/69 [saily]
添加新选项以禁用 jshint 警告抑制。修复了 https://github.com/plone/plone.recipe.codeanalysis/issues/94 [saily]
如果找不到可执行文件,代码分析总是失败。我们已更改此行为以返回 True 并成功执行代码分析。修复了 https://github.com/plone/plone.recipe.codeanalysis/issues/71 [saily]
直接在 find Unix 命令中排除路径,这再次大大加快了速度。[saily]
排除 self.extensions 中的空字符串,这破坏了与 zc.buildout 1.7.1 的安装。修复了 https://github.com/plone/plone.recipe.codeanalysis/issues/115 [saily]
添加对相对导入的检查。修复了 https://github.com/plone/plone.recipe.codeanalysis/issues/44 [saily]
2.0a2 (2015-04-30)
将手动比较 buildout 选项与 False 替换为 bool_option 方法。[saily]
删除了一些插件,并用 flake8 插件替换。请注意 buildout 中的 API 变更。以下选项已被删除
utf8-headers 已删除,如需替换,请使用 flake8-coding。
utf8-headers-exclude
prefer-single-quotes 已删除,请使用 flake8-quotes 替换。
prefer-single-quotes-exclude
debug-statements 由于需要使用 flake8-debugger 扩展来检查 ipdb,因此功能有所减少。
修复了 https://github.com/plone/plone.recipe.codeanalysis/issues/112 [saily]
为 deprecated_aliases 解析器添加缺失的测试。[saily]
添加新的双引号解析器及其测试。现在它还支持 # noqa 语句和嵌套引号。[saily]
2.0a1 (2015-04-27)
添加了多进程处理。这将在使用 pre-commit 钩子时,在大型包中显著提高速度。[saily]
为控制台脚本返回正确的退出码。修复了 https://github.com/plone/plone.recipe.codeanalysis/issues/66 [saily]
将整个代码审查框架重构为使用面向对象设计模式,从 Analyser 抽象基类继承。修复了 https://github.com/plone/plone.recipe.codeanalysis/issues/62 [saily]
将 bootstrap-buildout.py 添加到 flake8-exclude 默认值。zc.buildout > 2 使用 bootstrap-buildout.py 而不是 bootstrap.py。[timo]
1.1 (2014-12-04)
添加检查以查找被认为是不良实践的 hasattr() 调用。[gforcada, jensens]
添加选项以存储 flake8 输出,如果 jenkins 为 False [Michael Davis]
修复了 utils 中的 find_files,使其找到文件而不是目录 [do3cc]
1.0 (2014-12-04)
自 1.0rc1 以来没有更改。
1.0rc1 (2014-06-18)
返回字符串以避免在未使用 jscs 检查任何文件时出现 TypeError。[saily]
在 code_analysis_imports 中检查导入排序并添加对干净和排序导入的测试。[saily]
重构 code_analysis_clean_lines 以使用新方法检索文件并避免过于复杂的违规。[saily]
1.0b8 (2014-06-05)
添加 clean-lines-exclude 支持,并更新了 README。[saily]
为 clean-lines 检查添加了测试。[saily]
使用 format() 的索引以支持 Python 2.6。修复了 https://github.com/plone/plone.recipe.codeanalysis/issues/77 [timo]
1.0b7 (2014-05-04)
添加 JavaScript 代码风格检查器 jscs 支持。[saily]
移除对 i18ndude 和 zptlint 的硬依赖;这将减少 Zope/Plone 直接依赖的数量,使使用 Pyramid 和其他基于 Python 的 Web 开发框架的人的生活更加愉快。修复了 https://github.com/plone/plone.recipe.codeanalysis/issues/53 [hvelarde]
不要在 Jenkins 中打印出 jshint 和 csslint 的输出。这些文件可能会变得相当大。[timo]
1.0b6 (2013-10-16)
从 flake8 检查中移除进度符号。[timo]
改进处理 popen 中使用的命令不存在时异常的方式。[flohcim]
1.0b5 (2013-10-08)
通过仅在选项激活时调用每个检查来修复代码分析方法。[flohcim]
保留与“string-formatting”选项的向后兼容性。[hvelarde]
将“deprecated-alias”重命名为“deprecated-aliases”并保持向后兼容。[hvelarde]
1.0b4 (2013-10-06)
在 CSS Lint 和 JSHint 中实现 Jenkins 选项。[hvelarde, ramiroluz]
将“deprecated-methods”重命名为“deprecated-alias”。[gforcada]
将“string-formatting”选项重命名为“pep3101”以保持一致性。[hvelarde]
移除未使用的 CSSLINT_IGNORE 保留项。[timo]
简化代码分析方法并使其更具可读性。[timo]
1.0b3 (2013-09-12)
添加 return-status-codes 选项,允许在 Travis 上失败 CI 构建。[timo]
将系统范围内安装的 csslint 设置为 csslint-bin 选项的默认值。[timo]
1.0b2 (2013-09-11)
弃用“csslint-quiet”,“csslint-ignore”和“csslint-exclude-list”选项;现在必须使用“ .csslintrc”文件来配置 CSS Lint。现在,“csslint-bin”选项的默认值为 bin/csslint;文档已更新(关闭 #20)。[hvelarde]
实现移除 pre-commit 钩子。修复了 https://github.com/plone/plone.recipe.codeanalysis/issues/21 [hvelarde]
1.0b1 (2013-08-12)
通过绕过 JSHint 限制来避免将警告消息显示为错误。修复了 https://github.com/plone/plone.recipe.codeanalysis/issues/13 [hvelarde]
修复 CSS Lint 验证并实现新的“csslint-quiet”选项。[hvelarde]
修复软件包分发。[hvelarde]
1.0a1 (2013-08-04)
首次发布。[timo]
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。