rubycritic 1.0.2 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +15 -0
  3. data/lib/rubycritic/analysers/attributes.rb +21 -0
  4. data/lib/rubycritic/analysers/churn.rb +5 -5
  5. data/lib/rubycritic/analysers/complexity.rb +6 -6
  6. data/lib/rubycritic/analysers/helpers/ast_node.rb +73 -0
  7. data/lib/rubycritic/analysers/{adapters → helpers}/config.reek +0 -0
  8. data/lib/rubycritic/analysers/{adapters → helpers}/flay.rb +0 -0
  9. data/lib/rubycritic/analysers/{adapters → helpers}/flog.rb +0 -0
  10. data/lib/rubycritic/analysers/helpers/methods_counter.rb +28 -0
  11. data/lib/rubycritic/analysers/helpers/modules_locator.rb +46 -0
  12. data/lib/rubycritic/analysers/{adapters → helpers}/reek.rb +0 -0
  13. data/lib/rubycritic/analysers/smells/flay.rb +9 -9
  14. data/lib/rubycritic/analysers/smells/flog.rb +8 -8
  15. data/lib/rubycritic/analysers/smells/reek.rb +8 -8
  16. data/lib/rubycritic/analysers_runner.rb +6 -6
  17. data/lib/rubycritic/cli.rb +2 -2
  18. data/lib/rubycritic/core/{analysed_file.rb → analysed_module.rb} +4 -7
  19. data/lib/rubycritic/modules_initializer.rb +14 -0
  20. data/lib/rubycritic/orchestrator.rb +5 -5
  21. data/lib/rubycritic/report_generators/code_file.rb +4 -4
  22. data/lib/rubycritic/report_generators/code_index.rb +2 -2
  23. data/lib/rubycritic/report_generators/overview.rb +2 -2
  24. data/lib/rubycritic/report_generators/smells_index.rb +13 -2
  25. data/lib/rubycritic/report_generators/templates/code_file.html.erb +10 -10
  26. data/lib/rubycritic/report_generators/templates/code_index.html.erb +7 -7
  27. data/lib/rubycritic/report_generators/templates/smells_index.html.erb +1 -1
  28. data/lib/rubycritic/report_generators/turbulence.rb +5 -5
  29. data/lib/rubycritic/report_generators/view_helpers.rb +4 -4
  30. data/lib/rubycritic/reporters/main.rb +7 -8
  31. data/lib/rubycritic/reporters/mini.rb +3 -3
  32. data/lib/rubycritic/revision_comparator.rb +12 -10
  33. data/lib/rubycritic/source_locator.rb +1 -1
  34. data/lib/rubycritic/version.rb +1 -1
  35. data/rubycritic.gemspec +3 -4
  36. data/test/analysers_test_helper.rb +1 -1
  37. data/test/lib/rubycritic/analysers/churn_test.rb +9 -9
  38. data/test/lib/rubycritic/analysers/complexity_test.rb +5 -5
  39. data/test/lib/rubycritic/analysers/helpers/methods_counter_test.rb +29 -0
  40. data/test/lib/rubycritic/analysers/helpers/modules_locator_test.rb +53 -0
  41. data/test/lib/rubycritic/analysers/smells/flay_test.rb +10 -12
  42. data/test/lib/rubycritic/analysers/smells/flog_test.rb +7 -7
  43. data/test/lib/rubycritic/analysers/smells/reek_test.rb +10 -10
  44. data/test/lib/rubycritic/core/analysed_module_test.rb +88 -0
  45. data/test/lib/rubycritic/report_generators/turbulence_test.rb +4 -4
  46. data/test/lib/rubycritic/report_generators/view_helpers_test.rb +10 -23
  47. data/test/lib/rubycritic/smells_status_setter_test.rb +1 -1
  48. data/test/lib/rubycritic/source_locator_test.rb +6 -6
  49. data/test/samples/{stats/empty_example.rb → empty.rb} +0 -0
  50. data/test/samples/{stats/example.rb → methods_count.rb} +0 -0
  51. data/test/samples/module_names.rb +18 -0
  52. data/test/samples/unparsable.rb +1 -0
  53. metadata +30 -23
  54. data/lib/rubycritic/analysers/adapters/ast_node.rb +0 -35
  55. data/lib/rubycritic/analysers/stats.rb +0 -34
  56. data/lib/rubycritic/files_initializer.rb +0 -15
  57. data/test/lib/rubycritic/analysers/stats_test.rb +0 -30
  58. data/test/lib/rubycritic/core/analysed_file_test.rb +0 -86
  59. data/test/samples/stats/unparsable_example.rb +0 -2
@@ -0,0 +1,53 @@
1
+ require "test_helper"
2
+ require "rubycritic/analysers/helpers/modules_locator"
3
+ require "rubycritic/core/analysed_module"
4
+ require "pathname"
5
+
6
+ describe Rubycritic::ModulesLocator do
7
+ describe "#names" do
8
+ context "when a file contains Ruby code" do
9
+ it "returns the names of all the classes and modules inside the file" do
10
+ analysed_module = Rubycritic::AnalysedModule.new(
11
+ :pathname => Pathname.new("test/samples/module_names.rb"),
12
+ :methods_count => 1
13
+ )
14
+ Rubycritic::ModulesLocator.new(analysed_module).names
15
+ .must_equal ["Foo", "Foo::Bar", "Foo::Baz", "Foo::Qux", "Foo::Quux::Corge"]
16
+ end
17
+ end
18
+
19
+ context "when a file is empty" do
20
+ it "returns the name of the file titleized" do
21
+ analysed_module = Rubycritic::AnalysedModule.new(
22
+ :pathname => Pathname.new("test/samples/empty.rb"),
23
+ :methods_count => 1
24
+ )
25
+ Rubycritic::ModulesLocator.new(analysed_module).names.must_equal ["Empty"]
26
+ end
27
+ end
28
+
29
+ context "when a file is unparsable" do
30
+ it "does not blow up and returns the name of the file titleized" do
31
+ analysed_module = Rubycritic::AnalysedModule.new(
32
+ :pathname => Pathname.new("test/samples/unparsable.rb"),
33
+ :methods_count => 1
34
+ )
35
+ capture_output_streams do
36
+ Rubycritic::ModulesLocator.new(analysed_module).names.must_equal ["Unparsable"]
37
+ end
38
+ end
39
+ end
40
+
41
+ context "when a file has no methods" do
42
+ it "returns the name of the file titleized" do
43
+ analysed_module = Rubycritic::AnalysedModule.new(
44
+ :pathname => Pathname.new("test/samples/no_methods.rb"),
45
+ :methods_count => 0
46
+ )
47
+ capture_output_streams do
48
+ Rubycritic::ModulesLocator.new(analysed_module).names.must_equal ["NoMethods"]
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -1,34 +1,32 @@
1
1
  require "test_helper"
2
2
  require "rubycritic/analysers/smells/flay"
3
- require "rubycritic/core/analysed_file"
3
+ require "rubycritic/core/analysed_module"
4
4
  require "pathname"
5
5
 
6
6
  describe Rubycritic::Analyser::FlaySmells do
7
7
  before do
8
- @analysed_file = Rubycritic::AnalysedFile.new(
8
+ @analysed_module = Rubycritic::AnalysedModule.new(
9
9
  :pathname => Pathname.new("test/samples/flay/smelly.rb"),
10
- :smells => [],
11
- :duplication => 0
12
10
  )
13
- analysed_files = [@analysed_file]
14
- Rubycritic::Analyser::FlaySmells.new(analysed_files).run
11
+ analysed_modules = [@analysed_module]
12
+ Rubycritic::Analyser::FlaySmells.new(analysed_modules).run
15
13
  end
16
14
 
17
- it "detects smells and adds them to analysed_files" do
18
- @analysed_file.smells.length.must_equal 1
15
+ it "detects smells and adds them to analysed_modules" do
16
+ @analysed_module.smells.length.must_equal 1
19
17
  end
20
18
 
21
19
  it "creates smells with messages" do
22
- smell = @analysed_file.smells.first
20
+ smell = @analysed_module.smells.first
23
21
  smell.message.must_be_instance_of String
24
22
  end
25
23
 
26
24
  it "creates smells with scores" do
27
- smell = @analysed_file.smells.first
25
+ smell = @analysed_module.smells.first
28
26
  smell.score.must_be_kind_of Numeric
29
27
  end
30
28
 
31
- it "calculates the mass of duplicate code and adds it to analysed_files" do
32
- @analysed_file.duplication.must_be(:>, 0)
29
+ it "calculates the mass of duplicate code and adds it to analysed_modules" do
30
+ @analysed_module.duplication.must_be(:>, 0)
33
31
  end
34
32
  end
@@ -3,22 +3,22 @@ require "rubycritic/analysers/smells/flog"
3
3
 
4
4
  describe Rubycritic::Analyser::FlogSmells do
5
5
  before do
6
- @analysed_file = AnalysedFileDouble.new(:path => "test/samples/flog/smelly.rb", :smells => [])
7
- analysed_files = [@analysed_file]
8
- Rubycritic::Analyser::FlogSmells.new(analysed_files).run
6
+ @analysed_module = AnalysedModuleDouble.new(:path => "test/samples/flog/smelly.rb", :smells => [])
7
+ analysed_modules = [@analysed_module]
8
+ Rubycritic::Analyser::FlogSmells.new(analysed_modules).run
9
9
  end
10
10
 
11
- it "detects smells and adds them to analysed_files" do
12
- @analysed_file.smells.length.must_equal 1
11
+ it "detects smells and adds them to analysed_modules" do
12
+ @analysed_module.smells.length.must_equal 1
13
13
  end
14
14
 
15
15
  it "creates smells with messages" do
16
- smell = @analysed_file.smells.first
16
+ smell = @analysed_module.smells.first
17
17
  smell.message.must_be_instance_of String
18
18
  end
19
19
 
20
20
  it "creates smells with scores" do
21
- smell = @analysed_file.smells.first
21
+ smell = @analysed_module.smells.first
22
22
  smell.score.must_be_kind_of Numeric
23
23
  end
24
24
  end
@@ -4,30 +4,30 @@ require "rubycritic/analysers/smells/reek"
4
4
  describe Rubycritic::Analyser::ReekSmells do
5
5
  context "when analysing a smelly file" do
6
6
  before do
7
- @analysed_file = AnalysedFileDouble.new(:path => "test/samples/reek/smelly.rb", :smells => [])
8
- analysed_files = [@analysed_file]
9
- Rubycritic::Analyser::ReekSmells.new(analysed_files).run
7
+ @analysed_module = AnalysedModuleDouble.new(:path => "test/samples/reek/smelly.rb", :smells => [])
8
+ analysed_modules = [@analysed_module]
9
+ Rubycritic::Analyser::ReekSmells.new(analysed_modules).run
10
10
  end
11
11
 
12
- it "detects smells and adds them to analysed_files" do
13
- @analysed_file.smells.length.must_equal 1
12
+ it "detects smells and adds them to analysed_modules" do
13
+ @analysed_module.smells.length.must_equal 1
14
14
  end
15
15
 
16
16
  it "creates smells with messages" do
17
- smell = @analysed_file.smells.first
17
+ smell = @analysed_module.smells.first
18
18
  smell.message.must_equal "has boolean parameter 'reek'"
19
19
  end
20
20
  end
21
21
 
22
22
  context "when analysing a file with smells ignored in config.reek" do
23
23
  before do
24
- @analysed_file = AnalysedFileDouble.new(:path => "test/samples/reek/not_smelly.rb", :smells => [])
25
- analysed_files = [@analysed_file]
26
- Rubycritic::Analyser::ReekSmells.new(analysed_files).run
24
+ @analysed_module = AnalysedModuleDouble.new(:path => "test/samples/reek/not_smelly.rb", :smells => [])
25
+ analysed_modules = [@analysed_module]
26
+ Rubycritic::Analyser::ReekSmells.new(analysed_modules).run
27
27
  end
28
28
 
29
29
  it "does not detect smells and does not add them to analysed files" do
30
- @analysed_file.smells.must_be_empty
30
+ @analysed_module.smells.must_be_empty
31
31
  end
32
32
  end
33
33
  end
@@ -0,0 +1,88 @@
1
+ require "test_helper"
2
+ require "rubycritic/core/analysed_module"
3
+ require "rubycritic/core/smell"
4
+
5
+ describe Rubycritic::AnalysedModule do
6
+ describe "attribute readers" do
7
+ before do
8
+ @name = "Foo"
9
+ @pathname = Pathname.new("foo.rb")
10
+ @smells = []
11
+ @churn = 1
12
+ @complexity = 2
13
+ @analysed_module = Rubycritic::AnalysedModule.new(
14
+ :name => @name,
15
+ :pathname => @pathname,
16
+ :smells => @smells,
17
+ :churn => @churn,
18
+ :complexity => @complexity
19
+ )
20
+ end
21
+
22
+ it "has a name reader" do
23
+ @analysed_module.name.must_equal @name
24
+ end
25
+
26
+ it "has a pathname reader" do
27
+ @analysed_module.pathname.must_equal @pathname
28
+ end
29
+
30
+ it "has a path reader" do
31
+ @analysed_module.path.must_equal @pathname.to_s
32
+ end
33
+
34
+ it "has a smells reader" do
35
+ @analysed_module.smells.must_equal @smells
36
+ end
37
+
38
+ it "has a churn reader" do
39
+ @analysed_module.churn.must_equal @churn
40
+ end
41
+
42
+ it "has a complexity reader" do
43
+ @analysed_module.complexity.must_equal @complexity
44
+ end
45
+ end
46
+
47
+ describe "#cost" do
48
+ it "returns the remediation cost of fixing the analysed_module" do
49
+ smells = [SmellDouble.new(:cost => 1), SmellDouble.new(:cost => 2)]
50
+ analysed_module = Rubycritic::AnalysedModule.new(:smells => smells, :complexity => 0)
51
+ analysed_module.cost.must_equal 3
52
+ end
53
+ end
54
+
55
+ describe "#complexity_per_method" do
56
+ context "when the file has no methods" do
57
+ it "returns a placeholder" do
58
+ analysed_module = Rubycritic::AnalysedModule.new(:complexity => 0, :methods_count => 0)
59
+ analysed_module.complexity_per_method.must_equal "N/A"
60
+ end
61
+ end
62
+
63
+ context "when the file has at least one method" do
64
+ it "returns the average complexity per method" do
65
+ analysed_module = Rubycritic::AnalysedModule.new(:complexity => 10, :methods_count => 2)
66
+ analysed_module.complexity_per_method.must_equal 5
67
+ end
68
+ end
69
+ end
70
+
71
+ describe "#has_smells?" do
72
+ it "returns true if the analysed_module has at least one smell" do
73
+ analysed_module = Rubycritic::AnalysedModule.new(:smells => [SmellDouble.new])
74
+ analysed_module.has_smells?.must_equal true
75
+ end
76
+ end
77
+
78
+ describe "#smells_at_location" do
79
+ it "returns the smells of an analysed_module at a certain location" do
80
+ location = Rubycritic::Location.new("./foo", "42")
81
+ smells = [Rubycritic::Smell.new(:locations => [location])]
82
+ analysed_module = Rubycritic::AnalysedModule.new(:smells => smells)
83
+ analysed_module.smells_at_location(location).must_equal smells
84
+ end
85
+ end
86
+ end
87
+
88
+ class SmellDouble < OpenStruct; end
@@ -2,16 +2,16 @@ require "test_helper"
2
2
  require "rubycritic/report_generators/turbulence"
3
3
 
4
4
  describe Rubycritic::Turbulence do
5
- describe "#data" do
5
+ describe "::data" do
6
6
  it "returns json data that maps pathname, churn and complexity to name, x and y" do
7
- files = [AnalysedFileDouble.new(:pathname => "./foo.rb", :churn => 1, :complexity => 2)]
7
+ files = [AnalysedModuleDouble.new(:name => "Foo", :churn => 1, :complexity => 2)]
8
8
  turbulence_data = Rubycritic::Turbulence.data(files)
9
9
  instance_parsed_json = JSON.parse(turbulence_data).first
10
- instance_parsed_json["name"].must_equal "./foo.rb"
10
+ instance_parsed_json["name"].must_equal "Foo"
11
11
  instance_parsed_json["x"].must_equal 1
12
12
  instance_parsed_json["y"].must_equal 2
13
13
  end
14
14
  end
15
15
  end
16
16
 
17
- class AnalysedFileDouble < OpenStruct; end
17
+ class AnalysedModuleDouble < OpenStruct; end
@@ -22,57 +22,44 @@ describe Rubycritic::ViewHelpers do
22
22
 
23
23
  describe "#asset_path" do
24
24
  it "creates a relative path to an asset" do
25
- generator.asset_path("stylesheets", "application.css").to_s
25
+ generator.asset_path("stylesheets/application.css").to_s
26
26
  .must_equal "assets/stylesheets/application.css"
27
27
  end
28
28
  end
29
29
  end
30
30
 
31
- context "when the file is in a subdirectory" do
32
- let(:generator) { GeneratorDouble.new("subdirectory/foo.html") }
31
+ context "when the file is n directories deep" do
32
+ let(:generator) { GeneratorDouble.new("lets/go/crazy/foo.html") }
33
33
 
34
34
  describe "#file_path" do
35
35
  context "when the other file is in the same directory" do
36
36
  it "creates a relative path to a file" do
37
- generator.file_path("subdirectory/bar.html").to_s.must_equal "bar.html"
37
+ generator.file_path("lets/go/crazy/bar.html").to_s.must_equal "bar.html"
38
38
  end
39
39
  end
40
40
 
41
41
  context "when the other file is in the root directory" do
42
42
  it "creates a relative path to a file" do
43
- generator.file_path("bar.html").to_s.must_equal "../bar.html"
43
+ generator.file_path("bar.html").to_s.must_equal "../../../bar.html"
44
44
  end
45
45
  end
46
- end
47
46
 
48
- describe "#asset_path" do
49
- it "creates a relative path to an asset" do
50
- generator.asset_path("stylesheets", "application.css").to_s
51
- .must_equal "../assets/stylesheets/application.css"
52
- end
53
- end
54
- end
55
-
56
- context "when the file is n directories deep" do
57
- let(:generator) { GeneratorDouble.new("lets/go/crazy/foo.html") }
58
-
59
- describe "#file_path" do
60
- context "when the other file is in the same directory" do
47
+ context "when the other file has n-1 directories in common" do
61
48
  it "creates a relative path to a file" do
62
- generator.file_path("lets/go/crazy/bar.html").to_s.must_equal "bar.html"
49
+ generator.file_path("lets/go/home/bar.html").to_s.must_equal "../home/bar.html"
63
50
  end
64
51
  end
65
52
 
66
- context "when the other file is in the root directory" do
53
+ context "when the other file is one directory deeper" do
67
54
  it "creates a relative path to a file" do
68
- generator.file_path("bar.html").to_s.must_equal "../../../bar.html"
55
+ generator.file_path("lets/go/crazy/everybody/bar.html").to_s.must_equal "everybody/bar.html"
69
56
  end
70
57
  end
71
58
  end
72
59
 
73
60
  describe "#asset_path" do
74
61
  it "creates a relative path to an asset" do
75
- generator.asset_path("stylesheets", "application.css").to_s
62
+ generator.asset_path("stylesheets/application.css").to_s
76
63
  .must_equal "../../../assets/stylesheets/application.css"
77
64
  end
78
65
  end
@@ -3,7 +3,7 @@ require "rubycritic/core/smell"
3
3
  require "rubycritic/smells_status_setter"
4
4
 
5
5
  describe Rubycritic::SmellsStatusSetter do
6
- describe "#smells" do
6
+ describe "::smells" do
7
7
  before do
8
8
  @smell = Rubycritic::Smell.new(:context => "#bar")
9
9
  @smells = [@smell]
@@ -13,21 +13,21 @@ describe Rubycritic::SourceLocator do
13
13
  Rubycritic::SourceLocator.new(paths).paths.must_equal paths
14
14
  end
15
15
 
16
- it "finds files through multiple paths" do
17
- paths = ["dir1/file1.rb", "file0.rb"]
18
- Rubycritic::SourceLocator.new(paths).paths.must_equal paths
19
- end
20
-
21
16
  it "finds all the files inside a given directory" do
22
17
  initial_paths = ["dir1"]
23
18
  final_paths = ["dir1/file1.rb"]
24
19
  Rubycritic::SourceLocator.new(initial_paths).paths.must_equal final_paths
25
20
  end
26
21
 
22
+ it "finds files through multiple paths" do
23
+ paths = ["dir1/file1.rb", "file0.rb"]
24
+ Rubycritic::SourceLocator.new(paths).paths.sort.must_equal paths
25
+ end
26
+
27
27
  it "finds all the files" do
28
28
  initial_paths = ["."]
29
29
  final_paths = ["dir1/file1.rb", "file0.rb"]
30
- Rubycritic::SourceLocator.new(initial_paths).paths.must_equal final_paths
30
+ Rubycritic::SourceLocator.new(initial_paths).paths.sort.must_equal final_paths
31
31
  end
32
32
 
33
33
  it "cleans paths of consecutive slashes and useless dots" do
File without changes
File without changes
@@ -0,0 +1,18 @@
1
+ module Foo
2
+ end
3
+
4
+ module Foo
5
+ class Bar
6
+ end
7
+
8
+ class Baz
9
+ end
10
+ end
11
+
12
+ class Foo::Qux
13
+ end
14
+
15
+ module Foo::Quux
16
+ class Corge
17
+ end
18
+ end
@@ -0,0 +1 @@
1
+ unparsable :<%=
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubycritic
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Guilherme Simoes
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-23 00:00:00.000000000 Z
11
+ date: 2014-07-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: virtus
@@ -156,8 +156,8 @@ dependencies:
156
156
  - - "~>"
157
157
  - !ruby/object:Gem::Version
158
158
  version: '1.0'
159
- description: |2
160
- Ruby Critic is a tool that detects and reports smells in Ruby classes, modules and methods.
159
+ description: RubyCritic is a tool that wraps around various static analysis gems to
160
+ provide a quality report of your Ruby code.
161
161
  email:
162
162
  - guilherme.rdems@gmail.com
163
163
  executables:
@@ -167,6 +167,7 @@ extra_rdoc_files: []
167
167
  files:
168
168
  - ".gitignore"
169
169
  - ".travis.yml"
170
+ - CHANGELOG.md
170
171
  - CONTRIBUTING.md
171
172
  - Gemfile
172
173
  - LICENSE.txt
@@ -174,25 +175,27 @@ files:
174
175
  - Rakefile
175
176
  - bin/rubycritic
176
177
  - lib/rubycritic.rb
177
- - lib/rubycritic/analysers/adapters/ast_node.rb
178
- - lib/rubycritic/analysers/adapters/config.reek
179
- - lib/rubycritic/analysers/adapters/flay.rb
180
- - lib/rubycritic/analysers/adapters/flog.rb
181
- - lib/rubycritic/analysers/adapters/reek.rb
178
+ - lib/rubycritic/analysers/attributes.rb
182
179
  - lib/rubycritic/analysers/churn.rb
183
180
  - lib/rubycritic/analysers/complexity.rb
181
+ - lib/rubycritic/analysers/helpers/ast_node.rb
182
+ - lib/rubycritic/analysers/helpers/config.reek
183
+ - lib/rubycritic/analysers/helpers/flay.rb
184
+ - lib/rubycritic/analysers/helpers/flog.rb
185
+ - lib/rubycritic/analysers/helpers/methods_counter.rb
186
+ - lib/rubycritic/analysers/helpers/modules_locator.rb
187
+ - lib/rubycritic/analysers/helpers/reek.rb
184
188
  - lib/rubycritic/analysers/smells/flay.rb
185
189
  - lib/rubycritic/analysers/smells/flog.rb
186
190
  - lib/rubycritic/analysers/smells/reek.rb
187
- - lib/rubycritic/analysers/stats.rb
188
191
  - lib/rubycritic/analysers_runner.rb
189
192
  - lib/rubycritic/cli.rb
190
193
  - lib/rubycritic/configuration.rb
191
- - lib/rubycritic/core/analysed_file.rb
194
+ - lib/rubycritic/core/analysed_module.rb
192
195
  - lib/rubycritic/core/location.rb
193
196
  - lib/rubycritic/core/rating.rb
194
197
  - lib/rubycritic/core/smell.rb
195
- - lib/rubycritic/files_initializer.rb
198
+ - lib/rubycritic/modules_initializer.rb
196
199
  - lib/rubycritic/orchestrator.rb
197
200
  - lib/rubycritic/report_generators/assets/javascripts/application.js
198
201
  - lib/rubycritic/report_generators/assets/javascripts/highcharts.src-4.0.1.js
@@ -235,12 +238,13 @@ files:
235
238
  - test/analysers_test_helper.rb
236
239
  - test/lib/rubycritic/analysers/churn_test.rb
237
240
  - test/lib/rubycritic/analysers/complexity_test.rb
241
+ - test/lib/rubycritic/analysers/helpers/methods_counter_test.rb
242
+ - test/lib/rubycritic/analysers/helpers/modules_locator_test.rb
238
243
  - test/lib/rubycritic/analysers/smells/flay_test.rb
239
244
  - test/lib/rubycritic/analysers/smells/flog_test.rb
240
245
  - test/lib/rubycritic/analysers/smells/reek_test.rb
241
- - test/lib/rubycritic/analysers/stats_test.rb
242
246
  - test/lib/rubycritic/configuration_test.rb
243
- - test/lib/rubycritic/core/analysed_file_test.rb
247
+ - test/lib/rubycritic/core/analysed_module_test.rb
244
248
  - test/lib/rubycritic/core/location_test.rb
245
249
  - test/lib/rubycritic/core/smell_test.rb
246
250
  - test/lib/rubycritic/core/smells_array_test.rb
@@ -250,6 +254,7 @@ files:
250
254
  - test/lib/rubycritic/source_control_systems/source_control_system_test.rb
251
255
  - test/lib/rubycritic/source_locator_test.rb
252
256
  - test/lib/rubycritic/version_test.rb
257
+ - test/samples/empty.rb
253
258
  - test/samples/flay/smelly.rb
254
259
  - test/samples/flog/complex.rb
255
260
  - test/samples/flog/smelly.rb
@@ -257,11 +262,11 @@ files:
257
262
  - test/samples/location/file0.rb
258
263
  - test/samples/location/file_with_different_extension.py
259
264
  - test/samples/location/file_with_no_extension
265
+ - test/samples/methods_count.rb
266
+ - test/samples/module_names.rb
260
267
  - test/samples/reek/not_smelly.rb
261
268
  - test/samples/reek/smelly.rb
262
- - test/samples/stats/empty_example.rb
263
- - test/samples/stats/example.rb
264
- - test/samples/stats/unparsable_example.rb
269
+ - test/samples/unparsable.rb
265
270
  - test/test_helper.rb
266
271
  homepage: https://github.com/whitesmith/rubycritic
267
272
  licenses:
@@ -286,17 +291,18 @@ rubyforge_project:
286
291
  rubygems_version: 2.4.1
287
292
  signing_key:
288
293
  specification_version: 4
289
- summary: Ruby code smell detector
294
+ summary: RubyCritic is a Ruby code quality reporter
290
295
  test_files:
291
296
  - test/analysers_test_helper.rb
292
297
  - test/lib/rubycritic/analysers/churn_test.rb
293
298
  - test/lib/rubycritic/analysers/complexity_test.rb
299
+ - test/lib/rubycritic/analysers/helpers/methods_counter_test.rb
300
+ - test/lib/rubycritic/analysers/helpers/modules_locator_test.rb
294
301
  - test/lib/rubycritic/analysers/smells/flay_test.rb
295
302
  - test/lib/rubycritic/analysers/smells/flog_test.rb
296
303
  - test/lib/rubycritic/analysers/smells/reek_test.rb
297
- - test/lib/rubycritic/analysers/stats_test.rb
298
304
  - test/lib/rubycritic/configuration_test.rb
299
- - test/lib/rubycritic/core/analysed_file_test.rb
305
+ - test/lib/rubycritic/core/analysed_module_test.rb
300
306
  - test/lib/rubycritic/core/location_test.rb
301
307
  - test/lib/rubycritic/core/smell_test.rb
302
308
  - test/lib/rubycritic/core/smells_array_test.rb
@@ -306,6 +312,7 @@ test_files:
306
312
  - test/lib/rubycritic/source_control_systems/source_control_system_test.rb
307
313
  - test/lib/rubycritic/source_locator_test.rb
308
314
  - test/lib/rubycritic/version_test.rb
315
+ - test/samples/empty.rb
309
316
  - test/samples/flay/smelly.rb
310
317
  - test/samples/flog/complex.rb
311
318
  - test/samples/flog/smelly.rb
@@ -313,9 +320,9 @@ test_files:
313
320
  - test/samples/location/file0.rb
314
321
  - test/samples/location/file_with_different_extension.py
315
322
  - test/samples/location/file_with_no_extension
323
+ - test/samples/methods_count.rb
324
+ - test/samples/module_names.rb
316
325
  - test/samples/reek/not_smelly.rb
317
326
  - test/samples/reek/smelly.rb
318
- - test/samples/stats/empty_example.rb
319
- - test/samples/stats/example.rb
320
- - test/samples/stats/unparsable_example.rb
327
+ - test/samples/unparsable.rb
321
328
  - test/test_helper.rb