rubycritic 1.0.2 → 1.1.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 (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