吉特绒布

git-lint的Python项目详细描述


吉特-皮棉

<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< https://travis-ci.org/sk-/git-lint.svg?branch=masterhttps://coveralls.io/repos/sk-/git-lint/badge.svg?

git-lint是一个一步一步改进源代码的工具。

动机

通常,将编码样式挂接到现有项目上可能是一场噩梦。 一些原因可能包括:

  • 代码库已经是一种度量,工具的输出是压倒性的。
  • 开发人员对改变他们不拥有的产品线没有信心。
  • 或者他们不知道该用什么工具。

功能

这个工具只提供一个 对所有修改过的文件进行清理的工具。对于每种文件类型,它可能使用更多 而不是一个色带或工具。此外,默认情况下,它只报告行的问题 添加或修改的。

当前绒布:

  • php
  • javascript
  • jpeg
    • 通过jpegtran自定义
  • 巴布亚新几内亚
  • RST
  • json
  • 山药
  • yamllint
  • ini
    • 通过configparser模块定制
  • HTML
  • 红宝石
  • ruby-lint
  • rubocop
  • UL>
  • pmd (它需要将脚本run.sh放在您的路径中)
  • 检查样式
  • 咖啡脚本
  • C++<
  • cpplint
  • 示例使用

    下面是最简单的呼叫,有关详细列表,请参阅帮助:

    $ 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。

    欢迎加入QQ群-->: 979659372 Python中文网_新手群

    推荐PyPI第三方库


    热门话题
    由于java的原因,maven无法运行代码。lang.NoClassDefFoundError:com/fasterxml/jackson/annotation/JsonMerge   Android项目中的java Creative SDK图像编辑器UI   java如何在Android Studio中使用DataOutputStream上传文件并将其他参数传递到web服务器   java倒计时服务打开时崩溃   java将RubyonRails项目转换为JRubyonRails项目   java我的图库意图是不显示图像?为什么?   java如何在春季启动时跳过mongodb/   java@Autowired在Spring中是如何实现的   甲骨文Akka java。util。同时发生的timeoutexception线程池频繁超时   java maven依赖项对spring启动应用程序有何影响?   java Firestore执行复合查询,未截获事件“已修改”   java ItemStreamException:未能初始化读取器,原因是:IllegalStateException:流已初始化。重新开放前关闭   java将空标记解组到集合的新实例中   使用AspectJ的java新手:无法调用aspect   java查找棋类游戏的所有组合   你为什么要这样做and==与Java中的equals方法不一样吗?   如何对使用JavaUUID的代码进行单元测试?