metric_fu-roodi 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. data/.gitignore +3 -0
  2. data/.rspec +2 -0
  3. data/Gemfile +6 -0
  4. data/History.txt +93 -0
  5. data/Manifest.txt +56 -0
  6. data/README.txt +98 -0
  7. data/Rakefile +35 -0
  8. data/bin/metric_fu-roodi +21 -0
  9. data/bin/metric_fu-roodi-describe +7 -0
  10. data/lib/roodi.rb +3 -0
  11. data/lib/roodi/checks.rb +18 -0
  12. data/lib/roodi/checks/abc_metric_method_check.rb +79 -0
  13. data/lib/roodi/checks/assignment_in_conditional_check.rb +32 -0
  14. data/lib/roodi/checks/case_missing_else_check.rb +20 -0
  15. data/lib/roodi/checks/check.rb +76 -0
  16. data/lib/roodi/checks/class_line_count_check.rb +28 -0
  17. data/lib/roodi/checks/class_name_check.rb +31 -0
  18. data/lib/roodi/checks/class_variable_check.rb +24 -0
  19. data/lib/roodi/checks/control_coupling_check.rb +20 -0
  20. data/lib/roodi/checks/cyclomatic_complexity_block_check.rb +41 -0
  21. data/lib/roodi/checks/cyclomatic_complexity_check.rb +50 -0
  22. data/lib/roodi/checks/cyclomatic_complexity_method_check.rb +42 -0
  23. data/lib/roodi/checks/empty_rescue_body_check.rb +32 -0
  24. data/lib/roodi/checks/for_loop_check.rb +20 -0
  25. data/lib/roodi/checks/line_count_check.rb +22 -0
  26. data/lib/roodi/checks/method_line_count_check.rb +29 -0
  27. data/lib/roodi/checks/method_name_check.rb +31 -0
  28. data/lib/roodi/checks/missing_foreign_key_index_check.rb +99 -0
  29. data/lib/roodi/checks/module_line_count_check.rb +28 -0
  30. data/lib/roodi/checks/module_name_check.rb +31 -0
  31. data/lib/roodi/checks/name_check.rb +16 -0
  32. data/lib/roodi/checks/npath_complexity_check.rb +75 -0
  33. data/lib/roodi/checks/npath_complexity_method_check.rb +29 -0
  34. data/lib/roodi/checks/parameter_number_check.rb +34 -0
  35. data/lib/roodi/core.rb +1 -0
  36. data/lib/roodi/core/checking_visitor.rb +26 -0
  37. data/lib/roodi/core/error.rb +17 -0
  38. data/lib/roodi/core/parser.rb +30 -0
  39. data/lib/roodi/core/runner.rb +81 -0
  40. data/lib/roodi/core/visitable_sexp.rb +25 -0
  41. data/lib/roodi/version.rb +3 -0
  42. data/lib/roodi_task.rb +35 -0
  43. data/roodi.gemspec +26 -0
  44. data/roodi.yml +25 -0
  45. data/spec/roodi/checks/abc_metric_method_check_spec.rb +89 -0
  46. data/spec/roodi/checks/assignment_in_conditional_check_spec.rb +105 -0
  47. data/spec/roodi/checks/case_missing_else_check_spec.rb +32 -0
  48. data/spec/roodi/checks/class_line_count_check_spec.rb +39 -0
  49. data/spec/roodi/checks/class_name_check_spec.rb +39 -0
  50. data/spec/roodi/checks/class_variable_check_spec.rb +17 -0
  51. data/spec/roodi/checks/control_coupling_check_spec.rb +23 -0
  52. data/spec/roodi/checks/cyclomatic_complexity_block_check_spec.rb +67 -0
  53. data/spec/roodi/checks/cyclomatic_complexity_method_check_spec.rb +200 -0
  54. data/spec/roodi/checks/empty_rescue_body_check_spec.rb +140 -0
  55. data/spec/roodi/checks/for_loop_check_spec.rb +18 -0
  56. data/spec/roodi/checks/method_line_count_check_spec.rb +56 -0
  57. data/spec/roodi/checks/method_name_check_spec.rb +76 -0
  58. data/spec/roodi/checks/missing_foreign_key_index_check_spec.rb +33 -0
  59. data/spec/roodi/checks/module_line_count_check_spec.rb +39 -0
  60. data/spec/roodi/checks/module_name_check_spec.rb +27 -0
  61. data/spec/roodi/checks/npath_complexity_method_check_spec.rb +53 -0
  62. data/spec/roodi/checks/parameter_number_check_spec.rb +47 -0
  63. data/spec/roodi/core/runner_spec.rb +25 -0
  64. data/spec/roodi/roodi.yml +2 -0
  65. data/spec/spec_helper.rb +3 -0
  66. metadata +149 -0
@@ -0,0 +1,56 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
+
3
+ describe Roodi::Checks::MethodLineCountCheck do
4
+ before(:each) do
5
+ @roodi = Roodi::Core::Runner.new(Roodi::Checks::MethodLineCountCheck.make({'line_count' => 1}))
6
+ end
7
+
8
+ it "should accept methods with less lines than the threshold" do
9
+ content = <<-END
10
+ def zero_line_method
11
+ end
12
+ END
13
+ @roodi.check_content(content)
14
+ @roodi.errors.should be_empty
15
+ end
16
+
17
+ it "should accept methods with the same number of lines as the threshold" do
18
+ content = <<-END
19
+ def one_line_method
20
+ 1
21
+ end
22
+ END
23
+ @roodi.check_content(content)
24
+ @roodi.errors.should be_empty
25
+ end
26
+
27
+ it "should reject methods with more lines than the threshold" do
28
+ content = <<-END
29
+ def two_line_method
30
+ puts 1
31
+ puts 2
32
+ end
33
+ END
34
+ @roodi.check_content(content)
35
+ errors = @roodi.errors
36
+ errors.should_not be_empty
37
+ errors[0].to_s.should eql("dummy-file.rb:1 - Method \"two_line_method\" has 2 lines. It should have 1 or less.")
38
+ end
39
+
40
+ it "should count only lines from the method" do
41
+ content = <<-END
42
+ def first_method
43
+ puts 1
44
+ end
45
+
46
+ def second_method
47
+ puts 1
48
+ puts 2
49
+ end
50
+ END
51
+ @roodi.check_content(content)
52
+ errors = @roodi.errors
53
+ errors.should_not be_empty
54
+ errors[0].to_s.should eql("dummy-file.rb:5 - Method \"second_method\" has 2 lines. It should have 1 or less.")
55
+ end
56
+ end
@@ -0,0 +1,76 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
+
3
+ describe Roodi::Checks::MethodNameCheck do
4
+ before(:each) do
5
+ @roodi = Roodi::Core::Runner.new(Roodi::Checks::MethodNameCheck.make)
6
+ end
7
+
8
+ it "should accept method names with underscores" do
9
+ content = <<-END
10
+ def good_method_name
11
+ end
12
+ END
13
+ @roodi.check_content(content)
14
+ @roodi.errors.should be_empty
15
+ end
16
+
17
+ it "should accept method names with numbers" do
18
+ content = <<-END
19
+ def good_method_1_name
20
+ end
21
+ END
22
+ @roodi.check_content(content)
23
+ @roodi.errors.should be_empty
24
+ end
25
+
26
+ it "should accept method names ending a question mark" do
27
+ content = <<-END
28
+ def good_method_name?
29
+ end
30
+ END
31
+ @roodi.check_content(content)
32
+ @roodi.errors.should be_empty
33
+ end
34
+
35
+ it "should accept method names ending an exclamation mark" do
36
+ content = <<-END
37
+ def good_method_name!
38
+ end
39
+ END
40
+ @roodi.check_content(content)
41
+ @roodi.errors.should be_empty
42
+ end
43
+
44
+ it "should accept method names ending an equals sign" do
45
+ content = <<-END
46
+ def good_method_name=
47
+ end
48
+ END
49
+ @roodi.check_content(content)
50
+ @roodi.errors.should be_empty
51
+ end
52
+
53
+ describe "when processing non-text based method names" do
54
+ ['<<', '>>', '==', '=', '<', '<=', '>', '>=', '[]', '[]='].each do |each|
55
+ it "should accept #{each} as a method name" do
56
+ content = <<-END
57
+ def #{each}
58
+ end
59
+ END
60
+ @roodi.check_content(content)
61
+ @roodi.errors.should be_empty
62
+ end
63
+ end
64
+ end
65
+
66
+ it "should reject camel case method names" do
67
+ content = <<-END
68
+ def badMethodName
69
+ end
70
+ END
71
+ @roodi.check_content(content)
72
+ errors = @roodi.errors
73
+ errors.should_not be_empty
74
+ errors[0].to_s.should eql("dummy-file.rb:1 - Method name \"badMethodName\" should match pattern /^[_a-z<>=\\[|+-\\/\\*`]+[_a-z0-9_<>=~@\\[\\]]*[=!\\?]?$/")
75
+ end
76
+ end
@@ -0,0 +1,33 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
+
3
+ describe Roodi::Checks::MissingForeignKeyIndexCheck do
4
+ before(:each) do
5
+ @roodi = Roodi::Core::Runner.new(Roodi::Checks::MissingForeignKeyIndexCheck.make)
6
+ end
7
+
8
+ it "should warn about a missing foreign key" do
9
+ content = <<-END
10
+ ActiveRecord::Schema.define(:version => 20091215233604) do
11
+ create_table "projects", :force => true do |t|
12
+ t.string "name"
13
+ end
14
+
15
+ create_table "revisions", :force => true do |t|
16
+ t.integer "project_id"
17
+ t.string "key"
18
+ end
19
+
20
+ add_index "revisions", ["project_id"], :name => "index_revisions_on_project_id"
21
+
22
+ create_table "source_files", :force => true do |t|
23
+ t.integer "revision_id"
24
+ t.string "filename"
25
+ end
26
+ end
27
+ END
28
+ @roodi.check_content(content, "schema.rb")
29
+ errors = @roodi.errors
30
+ errors.should_not be_empty
31
+ errors[0].to_s.should eql("schema.rb:1 - Table 'source_files' is missing an index on the foreign key 'revision_id'")
32
+ end
33
+ end
@@ -0,0 +1,39 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
+
3
+ describe Roodi::Checks::ModuleLineCountCheck do
4
+ before(:each) do
5
+ @roodi = Roodi::Core::Runner.new(Roodi::Checks::ModuleLineCountCheck.make({'line_count' => 1}))
6
+ end
7
+
8
+ it "should accept modules with less lines than the threshold" do
9
+ content = <<-END
10
+ module ZeroLineModule
11
+ end
12
+ END
13
+ @roodi.check_content(content)
14
+ @roodi.errors.should be_empty
15
+ end
16
+
17
+ it "should accept modules with the same number of lines as the threshold" do
18
+ content = <<-END
19
+ module OneLineModule
20
+ @foo = 1
21
+ end
22
+ END
23
+ @roodi.check_content(content)
24
+ @roodi.errors.should be_empty
25
+ end
26
+
27
+ it "should reject modules with more lines than the threshold" do
28
+ content = <<-END
29
+ module TwoLineModule
30
+ @foo = 1
31
+ @bar = 2
32
+ end
33
+ END
34
+ @roodi.check_content(content)
35
+ errors = @roodi.errors
36
+ errors.should_not be_empty
37
+ errors[0].to_s.should eql("dummy-file.rb:1 - Module \"TwoLineModule\" has 2 lines. It should have 1 or less.")
38
+ end
39
+ end
@@ -0,0 +1,27 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
+
3
+ describe Roodi::Checks::ModuleNameCheck do
4
+ before(:each) do
5
+ @roodi = Roodi::Core::Runner.new(Roodi::Checks::ModuleNameCheck.make)
6
+ end
7
+
8
+ it "should accept camel case module names starting in capitals" do
9
+ content = <<-END
10
+ module GoodModuleName
11
+ end
12
+ END
13
+ @roodi.check_content(content)
14
+ @roodi.errors.should be_empty
15
+ end
16
+
17
+ it "should reject module names with underscores" do
18
+ content = <<-END
19
+ module Bad_ModuleName
20
+ end
21
+ END
22
+ @roodi.check_content(content)
23
+ errors = @roodi.errors
24
+ errors.should_not be_empty
25
+ errors[0].to_s.should eql("dummy-file.rb:1 - Module name \"Bad_ModuleName\" should match pattern /^[A-Z][a-zA-Z0-9]*$/")
26
+ end
27
+ end
@@ -0,0 +1,53 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
+
3
+ describe Roodi::Checks::NpathComplexityMethodCheck do
4
+ before(:each) do
5
+ @roodi = Roodi::Core::Runner.new(Roodi::Checks::NpathComplexityMethodCheck.make({'complexity' => 0}))
6
+ end
7
+
8
+ def verify_content_complexity(content, complexity)
9
+ @roodi.check_content(content)
10
+ errors = @roodi.errors
11
+ errors.should_not be_empty
12
+ errors[0].to_s.should eql("dummy-file.rb:1 - Method name \"method_name\" n-path complexity is #{complexity}. It should be 0 or less.")
13
+ end
14
+
15
+ it "should default to 1" do
16
+ content = <<-END
17
+ def method_name
18
+ end
19
+ END
20
+ verify_content_complexity(content, 1)
21
+ end
22
+
23
+ it "should find an if block" do
24
+ content = <<-END
25
+ def method_name
26
+ call_foo if some_condition
27
+ end
28
+ END
29
+ verify_content_complexity(content, 2)
30
+ end
31
+
32
+ it "should find nested if block" do
33
+ pending "NPath Complexity implementation that can support 'else' blocks"
34
+ content = <<-END
35
+ def method_name
36
+ if (value1)
37
+ foo
38
+ else
39
+ bar
40
+ end
41
+ if (value2)
42
+ bam
43
+ else
44
+ baz
45
+ end
46
+ if (value3)
47
+ one
48
+ end
49
+ end
50
+ END
51
+ verify_content_complexity(content, 8)
52
+ end
53
+ end
@@ -0,0 +1,47 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
+
3
+ describe Roodi::Checks::ParameterNumberCheck do
4
+ before(:each) do
5
+ @roodi = Roodi::Core::Runner.new(Roodi::Checks::ParameterNumberCheck.make({'parameter_count' => 1}))
6
+ end
7
+
8
+ it "should accept methods with less lines than the threshold" do
9
+ content = <<-END
10
+ def zero_parameter_method
11
+ end
12
+ END
13
+ @roodi.check_content(content)
14
+ @roodi.errors.should be_empty
15
+ end
16
+
17
+ it "should accept methods with the same number of parameters as the threshold" do
18
+ content = <<-END
19
+ def one_parameter_method(first_parameter)
20
+ end
21
+ END
22
+ @roodi.check_content(content)
23
+ @roodi.errors.should be_empty
24
+ end
25
+
26
+ it "should reject methods with more parameters than the threshold" do
27
+ content = <<-END
28
+ def two_parameter_method(first_parameter, second_parameter)
29
+ end
30
+ END
31
+ @roodi.check_content(content)
32
+ errors = @roodi.errors
33
+ errors.should_not be_empty
34
+ errors[0].to_s.should eql("dummy-file.rb:1 - Method name \"two_parameter_method\" has 2 parameters. It should have 1 or less.")
35
+ end
36
+
37
+ it "should cope with default values on parameters" do
38
+ content = <<-END
39
+ def two_parameter_method(first_parameter = 1, second_parameter = 2)
40
+ end
41
+ END
42
+ @roodi.check_content(content)
43
+ errors = @roodi.errors
44
+ errors.should_not be_empty
45
+ errors[0].to_s.should eql("dummy-file.rb:1 - Method name \"two_parameter_method\" has 2 parameters. It should have 1 or less.")
46
+ end
47
+ end
@@ -0,0 +1,25 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../../spec_helper')
2
+
3
+ describe Roodi::Core::Runner do
4
+
5
+ describe "given a custom config file" do
6
+ before do
7
+ @runner = Roodi::Core::Runner.new
8
+ @runner.config= File.expand_path(File.dirname(__FILE__) + '/../roodi.yml')
9
+ end
10
+
11
+ it "uses check from it" do
12
+ # @runner.check_file(File.expand_path(File.dirname(__FILE__) + '/../fixtures/test_class.rb'))
13
+ content = <<-RUBY
14
+ class TestClass
15
+
16
+ def METHOD
17
+
18
+ end
19
+ end
20
+ RUBY
21
+ @runner.check_content(content)
22
+ @runner.errors.should be_empty
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,2 @@
1
+ MethodNameCheck:
2
+ pattern: !ruby/regexp /^[A-Z]+$/
@@ -0,0 +1,3 @@
1
+ $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + "/../lib"))
2
+ require 'roodi'
3
+ require 'rspec'
metadata ADDED
@@ -0,0 +1,149 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: metric_fu-roodi
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.2.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Marty Andrews
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-01-02 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: ruby_parser
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ description: Roodi stands for Ruby Object Oriented Design Inferometer
31
+ email: marty@cogent.co
32
+ executables:
33
+ - metric_fu-roodi
34
+ - metric_fu-roodi-describe
35
+ extensions: []
36
+ extra_rdoc_files: []
37
+ files:
38
+ - .gitignore
39
+ - .rspec
40
+ - Gemfile
41
+ - History.txt
42
+ - Manifest.txt
43
+ - README.txt
44
+ - Rakefile
45
+ - bin/metric_fu-roodi
46
+ - bin/metric_fu-roodi-describe
47
+ - lib/roodi.rb
48
+ - lib/roodi/checks.rb
49
+ - lib/roodi/checks/abc_metric_method_check.rb
50
+ - lib/roodi/checks/assignment_in_conditional_check.rb
51
+ - lib/roodi/checks/case_missing_else_check.rb
52
+ - lib/roodi/checks/check.rb
53
+ - lib/roodi/checks/class_line_count_check.rb
54
+ - lib/roodi/checks/class_name_check.rb
55
+ - lib/roodi/checks/class_variable_check.rb
56
+ - lib/roodi/checks/control_coupling_check.rb
57
+ - lib/roodi/checks/cyclomatic_complexity_block_check.rb
58
+ - lib/roodi/checks/cyclomatic_complexity_check.rb
59
+ - lib/roodi/checks/cyclomatic_complexity_method_check.rb
60
+ - lib/roodi/checks/empty_rescue_body_check.rb
61
+ - lib/roodi/checks/for_loop_check.rb
62
+ - lib/roodi/checks/line_count_check.rb
63
+ - lib/roodi/checks/method_line_count_check.rb
64
+ - lib/roodi/checks/method_name_check.rb
65
+ - lib/roodi/checks/missing_foreign_key_index_check.rb
66
+ - lib/roodi/checks/module_line_count_check.rb
67
+ - lib/roodi/checks/module_name_check.rb
68
+ - lib/roodi/checks/name_check.rb
69
+ - lib/roodi/checks/npath_complexity_check.rb
70
+ - lib/roodi/checks/npath_complexity_method_check.rb
71
+ - lib/roodi/checks/parameter_number_check.rb
72
+ - lib/roodi/core.rb
73
+ - lib/roodi/core/checking_visitor.rb
74
+ - lib/roodi/core/error.rb
75
+ - lib/roodi/core/parser.rb
76
+ - lib/roodi/core/runner.rb
77
+ - lib/roodi/core/visitable_sexp.rb
78
+ - lib/roodi/version.rb
79
+ - lib/roodi_task.rb
80
+ - roodi.gemspec
81
+ - roodi.yml
82
+ - spec/roodi/checks/abc_metric_method_check_spec.rb
83
+ - spec/roodi/checks/assignment_in_conditional_check_spec.rb
84
+ - spec/roodi/checks/case_missing_else_check_spec.rb
85
+ - spec/roodi/checks/class_line_count_check_spec.rb
86
+ - spec/roodi/checks/class_name_check_spec.rb
87
+ - spec/roodi/checks/class_variable_check_spec.rb
88
+ - spec/roodi/checks/control_coupling_check_spec.rb
89
+ - spec/roodi/checks/cyclomatic_complexity_block_check_spec.rb
90
+ - spec/roodi/checks/cyclomatic_complexity_method_check_spec.rb
91
+ - spec/roodi/checks/empty_rescue_body_check_spec.rb
92
+ - spec/roodi/checks/for_loop_check_spec.rb
93
+ - spec/roodi/checks/method_line_count_check_spec.rb
94
+ - spec/roodi/checks/method_name_check_spec.rb
95
+ - spec/roodi/checks/missing_foreign_key_index_check_spec.rb
96
+ - spec/roodi/checks/module_line_count_check_spec.rb
97
+ - spec/roodi/checks/module_name_check_spec.rb
98
+ - spec/roodi/checks/npath_complexity_method_check_spec.rb
99
+ - spec/roodi/checks/parameter_number_check_spec.rb
100
+ - spec/roodi/core/runner_spec.rb
101
+ - spec/roodi/roodi.yml
102
+ - spec/spec_helper.rb
103
+ homepage: http://github.com/metricfu/roodi
104
+ licenses:
105
+ - MIT
106
+ post_install_message:
107
+ rdoc_options: []
108
+ require_paths:
109
+ - lib
110
+ required_ruby_version: !ruby/object:Gem::Requirement
111
+ none: false
112
+ requirements:
113
+ - - ! '>='
114
+ - !ruby/object:Gem::Version
115
+ version: '0'
116
+ required_rubygems_version: !ruby/object:Gem::Requirement
117
+ none: false
118
+ requirements:
119
+ - - ! '>='
120
+ - !ruby/object:Gem::Version
121
+ version: '0'
122
+ requirements: []
123
+ rubyforge_project:
124
+ rubygems_version: 1.8.24
125
+ signing_key:
126
+ specification_version: 3
127
+ summary: Roodi stands for Ruby Object Oriented Design Inferometer
128
+ test_files:
129
+ - spec/roodi/checks/abc_metric_method_check_spec.rb
130
+ - spec/roodi/checks/assignment_in_conditional_check_spec.rb
131
+ - spec/roodi/checks/case_missing_else_check_spec.rb
132
+ - spec/roodi/checks/class_line_count_check_spec.rb
133
+ - spec/roodi/checks/class_name_check_spec.rb
134
+ - spec/roodi/checks/class_variable_check_spec.rb
135
+ - spec/roodi/checks/control_coupling_check_spec.rb
136
+ - spec/roodi/checks/cyclomatic_complexity_block_check_spec.rb
137
+ - spec/roodi/checks/cyclomatic_complexity_method_check_spec.rb
138
+ - spec/roodi/checks/empty_rescue_body_check_spec.rb
139
+ - spec/roodi/checks/for_loop_check_spec.rb
140
+ - spec/roodi/checks/method_line_count_check_spec.rb
141
+ - spec/roodi/checks/method_name_check_spec.rb
142
+ - spec/roodi/checks/missing_foreign_key_index_check_spec.rb
143
+ - spec/roodi/checks/module_line_count_check_spec.rb
144
+ - spec/roodi/checks/module_name_check_spec.rb
145
+ - spec/roodi/checks/npath_complexity_method_check_spec.rb
146
+ - spec/roodi/checks/parameter_number_check_spec.rb
147
+ - spec/roodi/core/runner_spec.rb
148
+ - spec/roodi/roodi.yml
149
+ - spec/spec_helper.rb