跳转到主要内容

Git Lint

项目描述

Git-Lint

https://badge.fury.io/py/git-lint.svg https://travis-ci.org/sk-/git-lint.svg?branch=master https://coveralls.io/repos/sk-/git-lint/badge.svg?branch=master

Git-lint是一种逐步改进源代码的工具。

动机

通常,将编码风格强加给现有项目可能是一个噩梦。一些原因可能包括

  • 代码库已经一团糟,工具的输出令人眼花缭乱。

  • 开发者没有信心更改他们不拥有的行。

  • 或者他们根本不知道该使用什么工具。

功能

此工具通过提供一个仅对修改过的文件进行lint的单一工具来解决上述所有3个问题。对于每种文件类型,它可能使用不止一个linter或工具。此外,默认情况下,它只报告添加或修改的行的问题。

当前linter

示例使用

以下是最简单的调用方式,详细信息请查看帮助

$ git lint
Linting file: src/html/main.js
Line 13, E:0110: Line too long (328 characters).
Line 31, E:0001: Extra space at end of line
src/html/main.js: line 75, col 11, ['location'] is better written in dot notation.

Linting file: src/html/main.css
src/html/main.css: line 1, col 135, Warning - Duplicate property 'margin' found.

Linting file: api.py
api.py:6: [C0301(line-too-long), ] Line too long (87/80)
api.py:6: [R0913(too-many-arguments), callMethod] Too many arguments (6/5)
api.py:6: [C0103(invalid-name), callMethod] Invalid function name "callMethod"

默认情况下,git lint仅报告修改行的问题(除了一些检查整个文件是否合理的linters外)。要强制显示linters的所有输出,请使用-f选项。

安装

您可以使用以下命令安装、升级或卸载git-lint

$ pip install git-lint
$ pip install --upgrade git-lint
$ pip uninstall git-lint

配置

Git-lint附带一个默认配置,其中包括上述所有linters。如果您不喜欢这个列表,可以编写自己的配置并将其放入名为.gitlint.yaml的文件中,并将其放置在您的存储库根目录下。您可以将文件https://github.com/sk-/git-lint/blob/master/gitlint/configs/config.yaml复制到您的存储库中,并对其进行修改。

如果您添加了新的linters或向任何命令添加了新的标志,请与我们分享,这样我们就可以整合这些更改。

配置支持命令、要求和参数的两种变量

  • {REPO_HOME}:您的存储库的根目录。

  • {DEFAULT_CONFIGS}:默认配置文件的存储位置。

如果您需要在命令中包含如{}{foo}之类的字符串,则需要将花括号加倍,如{{}}{{foo}}

Git配置

git-lint为git提供了一个预提交钩子。要为您存储库安装它,请执行以下操作

$ ln -s `which pre-commit.git-lint.sh` $PATH_TO_YOUR_REPO/.git/hooks/pre-commit

或者,如果您想全局安装它,请执行以下操作

$ ln -s `which pre-commit.git-lint.sh` /usr/share/git-core/templates/hooks/pre-commit

Mercurial配置

要使Mercurial中具有更好名称的git-lint可用,您必须在您的.hgrc配置文件中添加以下内容

[alias]
lint = !git-lint $@

要添加预提交钩子,请添加以下内容

[hooks]
pretxncommit.hglint = pre-commit.hg-lint.sh > `tty`

上面的钩子有一个用于显示命令输出的hack。此外,由于Mercurial(据我所知)不提供跳过钩子的方法,如果您想强制提交具有linters警告的提交,请按以下方式执行提交命令

$ NO_VERIFY=1 hg commit ...

请注意,Mercurial大量使用提交来利用其所有命令/扩展。我发现,在执行常见的操作如rebaseshelve时,设置任何类型的预提交钩子都会阻碍您的操作。

限制

在某些情况下,更改将触发另一行的警告。遗憾的是,git-lint无法处理这些情况,因为它仅报告已修改的行。要完全支持这种情况,需要运行linters两次,并仅报告新行。这种情况最常见的情况是未使用的导入或变量。例如,我们有以下代码片段

import foo
foo.bar()

如果您删除第二行,git-lint不会抱怨,因为警告是针对第1行,该行未被修改。

Python版本

支持Python 2.7,并且它也应适用于Python 3.2、3.3和3.4。由于缺乏subprocess.check_output,不支持Python 2.6。

开发

欢迎为此项目提供帮助,因此请随时创建问题或通过http://github.com/sk-/git-lint发送pull请求。

使用nose运行测试,可以使用

$ python setup.py nosetests
$ nosetests

此相同的工具在每次提交时都会运行,因此可以在早期捕获错误和样式问题。

添加linters

只需配置文件gitlint/config.yaml。我希望语法是自我解释的。(致自己的信:不要如此懒惰,为这个写一份正式的文档。)

待办事项和可能的功能

  • 支持将目录作为参数

  • 提供man页,以便“git help lint”和“git lint –help”工作。我已有一个将用法转换为man页面的脚本,但我仍需要弄清楚如何在系统上安装它。

  • 允许在设置代码检查器时运行命令或函数?现在可以通过运行一个包含代码检查器的bash脚本来实现。这样做的理由是一些代码检查器,如jshint,只允许选项在配置文件中。目前,这通过“linters”文件夹中的脚本来实现。

  • 根据整个文件名或命令返回的文件类型来决定使用哪个代码检查器。

  • 提供更好的输出着色选项,也许还可以禁用它。同时检测颜色是否受支持或是否是tty。

  • 增加对更多版本控制系统(svn、perforce)的支持。这应该很容易,只需实现gitlint/git.py或gitlint/hg.py中定义的函数即可。

  • 支持Windows。

贡献者

变更日志

v0.1.2 (2018-05-24)

  • 修复创建缓存目录时的竞争条件。

v0.1.1 (2018-05-15)

  • 修复Python 3中futures依赖项无法正确工作的问题。

v0.1.0 (2018-02-26)

  • 修复由于默认编码导致的某些系统中的设置问题。

  • 更改版本以使用语义版本控制。如果版本是语义的,则此发布将仅是补丁。

v0.0.9 (2018-01-22)

  • 修复pip安装和包中版本不匹配的问题。

  • 添加多线程支持

v0.0.8 (2015-10-14)

  • 修复git预提交钩子(感谢Rovanion Luckey)

  • 修复问题#64,#67

v0.0.7 (2015-06-28)

  • 更好地支持Python 3

  • 移除对Python 3.2的支持

  • 输出按行和列号排序

  • 错误修复:问题#49,#50,#54,#62

  • 添加coffelint支持

  • 改进默认设置

v0.0.6 (2014-09-08)

  • 添加mercurial支持

  • 在Travis上运行端到端测试

v0.0.5 (2014-05-09)

  • 添加代码检查器:ruby-lint,rubocop,checkstyle,pmd

  • 可以在配置中指定变量 %(REPO_HOME)s 和 %(DEFAULT_CONFIGS)s

  • 添加默认pylintrc配置

v0.0.4 (2014-05-08)

  • 添加代码检查器:html,tidy,scss

  • 添加覆盖默认配置的方法

  • Python3改进

v0.0.3 (2014-02-02)

  • 修复过滤器语法问题

  • 修复git解析器问题

  • 添加代码检查器(YAML,Ini,PHP),并改进PNG和JPEG的代码检查器。

  • 改进pylint配置。

  • 改进phpcs配置。

  • 检查程序是否可用,如果不可用则显示安装信息。

  • 缓存代码检查器的输出,以便后续调用更快。

v0.0.2 (2013-10-20)

  • 修复安装程序问题

v0.0.1 (2013-10-20)

  • 初始提交,包含基本功能。主要发布以收集对功能和计划的想法的反馈。

项目详情


下载文件

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

源分布

git-lint-0.1.2.tar.gz (42.1 kB 查看散列)

上传于 来源

由以下支持