自动更正库中的行长度

时间:2016-01-31 04:33:24

标签: ruby syntax rubocop

我正在开发一个庞大的项目,我们决定让所有代码符合每行80个字符。这是一个基于ruby的项目,包含C的包装。对于Ruby,我决定使用Rubocop并使用命令:

rubocop --only LineLength

我有1,714个错误,其中行的长度超过80个字符。除此之外,Rubocop还检测到许多其他错误,我现在想忽略它们。

我正在寻找最简单的方法来自动纠正所有线路长度违规,以满足C和Ruby中的80个字符限制。

1 个答案:

答案 0 :(得分:0)

请勿自动更改线路长度。

Linelength是指标,而非样式。样式通常可以交换,如双引号和单引号,使用hashrockets与ruby 2中引入的新哈希语法等。选择样式通常是一种品味问题,对程序本身几乎没有(如果有的话)影响。这就是样式自动更正的原因:更改它们不会改变语义。

指标包括linelength,classlengthABC-Size等。使用静态代码分析检查指标与检查样式完全不同。例如,将最大值设置为线宽不是品味问题,而是使用它来强制执行某种编程风格。程序员必须避免使用长变量名和深嵌套来保持线长度不受限制。

指标还可以指示代码中的问题。例如,太高的ABC大小表示方法可能做得太多。

除此之外,如果不是不可能的话,自动缩短所有代码行是非常困难的,因为ruby是一种非常复杂的语言。

这里有一些替代方案,而不是自动减少线长:

  • 通过启用AllowHeredoc和AllowURI选项,查看是否可以减少违规次数。在这里阅读https://rubocop.readthedocs.io/en/latest/cops_metrics/#metricslinelength
  • 运行rubocop --only LineLength --auto-gen-config并使用rubocops配置停止检查linelength。
  • 问问自己:通过减少线长可以获得什么价值?
  • 不要将太长的行视为违反风格,而是作为潜在问题的可能指标。试着找出那个问题,并解决它。