当我使用C#或Perl时,有一些有用的工具,如StyleCop,FxCop,Perl :: Critic和Perltidy。他们可以自动检查或格式化我的代码。那么,Ruby或Rails有没有相同的工具?我在谷歌上找到了一些工具,但我觉得它们不经常维护。
答案 0 :(得分:23)
我尝试过两种不同的工具:rubocop和Cane。在测试中,我发现rubocop提供的警告几乎是手杖的两倍(并且rubocop报告了Cane报告的所有内容)。所以,我推荐使用rubocop。
基于Ruby Style Guide的Ruby代码样式检查器。
您可以将其安装为gem:
gem install rubocop
(以上可能需要使用sudo
作为命令的前缀,具体取决于您的设置。)
通过从命令行运行具有相同名称的命令来使用rubocop。如果您提供文件作为参数,rubocop会检查这些文件。如果您提供目录作为参数rubocop以递归方式检查目录中的Ruby文件,即在给定目录及其所有子目录中。如果不提供参数,则以递归方式检查工作目录。
这是一个例子。给出以下文件
say="I am not in style"
puts(say)
['cow','cat','cake'].each{|i| print i+' '}
robucop报道如下:
$ rubocop ~/test/rubocop.rb == /home/nn/test/rubocop.rb == C: 1: Missing encoding comment. C: 1: Surrounding space missing for operator '='. C: 4: Surrounding space missing for operator '+'. C: 4: Surrounding space missing for '{'. C: 4: Space missing to the left of '}'. C: 4: Space missing after comma. C: 4: Space missing after comma. C: 1: Prefer single-quoted strings when you don't need string interpolation or special symbols. 1 files inspected, 8 offences detected
请注意,rubocop可以输出Emacs可以通过-e
选项解析的警告。
Cane是一种检查代码风格的工具。它可以是integrated with Rake。
您可以将其安装为gem:
gem install cane
(以上可能需要使用sudo
作为命令的前缀,具体取决于您的设置。)
要使用它,请在要检查的目录或文件上运行cane
。
答案 1 :(得分:11)
在https://www.ruby-toolbox.com/categories/code_metrics的Ruby工具箱中列出了一些样式检查器。
此外,打开警告可以检查某些类型的错误代码。使用$VERBOSE = true
或listed here的其中一种方式执行此操作。
答案 2 :(得分:1)
至于代码检查器,http://ruby.sadi.st/Ruby_Sadist.html是一个很好的库集合。值得一提的是除了红宝石工具箱,因为它们经常一起使用(并由同一群人编写)。
至于格式化程序,我经常会去看看是否有任何问题,但答案仍然是否定的。除了自动缩进之外,任何有价值的编辑都可以做或者已经有插件,我知道没有格式化器。我听说有人把它归咎于难以解析的ruby,但是ruby parsers do exist,所以谁知道为什么会这样。