我正在尋找一個ruby代碼質量檢查器,可以捕獲或通知如果像'調試器'語句的東西被意外提交到紅寶石代碼。如果它可以查看rails項目並掃描任何可能包含ruby代碼(如haml文件)的地方,它也將是理想的。ruby代碼質量檢查器,可以捕獲調試器語句
這個想法是,這將與cruisecontrol.rb運行,並針對測試覆蓋漏洞的代碼庫。
我正在尋找一個ruby代碼質量檢查器,可以捕獲或通知如果像'調試器'語句的東西被意外提交到紅寶石代碼。如果它可以查看rails項目並掃描任何可能包含ruby代碼(如haml文件)的地方,它也將是理想的。ruby代碼質量檢查器,可以捕獲調試器語句
這個想法是,這將與cruisecontrol.rb運行,並針對測試覆蓋漏洞的代碼庫。
不要過度想它!只需編寫一個簡單的腳本即可在您的應用程序目錄中搜索它。
使用命令行grep
:
grep -r --include='*.rb' debugger .
使用ack
:
ack --type=ruby debugger
使用Ruby的grep
:
Dir['**/*.rb'].each do |path|
File.open(path, 'r') do |file|
file.grep /debugger/ do
puts path
end
end
end
(Ruby代碼從_why的Wearing Ruby Slippers to Work精心改編)
您也可能要考慮搜索過的Javascript文件"debugger"
,以及,可能"console.log"
等
您可能還希望使這一更加嚴格使用類似/^\s*debugger\s*$/
只匹配以減少誤報當它是唯一的行時。使其適用於HAML可能需要更多:/^\s*[-=]\s*debugger\s*$/
。
@Andrew Mashall很好的回答。對於我們的Rails項目,我們使用一個稍作修改的版本:
#!/usr/bin/env ruby
expressions = [/^\s*binding\.pry/, /^\s*debugger/, /^\s*console\.log/, /^\s*save_and_open_page/]
debuggers = []
dirs = `git ls-files |grep '\\(rb\\|haml\\|rake\\|js\\|coffee\\)$'`.split
dirs.each do |path|
File.open(path, 'r') do |file|
contents = file.read
expressions.each do |expr|
contents.match expr do
debuggers << path
end
end
end
end
raise "debugger statements found in #{debuggers.to_s}" unless debuggers.empty?
我們還加入到我們的.git/hooks/pre-commit
腳本,我們的持續集成構建仔細檢查,我們不亂放調試語句...
謝謝,這將會訣竅。 – Vince 2012-03-20 22:23:24
如果OP使用Git,這可以很好地作爲預提交鉤子。 – zetetic 2012-03-20 22:26:09