rubycritic 0.0.5 → 0.0.16

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 (96) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +10 -0
  3. data/README.md +72 -11
  4. data/bin/rubycritic +2 -0
  5. data/lib/rubycritic/adapters/complexity/flog.rb +22 -0
  6. data/lib/rubycritic/adapters/smell/flay.rb +68 -0
  7. data/lib/rubycritic/adapters/smell/flog.rb +62 -0
  8. data/lib/rubycritic/adapters/smell/reek.rb +44 -0
  9. data/lib/rubycritic/analysers/churn.rb +19 -0
  10. data/lib/rubycritic/analysers/config.reek +8 -0
  11. data/lib/rubycritic/analysers/flay.rb +15 -0
  12. data/lib/rubycritic/analysers/flog.rb +1 -2
  13. data/lib/rubycritic/analysers/stats.rb +31 -0
  14. data/lib/rubycritic/analysers_runner.rb +15 -14
  15. data/lib/rubycritic/cli.rb +35 -14
  16. data/lib/rubycritic/configuration.rb +24 -0
  17. data/lib/rubycritic/core/analysed_file.rb +50 -0
  18. data/lib/rubycritic/{location.rb → core/location.rb} +6 -2
  19. data/lib/rubycritic/core/rating.rb +22 -0
  20. data/lib/rubycritic/{smell.rb → core/smell.rb} +5 -12
  21. data/lib/rubycritic/files_initializer.rb +15 -0
  22. data/lib/rubycritic/orchestrator.rb +23 -0
  23. data/lib/rubycritic/report_generators/assets/javascripts/application.js +87 -8
  24. data/lib/rubycritic/report_generators/assets/javascripts/highcharts.src-4.0.1.js +17672 -0
  25. data/lib/rubycritic/report_generators/assets/javascripts/jquery.floatThead-v1.2.7.js +754 -0
  26. data/lib/rubycritic/report_generators/assets/javascripts/jquery.scrollTo-1.4.11.js +186 -0
  27. data/lib/rubycritic/report_generators/assets/javascripts/jquery.tablesorter-2.0.js +1031 -0
  28. data/lib/rubycritic/report_generators/assets/javascripts/jquery.timeago-v1.4.1.js +214 -0
  29. data/lib/rubycritic/report_generators/assets/stylesheets/application.css +204 -1
  30. data/lib/rubycritic/report_generators/assets/stylesheets/prettify.custom_theme.css +1 -4
  31. data/lib/rubycritic/report_generators/base.rb +49 -0
  32. data/lib/rubycritic/report_generators/code_file.rb +38 -0
  33. data/lib/rubycritic/report_generators/code_index.rb +24 -0
  34. data/lib/rubycritic/report_generators/current_code_file.rb +17 -0
  35. data/lib/rubycritic/report_generators/line.rb +31 -0
  36. data/lib/rubycritic/report_generators/overview.rb +25 -0
  37. data/lib/rubycritic/report_generators/smells_index.rb +24 -0
  38. data/lib/rubycritic/report_generators/templates/code_file.html.erb +36 -0
  39. data/lib/rubycritic/report_generators/templates/code_index.html.erb +26 -0
  40. data/lib/rubycritic/report_generators/templates/layouts/application.html.erb +27 -16
  41. data/lib/rubycritic/report_generators/templates/overview.html.erb +5 -0
  42. data/lib/rubycritic/report_generators/templates/smells_index.html.erb +20 -0
  43. data/lib/rubycritic/report_generators/view_helpers.rb +28 -9
  44. data/lib/rubycritic/reporters/base.rb +24 -0
  45. data/lib/rubycritic/reporters/main.rb +52 -0
  46. data/lib/rubycritic/reporters/mini.rb +30 -0
  47. data/lib/rubycritic/revision_comparator.rb +21 -28
  48. data/lib/rubycritic/serializer.rb +32 -0
  49. data/lib/rubycritic/smells_status_setter.rb +7 -16
  50. data/lib/rubycritic/source_control_systems/base.rb +60 -0
  51. data/lib/rubycritic/source_control_systems/double.rb +19 -0
  52. data/lib/rubycritic/source_control_systems/git.rb +47 -37
  53. data/lib/rubycritic/source_locator.rb +8 -12
  54. data/lib/rubycritic/turbulence.rb +17 -0
  55. data/lib/rubycritic/version.rb +1 -1
  56. data/lib/rubycritic.rb +2 -27
  57. data/rubycritic.gemspec +3 -0
  58. data/test/lib/rubycritic/adapters/complexity/flog_test.rb +18 -0
  59. data/test/lib/rubycritic/adapters/smell/flay_test.rb +34 -0
  60. data/test/lib/rubycritic/adapters/smell/flog_test.rb +26 -0
  61. data/test/lib/rubycritic/adapters/smell/reek_test.rb +35 -0
  62. data/test/lib/rubycritic/analysers/churn_test.rb +38 -0
  63. data/test/lib/rubycritic/configuration_test.rb +17 -0
  64. data/test/lib/rubycritic/core/analysed_file_test.rb +71 -0
  65. data/test/lib/rubycritic/{location_test.rb → core/location_test.rb} +8 -4
  66. data/test/lib/rubycritic/core/smell_test.rb +73 -0
  67. data/test/lib/rubycritic/{smells_array_test.rb → core/smells_array_test.rb} +1 -1
  68. data/test/lib/rubycritic/smells_status_setter_test.rb +5 -5
  69. data/test/lib/rubycritic/source_control_systems/source_control_system_test.rb +5 -11
  70. data/test/lib/rubycritic/source_locator_test.rb +26 -17
  71. data/test/lib/rubycritic/turbulence_test.rb +17 -0
  72. data/test/lib/rubycritic/version_test.rb +1 -0
  73. data/test/samples/flay/smelly.rb +17 -0
  74. data/test/samples/flog/complex.rb +11 -0
  75. data/test/samples/flog/smelly.rb +7 -2
  76. data/test/samples/reek/not_smelly.rb +31 -3
  77. data/test/test_helper.rb +1 -0
  78. metadata +97 -32
  79. data/SPEC.md +0 -58
  80. data/lib/rubycritic/report_generators/base_generator.rb +0 -42
  81. data/lib/rubycritic/report_generators/file_generator.rb +0 -42
  82. data/lib/rubycritic/report_generators/index_generator.rb +0 -28
  83. data/lib/rubycritic/report_generators/line_generator.rb +0 -27
  84. data/lib/rubycritic/report_generators/reporter.rb +0 -45
  85. data/lib/rubycritic/report_generators/templates/file.html.erb +0 -3
  86. data/lib/rubycritic/report_generators/templates/index.html.erb +0 -14
  87. data/lib/rubycritic/smell_adapters/flog.rb +0 -41
  88. data/lib/rubycritic/smell_adapters/reek.rb +0 -35
  89. data/lib/rubycritic/smells_aggregator.rb +0 -29
  90. data/lib/rubycritic/smelly_pathnames_serializer.rb +0 -34
  91. data/lib/rubycritic/source_control_systems/source_control_system.rb +0 -42
  92. data/test/lib/rubycritic/metric_adapters/flog_adapter_test.rb +0 -25
  93. data/test/lib/rubycritic/metric_adapters/reek_adapter_test.rb +0 -34
  94. data/test/lib/rubycritic/smell_test.rb +0 -71
  95. data/test/lib/rubycritic/smells_aggregator_test.rb +0 -47
  96. /data/lib/rubycritic/report_generators/assets/javascripts/{prettify.js → prettify-4-Mar-2013.js} +0 -0
@@ -1,25 +0,0 @@
1
- require "test_helper"
2
- require "rubycritic/analysers/flog"
3
- require "rubycritic/smell_adapters/flog"
4
-
5
- describe Rubycritic::SmellAdapter::Flog do
6
- before do
7
- sample_path = "test/samples/flog/smelly.rb"
8
- flog = Rubycritic::Analyser::Flog.new([sample_path])
9
- @adapter = Rubycritic::SmellAdapter::Flog.new(flog)
10
- end
11
-
12
- it "detects smells" do
13
- @adapter.smells.wont_be_empty
14
- end
15
-
16
- it "has smells with messages" do
17
- smell = @adapter.smells.first
18
- smell.message.must_equal "has a complexity of 8"
19
- end
20
-
21
- it "has smells with scores" do
22
- smell = @adapter.smells.first
23
- smell.score.must_be_kind_of Numeric
24
- end
25
- end
@@ -1,34 +0,0 @@
1
- require "test_helper"
2
- require "rubycritic/analysers/reek"
3
- require "rubycritic/smell_adapters/reek"
4
-
5
- describe Rubycritic::SmellAdapter::Reek do
6
- context "when analysing a smelly file" do
7
- before do
8
- sample_path = "test/samples/reek/smelly.rb"
9
- reek = Rubycritic::Analyser::Reek.new([sample_path])
10
- @adapter = Rubycritic::SmellAdapter::Reek.new(reek)
11
- end
12
-
13
- it "detects smells" do
14
- @adapter.smells.wont_be_empty
15
- end
16
-
17
- it "has smells with messages" do
18
- smell = @adapter.smells.first
19
- smell.message.must_equal "has boolean parameter 'reek'"
20
- end
21
- end
22
-
23
- context "when analysing a file with smells ignored in config.reek" do
24
- before do
25
- sample_path = "test/samples/reek/not_smelly.rb"
26
- reek = Rubycritic::Analyser::Reek.new([sample_path])
27
- @adapter = Rubycritic::SmellAdapter::Reek.new(reek)
28
- end
29
-
30
- it "does not detect smells" do
31
- @adapter.smells.must_be_empty
32
- end
33
- end
34
- end
@@ -1,71 +0,0 @@
1
- require "test_helper"
2
- require "rubycritic/smell"
3
-
4
- describe Rubycritic::Smell do
5
- it "has a context reader" do
6
- context = "#bar"
7
- smell = Rubycritic::Smell.new(:context => context)
8
- smell.context.must_equal context
9
- end
10
-
11
- it "has a locations reader" do
12
- location = Rubycritic::Location.new("./foo", "42")
13
- smell = Rubycritic::Smell.new(:locations => [location])
14
- smell.locations.must_equal [location]
15
- end
16
-
17
- it "has a pathnames reader" do
18
- path = Pathname.new("./foo")
19
- location1 = Rubycritic::Location.new("./foo", "42")
20
- location2 = Rubycritic::Location.new("./foo", "23")
21
- smell = Rubycritic::Smell.new(:locations => [location1, location2])
22
- smell.pathnames.must_equal [path]
23
- end
24
-
25
- it "has a message reader" do
26
- message = "This smells"
27
- smell = Rubycritic::Smell.new(:message => message)
28
- smell.message.must_equal message
29
- end
30
-
31
- it "has a score reader" do
32
- score = 0
33
- smell = Rubycritic::Smell.new(:score => score)
34
- smell.score.must_equal score
35
- end
36
-
37
- it "has a type reader" do
38
- type = :complexity
39
- smell = Rubycritic::Smell.new(:type => type)
40
- smell.type.must_equal type
41
- end
42
-
43
- describe "#located_in?" do
44
- it "returns true if the smell has a location that matches the location passed as argument" do
45
- location = Rubycritic::Location.new("./foo", "42")
46
- smell = Rubycritic::Smell.new(:locations => [location])
47
- smell.located_in?(location).must_equal true
48
- end
49
- end
50
-
51
- describe "#has_multiple_locations?" do
52
- it "returns true if the smell has more than one location" do
53
- location1 = Rubycritic::Location.new("./foo", "42")
54
- location2 = Rubycritic::Location.new("./foo", "23")
55
- smell = Rubycritic::Smell.new(:locations => [location1, location2])
56
- smell.has_multiple_locations?.must_equal true
57
- end
58
- end
59
-
60
- it "is comparable" do
61
- attributes = {
62
- :context => "#bar",
63
- :message => "This smells",
64
- :score => 0,
65
- :type => :complexity
66
- }
67
- smell1 = Rubycritic::Smell.new(attributes)
68
- smell2 = Rubycritic::Smell.new(attributes)
69
- smell1.must_equal smell2
70
- end
71
- end
@@ -1,47 +0,0 @@
1
- require "test_helper"
2
- require "rubycritic/smells_aggregator"
3
-
4
- describe Rubycritic::SmellsAggregator do
5
- context "when when analysing smelly files" do
6
- before do
7
- @location1 = Rubycritic::Location.new("./foo", "42")
8
- @location2 = Rubycritic::Location.new("./bar", "23")
9
- @location3 = Rubycritic::Location.new("./bar", "16")
10
- @smell1 = Rubycritic::Smell.new(:locations => [@location1])
11
- @smell2 = Rubycritic::Smell.new(:locations => [@location2, @location3])
12
- @smell_adapters = [stub(:smells => [@smell1]), stub(:smells => [@smell2])]
13
- end
14
-
15
- describe "#smells" do
16
- it "returns the smells found in those files" do
17
- smells = [@smell2, @smell1]
18
- Rubycritic::SmellsAggregator.new(@smell_adapters).smells.must_equal smells
19
- end
20
- end
21
-
22
- describe "#smelly_pathnames" do
23
- it "returns the files where smells were found" do
24
- smelly_pathnames = {@location1.pathname => [@smell1], @location2.pathname => [@smell2]}
25
- Rubycritic::SmellsAggregator.new(@smell_adapters).smelly_pathnames.must_equal smelly_pathnames
26
- end
27
- end
28
- end
29
-
30
- context "when analysing files with no smells" do
31
- before do
32
- @smell_adapters = [stub(:smells => [])]
33
- end
34
-
35
- describe "#smells" do
36
- it "returns an empty array" do
37
- Rubycritic::SmellsAggregator.new(@smell_adapters).smells.must_equal []
38
- end
39
- end
40
-
41
- describe "#smelly_pathnames" do
42
- it "returns an empty hash" do
43
- Rubycritic::SmellsAggregator.new(@smell_adapters).smelly_pathnames.must_equal({})
44
- end
45
- end
46
- end
47
- end