我希望真正降低我的代码质量作为一个新项目的开始。我认为我在代码测试覆盖率,遵守ruby / rails约定和安全性方面容易出现许多错误。
我遇到了像Rubocop这样的宝石和令人敬畏的Refactor Cop宝石,它们会返回有关违反惯例和其他警告的信息。
我也一直在使用guard gem来监控我的代码中的更改。
我也见过codeclimate但还不能提供资源。
建议哪些宝石用于生成哪些代码的摘要(我对rails / gems / libraries不太感兴趣)还没有合理的测试覆盖率?同样稍微宽泛一点 - 还有其他备受推崇的宝石/项目可能有助于提高我的代码质量。
或者甚至可能更广泛地说 - 在审核您的代码是否具有足够的质量/安全性时可以问自己什么是好问题(可能有助于我将来搜索工具)?
答案 0 :(得分:7)
我自己使用以下内容。我发现rubycritic
特别有用,我相信它是许多Code Climate评论的基础。
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.
答案 1 :(得分:3)
这里有几个问题,我会尽力解决每个问题。
建议哪些宝石用于生成哪些代码的摘要(我对rails / gems / libraries不太感兴趣)尚未进行合理的测试覆盖?
如果您希望简单地衡量测试覆盖率,simplecov
是您的最佳选择。
稍微宽泛一点 - 还有其他备受推崇的宝石/项目可能有助于提升我的代码质量。
This answer有很多其他宝石可以帮助自动执行代码质量检查。我会将Thoughtbot的HoundCI project添加为另一个工具 - 一旦将其推送到GitHub,它就会为您的代码添加注释......有点像机器人代码审查。它对于开源项目是免费的。
或者甚至可能更广泛地说 - 在审核您的代码是否具有足够的质量/安全性时可以问自己什么是好问题(可能有助于我将来搜索工具的目标)!
我们正在这里进入主观领域,但我鼓励你务实努力争取代码气候或100%测试覆盖率。例如,如果您为NASA工作,也许100%的测试覆盖率是有道理的...但是在您的Web应用程序上,争取100%的测试覆盖率可能导致为您不拥有的代码编写大量测试(例如Gem或Rails本身)。我鼓励你在这里看看Jay Fields的Working Effectively with Unit Tests更加细致入微(和经验丰富)的意见。
最终,您应该努力编写易于维护和更改的代码。 Bob Martin的书籍和讲座是一个很好的资源,您可以在his site找到。
答案 2 :(得分:3)
我最近遇到了awesome ruby list,它有各种各样的宝石,但特别是关于代码分析和指标的一个很好的部分,他们建议:
代码分析和指标
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.
答案 3 :(得分:1)
如果您感觉“冒险”,请尝试使用mutation testing等Mutant库交换常规代码覆盖率报告(例如simplecov
)。
维基百科:突变测试(或突变分析或程序突变)用于设计新的软件测试并评估现有软件测试的质量。变异测试涉及以小的方式修改程序。
Here is a pretty good breakdown Mutant Gem的作用以及它如何测试您的规格质量。
Here是Sferik在RaislConf2014上的讲话,讲述为什么Mutant比SimpleCov更有效率。
我说“冒险”因为我发现几乎不可能获得100%的覆盖率(即“杀死”所有突变)。