Ruby on rails Gems帮助监控代码质量

Ruby on rails Gems帮助监控代码质量,ruby-on-rails,testing,Ruby On Rails,Testing,作为一个新项目的开始,我希望真正降低我的代码质量。我认为我在代码测试覆盖率、遵守ruby/rails约定和安全性方面容易犯很多错误 我遇到过一些gems,比如和awesome,它们返回有关违反约定和其他警告的信息 我还一直在使用来根据测试监控代码中的更改 我也看到了,但还不能为此投入资源 哪些gem被推荐用于生成哪些代码的摘要(我对rails/gems/libraries不太感兴趣)还没有在合理的测试范围内?还有一点更广泛——是否还有其他备受尊敬的gem/项目可以帮助提高我的代码质量 或者更广泛

作为一个新项目的开始,我希望真正降低我的代码质量。我认为我在代码测试覆盖率、遵守ruby/rails约定和安全性方面容易犯很多错误

我遇到过一些gems,比如和awesome,它们返回有关违反约定和其他警告的信息

我还一直在使用来根据测试监控代码中的更改

我也看到了,但还不能为此投入资源

哪些gem被推荐用于生成哪些代码的摘要(我对rails/gems/libraries不太感兴趣)还没有在合理的测试范围内?还有一点更广泛——是否还有其他备受尊敬的gem/项目可以帮助提高我的代码质量


或者更广泛地说,在检查代码是否具有足够的质量/安全性时,您可以问自己哪些好问题(可能有助于我将来搜索工具)

我自己使用以下方法。我发现rubycritic非常有用,我相信它是许多代码气候评论的基础

sandi_meter
是一种我没有用得太多的方法,但强烈鼓励使用较小的方法

我还强烈建议使用
simplecov
来帮助您评估代码覆盖率。代码覆盖率决不是解决任何代码问题的灵丹妙药,但它至少可以确保您不会完全遗漏代码的各个部分

完整列表:

  gem 'traceroute' # Checks for undefined routes and unreachable actions.
  gem 'bullet' # Checks for query optimizations.
  gem 'rails_best_practices' # Checks for code optimization.
  gem 'rubycritic' # Checks for code optimization.
  gem 'sandi_meter' # Checks for compliance to Sandi Metz's rules for developers.
  gem 'simplecov' #Enables coverage analysis of code.

这里有几个问题,我会尽力解决每个问题

哪些gem被推荐用于生成哪些代码的摘要(我对rails/gems/libraries不太感兴趣)还没有在合理的测试范围内

如果您希望简单地测量测试覆盖率
simplecov
是您的最佳选择

还有一点更广泛——是否还有其他备受尊敬的gem/项目可以帮助提高我的代码质量

有一个很好的清单,可以帮助自动化代码质量检查的其他宝石。我将添加Thoughtbot作为另一个工具-它会在您将代码推送到GitHub后向您的代码添加注释。。。有点像机器人代码审查。它对开源项目是免费的

或者更广泛地说,在检查代码是否具有足够的质量/安全性时,您可以问自己哪些好问题(可能有助于我将来搜索工具)

我们正在进入主观领域,但我鼓励您在争取代码环境或100%测试覆盖率方面要务实。例如,如果你为美国宇航局工作,也许100%的测试覆盖率是有意义的。。。但在您的web应用程序上,争取100%的测试覆盖率可能会导致为您不拥有的代码编写大量测试(例如Gem或Rails本身)。我鼓励你看看杰伊·菲尔兹(Jay Fields)的文章,从中获得更微妙(更老练)的观点


最终,您应该努力编写易于维护和更改的代码。Bob Martin的书和演讲是一个很好的资源,你可以在上面找到。

我最近遇到了一本书,书中有各种各样的精华,特别是关于代码分析和度量的一个很好的章节,他们建议:

代码分析和指标

gem 'Barkeep' # Barkeep is a fast, fun way to review code. Engineering organizations can use it to keep the bar high.
gem 'Brakeman' # A static analysis security vulnerability scanner for Ruby on Rails applications.
gem 'Cane' # Code quality threshold checking as part of your build.
gem 'Coverband' # Rack middleware to help measure production code coverage.
gem 'Flay' # Flay analyzes code for structural similarities. Differences in literal values, variable, class, method names, whitespace, programming style, braces vs do/end, etc are all ignored. Making this totally rad.
gem 'Flog' # Flog reports the most tortured code in an easy to read pain report. The higher the score, the more pain the code is in.
gem 'fukuzatsu' # Complexity analysis tool with a rich web fron't# nd.
gem 'MetricFu' # A fist full of code metrics.
gem 'Pronto' # Quick automated code review of your changes.
gem 'rails_best_practices' # A code metric tool for rails projects.
gem 'Reek' # Code smell detector for Ruby.
gem 'Rubocop' # A static code analyzer, based on the community Ruby style guide.
gem 'Rubycritic' # A Ruby code quality reporter.
gem 'SimpleCov' # Code coverage for Ruby 1.9+ with a powerful configuration library and automatic merging of coverage across test suites.
如果您感到“有冒险精神”,请尝试将常规代码覆盖率报告(例如,
simplecov
)与库交换,例如

维基百科:变异测试(或变异分析或程序变异)用于设计新的软件测试和评估现有软件测试的质量。突变测试涉及以小的方式修改程序

  • 突变宝石做什么以及它如何测试你的规格质量

  • 这是斯弗里克在2014年RaislConf2014的演讲,关于为什么突变体比SimpleCov更有效


我之所以说“冒险”,是因为我发现几乎不可能获得100%的覆盖率(即“杀死”所有突变)

另外,为了记录在案,我正在使用git!查看代码质量报告。再次思考!我刚刚安装了波旁威士忌和尼特:)它们正迅速成为我的全部产品!非常感谢这个全面的答案——以及对我最终进入主观领域的耐心。我可以确认,我现在已经开始使用所有这些——它们结合起来为我提供了出色的报告,以建议我可以在哪里改进代码的质量。非常感谢这听起来非常有趣!!谢谢你的建议!