跳转到主要内容

基于buildout的Python项目的静态代码分析。

项目描述

Egg Status Travis Build Status Test Coverage Downloads Python Versions Latest Version License

介绍

plone.recipe.codeanalysis为基于Buildout的Python项目提供静态代码分析,包括flake8JSHintCSS 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

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-codespre-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

如果设置为Truecode-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-lintzpt-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不再依赖于i18ndudeSCSS Lintzptlint;为了使用以下选项,您必须在系统上安装它们,有关示例安装,请参阅 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 选项。

请注意,您需要使用 zptlintchameleon-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/434https://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-debuggerflake8-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]

  • 通过不实例化LockValue来修复#151的问题,如果multiprocessing设置为False。[saily]

2.0.1 (2015-09-02)

2.0 (2015-08-07)

2.0b1 (2015-05-03)

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)

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)

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)

1.0a1 (2013-08-04)

  • 首次发布。[timo]

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。

源分发

plone.recipe.codeanalysis-3.0.1.tar.gz (66.9 kB 查看散列值)

上传于 来源

支持