Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 在库中自动更正行长度_Ruby_Syntax_Rubocop - Fatal编程技术网

Ruby 在库中自动更正行长度

Ruby 在库中自动更正行长度,ruby,syntax,rubocop,Ruby,Syntax,Rubocop,我正在从事一个大型项目,我们决定使所有代码每行符合80个字符。这是一个基于ruby的项目,带有C的包装器。对于ruby,我决定使用Rubocop并使用以下命令: rubocop --only LineLength 我得到了1714个错误,其中行的长度大于80个字符。除此之外,Rubocop还检测到许多其他错误,我现在想忽略这些错误 我正在寻找一种最简单的方法来自动更正所有的行长度冲突,以满足C和Ruby中80个字符的限制。请不要自动更改行长度 线宽是度量单位,而不是样式。样式通常可以交换,比如

我正在从事一个大型项目,我们决定使所有代码每行符合80个字符。这是一个基于ruby的项目,带有C的包装器。对于ruby,我决定使用Rubocop并使用以下命令:

rubocop --only LineLength
我得到了1714个错误,其中行的长度大于80个字符。除此之外,Rubocop还检测到许多其他错误,我现在想忽略这些错误


我正在寻找一种最简单的方法来自动更正所有的行长度冲突,以满足C和Ruby中80个字符的限制。

请不要自动更改行长度

线宽是度量单位,而不是样式。样式通常可以交换,比如双引号与单引号,使用hashrockets与ruby 2中引入的新哈希语法等。选择样式通常是一个品味问题,对程序本身几乎没有影响(如果有的话)。这就是为什么样式会自动更正:更改样式不会更改语义

指标包括线条长度、长度等。使用静态代码分析检查度量与检查样式完全不同。例如,将最大长度设置为linelength并不是一个趣味问题,您更愿意使用它来强制执行某种编程风格。程序员必须避免长变量名和深嵌套,才能将行长度保持在限制之下

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

除此之外,由于ruby是一种非常复杂的语言,自动缩短所有代码行即使不是不可能,也是非常困难的

以下是一些替代方案,而不是自动减少线宽:

  • 查看是否可以通过启用AllowerDoc和AllowURI选项来减少违规数量。在这里阅读有关它们的文章
  • 运行rubocop--only LineLength--auto gen config并使用rubocops配置停止检查线宽
  • 扪心自问:减少线宽能带来什么价值
  • 不要把太长的行看作是风格冲突,而是潜在问题的一个可能指标。试着找出那个问题,并解决它

我建议您首先扫描代码,以确定行数超过80个字符的最常见原因。如果主要的罪魁祸首是长变量和方法名,我不会感到惊讶。如果是这样的话,只需缩短那些字符串,就可以大大减少“长”行(>80个字符)的数量。“仅仅”这个词可能不合适,因为这不是一项简单的任务。当然,您需要避免缩短Ruby内置方法的名称,以及一些带引号的字符串。(我说“some”是因为您可能会定义一个方法
doit
,然后发现它被引用为一个字符串:
a.send(“doit”)
)……您可以先在代码中扫描放入数组
arr
的字符串,然后
arr.uniq!。排序。下一步,删除明显不能缩短的字符串。然后创建一个将每个字符串映射到自身的散列,然后手动将每个值修改为更短但仍然有意义的值。确认散列中没有重复值后,使用散列来缩短代码中的字符串……此外,还有一些地方可以安全地断开行,例如在围绕块变量的垂直管道之后,不在带引号的字符串中的逗号,等等。您可以使用正则表达式来实现这一点。祝你好运!完成后,请用编辑报告,解释您所做的事情和遇到的任何陷阱。如果您报告您使用的每种技术所实现的长线减少百分比,这将特别有趣。如果你这样做了,请在评论中告诉我。对我来说,公式化的换行将使它们更加一致,并节省工作。认为一条长线表示某个更大的深层问题的想法意味着我们应该有一个检查线的复杂性的检查。通常情况下,尽管情况并非如此。行长度是一个潜在的问题,至少比每个方法的行数或每个文件的行数多一个数量级。对我来说,遗传病比长线更糟糕。