Add method complexity check to CI

Signed-off-by: Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
This commit is contained in:
Dmitriy Zaporozhets 2015-11-10 18:34:05 +01:00
parent 463fc52fa8
commit 58429d9b26
No known key found for this signature in database
GPG Key ID: 627C5F589F467F17
4 changed files with 36 additions and 0 deletions

View File

@ -73,3 +73,10 @@ brakeman:
tags:
- ruby
- mysql
flog:
script:
- bundle exec rake flog
tags:
- ruby
- mysql

View File

@ -259,6 +259,7 @@ group :development, :test do
gem 'rubocop', '~> 0.28.0', require: false
gem 'coveralls', '~> 0.8.2', require: false
gem 'simplecov', '~> 0.10.0', require: false
gem 'flog', require: false
gem 'benchmark-ips', require: false
end

View File

@ -194,6 +194,9 @@ GEM
ffi (1.9.10)
fission (0.5.0)
CFPropertyList (~> 2.2)
flog (4.3.2)
ruby_parser (~> 3.1, > 3.1.0)
sexp_processor (~> 4.4)
flowdock (0.7.0)
httparty (~> 0.7)
multi_json
@ -821,6 +824,7 @@ DEPENDENCIES
enumerize (~> 0.7.0)
factory_girl_rails (~> 4.3.0)
ffaker (~> 2.0.0)
flog
fog (~> 1.25.0)
font-awesome-rails (~> 4.2)
foreman

24
lib/tasks/flog.rake Normal file
View File

@ -0,0 +1,24 @@
desc 'Code complexity analyze via flog'
task :flog do
output = %x(bundle exec flog -m app/ lib/gitlab)
exit_code = 0
output = output.lines
# Skip total complexity score
output.shift
# Skip some trash info
output.shift
output.each do |line|
score, method = line.split(" ")
score = score.to_i
if score > 40
exit_code = 1
puts "High complexity in #{method}. Score: #{score}"
end
end
exit exit_code
end