有没有办法用RuboCop进行增量掉毛?

问题描述

我有一个已维护多年的Ruby代码库。当我使用RuboCop来检查代码样式时,它会给我成千上万的冒犯。有没有办法使用RuboCop来仅检查新添加的代码或新修改的代码,并仅报告该代码的违规行为?

解决方法

Rubocop可通过多种方式帮助您。

如果您运行

rubocop --auto-gen-config

Rubocop将为您生成两个配置文件:几乎为空的.rubocop.yml,其中仅包含一个密钥:

inherit_from: .rubocop_todo.yml

还有一个.rubocop_todo.yml,它会基于文件逐个禁用代码库中发现的所有违法行为:

# This configuration was generated by
# `rubocop --auto-gen-config`
# on 2020-09-11 06:20:56 UTC using RuboCop version 0.90.0.
# The point is for the user to remove these configuration records
# one by one as the offenses are removed from the code base.
# Note that changes in the inspected code,or installation of new
# versions of RuboCop,may require this file to be generated again.

# Offense count: 1
# Cop supports --auto-correct.
Layout/SpaceAfterMethodName:
  Exclude:
    - 'test.rb'

# Offense count: 1
# Cop supports --auto-correct.
# Configuration parameters: AllowUnusedKeywordArguments,IgnoreEmptyMethods,IgnoreNotImplementedMethods.
Lint/UnusedMethodArgument:
  Exclude:
    - 'test.rb'

此文件用于两件事:

  • 如果您组织的样式指南与默认的Rubocop配置不同,则可以将TODO中的攻击内容剪切并粘贴到“真实”配置文件中,并在全局范围内永久禁用它。

  • 您可以将TODO文件用作实际的TODO列表,并一一删除排除项,并在有时间的时候一一修复违规。

但是,请注意,排除项是基于文件的,而不是基于行的,因此您只能全局或按文件禁用警察。当您对现有文件进行更改时,新添加的代码还将禁用那些警察,因此,最好先对文件进行掉毛并修复所有现有的违规行为。

还请注意,您可能必须使用--exclude-limit COUNT选项,因为如果有多个COUNT文件具有相同的冒犯行为,那么Rubocop只会全局禁用它。默认值为15,因此应将其设置为大于项目中文件总数的值。

另一个有用的参数是

rubocop --safe-auto-correct --disable-uncorrectable

这将安全地自动更正所有可以自动更正的犯罪,并添加注释以使警察无法进行不可更正的犯罪。

但是,我认为这实际上并不是Rubocop的工作。您的报告系统应该有一种记录“基准”的方法,并且只能报告与该基准的偏差。

,

我发现pronto-rubocop可以胜任

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...