吉特绒布
git-lint的Python项目详细描述
吉特-皮棉
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<git-lint是一个一步一步改进源代码的工具。
动机
通常,将编码样式挂接到现有项目上可能是一场噩梦。 一些原因可能包括:
- 代码库已经是一种度量,工具的输出是压倒性的。
- 开发人员对改变他们不拥有的产品线没有信心。
- 或者他们不知道该用什么工具。
功能
这个工具只提供一个 对所有修改过的文件进行清理的工具。对于每种文件类型,它可能使用更多 而不是一个色带或工具。此外,默认情况下,它只报告行的问题 添加或修改的。
当前绒布:
- css
- scss
- 蟒蛇
- pylint
- pycodestyle
- 通过jpegtran自定义
- 通过pngcrush定制
- 自定义via optipng
- 通过python json.tool模块
- 通过configparser模块定制
- html-linter
- tidy 使用来自模板-移除器的预处理
示例使用
下面是最简单的呼叫,有关详细列表,请参阅帮助:
$ 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只报告修改行的问题 (除了一些检查整个文件是否完好的线头)。 若要强制显示来自绒布的所有输出,请使用-f选项。
安装
您可以使用以下命令安装、升级或卸载git lint:
$ pip install git-lint $ pip install --upgrade git-lint $ pip uninstall git-lint
配置
git lint附带了一个默认配置,其中包括列出的所有linter 上面。如果您不喜欢这个列表,可以编写自己的配置并 它位于存储库根目录中名为 .gitlint.yaml 的文件中。你可以复印 文件https://github.com/sk--/git-lint/blob/master/gitlint/configs/config.yaml" rel="nofollow">https://github.com/sk-/git lint/blob/master/gitlint/configs/config.yaml 你的回购协议和修改。
如果您在任何命令中添加新的linter或添加新的标志,请 与我们分享,以便我们可以集成这些更改。
配置支持命令、需求和 参数:
- {回购首页}:回购的根。
- {默认配置}:默认配置文件的位置。
如果需要在命令中包含 {} 或 {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
汞配置
要使git lint在mercurial中具有更好的名称,必须添加以下内容 到您的.hgrc配置:
[alias] lint = !git-lint $@
要添加预提交挂钩,请添加以下内容:
[hooks] pretxncommit.hglint = pre-commit.hg-lint.sh > `tty`
上面的钩子有一个显示命令输出的方法。另外, 因为mercurial不提供(afaik)任何跳过钩子的方法,如果您想要强制提交 使用linter警告执行commit命令,如下所示:
$ NO_VERIFY=1 hg commit ...
请注意,mercurial大量使用commit来利用它们的所有命令/扩展。 我发现在使用common 动作为 复位 或 搁置
限制
在某些情况下,更改将在另一行中触发警告。那些案子是 不幸的是git lint没有处理,因为它只报告那些 被改进的。完全支持这个用例需要运行两次linter 只报道新行。最常见的情况是 未使用的导入或变量。假设我们有以下代码:
import foo foo.bar()
如果删除第二行,git lint将不会抱怨,因为警告是针对行的 1,未修改。
python版本
Python2.7是受支持的,它也应该适用于Python3.2、3.3和3.4。 由于缺少子进程,不支持Python2.6。请检查输出。
开发
对这个项目的帮助是非常受欢迎的,所以请随意创建一个问题或 通过http://githu发送请求b.com/sk-/git lint
使用nose进行测试,可以使用:
$ python setup.py nosetests $ nosetests
每次提交都会运行相同的工具,因此会捕获错误和样式问题 很早,
添加棉绒
只需要配置gitlint/config.yaml文件。我希望语法是self 解释性的。(提醒自己:不要这么懒,为此写一个合适的文档。)
TODOS和可能的功能
- 支持将目录作为参数
- 提供一个手册页,以便"git help lint"和"git lint–help"工作。我已经 有一个将用法转换为手册页的脚本,但我仍然需要 了解如何在系统上安装。
- 允许在设置绒布时运行命令或函数?这些可以 现在通过运行bash脚本包装linter来实现。基本原理 这是一些linter,比如jshint,只允许选项在 配置文件。现在可以通过 夹棉绒。
- 根据整个文件名甚至文件类型决定使用什么linter, 由命令文件返回。
- 为输出着色提供更好的选项,也许还有一种禁用的方法 它。同时检测是否支持颜色或是否为TTY。
- 增加对更多版本控制系统(svn,perforce)的支持。这应该是 很简单,这只是实现 gitlint/git.py或gitlint/hg.py.
- 支持Windows。