2015-03-13 25 views
3

我期待着真正降低我的代碼質量作爲開始一個新項目。我認爲我在代碼測試覆蓋率,遵守ruby/rails慣例和安全性方面存在很多錯誤。寶石,以協助監控代碼質量

我遇到過像Rubocop和真棒Refactor Cop這樣的寶石,它返回有關約定違規和其他警告的信息。

我也一直在使用guard gem監測對我的測試中我的代碼更改。

我也看到codeclimate,但仍無法投入資源到它。其中被推薦用於生產什麼代碼摘要寶石

(我在軌/寶石/庫不感興趣)下明智的測試覆蓋率尚未?也稍寬一些 - 是否還有其他備受推崇的寶石/項目可能有助於提升我的代碼質量。

或者甚至更廣泛的 - 什麼都是很好的問題要問自己,同時審查,如果你的代碼是足夠的質量/安全的(可能會幫助我的目標在未來的工具搜索)!

+0

另外,爲了記錄我使用git! – Huw 2015-03-13 15:46:30

+1

查看代碼質量報告[rubycritic](https://github.com/whitesmith/rubycritic)。 – 2015-03-13 15:50:54

回答

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

所有優秀的寶石非常感謝。 – Huw 2015-03-14 20:00:55

+1

我可以證實我現在已經開始使用所有這些 - 它們結合在一起給我提供了精彩的報告,以表明我可以在哪裏提高代碼的質量。 非常感謝 – Huw 2015-03-31 18:32:07

+0

非常歡迎!高興得到了幫助:) – 2015-05-06 16:30:40

3

有在這裏兩個問題,我會盡我所能來解決每一個。

哪些寶石被推薦用於生成什麼代碼的摘要(我對rails/gems/libraries不太感興趣)還沒有經過明智的測試覆蓋?

如果您正在尋找簡單測量測試覆蓋範圍simplecov是您的最佳選擇。

也稍寬 - 是否有任何其他備受推崇的寶石/項目可能有助於提高我的代碼質量。

This answer有一個很好的其他寶石列表,可以幫助自動化代碼質量檢查。我會添加Thoughtbot的HoundCI project作爲另一個工具 - 一旦你將它推到GitHub上,它就會爲你的代碼添加評論......就像機器人代碼審查一樣。它對開源項目是免費的。

或者甚至更廣泛地 - 回顧您的代碼是否具有足夠的質量/安全性時可能會問自己的問題有哪些?(可能有助於我在將來尋找工具)!

我們在這裏進入主觀領域,但我會鼓勵您務必爭取A Code Climate或100%測試覆蓋率。例如,如果你爲美國國家航空航天局工作,或許100%的測試覆蓋率是有道理的......但是在你的網絡應用程序中,爭取100%的測試覆蓋率可能會導致爲你不擁有的代碼編寫大量測試(例如寶石或Rails本身)。我鼓勵你在這裏看一下Jay Fields的Working Effectively with Unit Tests更多細微差別(和經驗豐富)的觀點。

最終,您應該努力編寫易於維護和更改的代碼。鮑勃馬丁的書籍和會談是一個很好的資源,你可以在his site找到。

+0

又想到了!我剛安裝波旁酒和整潔的:)他們正在迅速成爲我的整個堆棧! 非常感謝這個全面的答案 - 併爲我的最終風險耐心地進入主觀領域。 – Huw 2015-03-13 17:04:22

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. 
1

如果您感覺「冒險」,請嘗試交換通用代碼覆蓋率報告(例如simplecov)與mutation testing庫(例如Mutant)。

維基百科:突變測試(或突變分析或程序突變)用於設計新的軟件測試和評估現有軟件測試的質量。突變測試涉及以小的方式修改程序。

  • 什麼突變寶石做,以及如何測試您的規格質量Here is a pretty good breakdown

  • Here是Sferik從RaislConf2014談到的,爲什麼Mutant比SimpleCov更有效率。

我說「冒險」,因爲我發現幾乎不可能獲得100%的覆蓋率(即'殺死'所有突變)。

+1

這聽起來超級有趣!感謝您的建議! – Huw 2017-05-07 16:00:19