rubycritic 3.0.0 → 3.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.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/CHANGELOG.md +9 -0
- data/README.md +9 -6
- data/ROADMAP.md +56 -0
- data/docs/building-own-code-climate.md +4 -0
- data/features/command_line_interface/minimum_score.feature +1 -1
- data/features/command_line_interface/options.feature +1 -1
- data/lib/rubycritic/analysis_summary.rb +40 -0
- data/lib/rubycritic/cli/options.rb +1 -1
- data/lib/rubycritic/core/analysed_module.rb +20 -0
- data/lib/rubycritic/core/analysed_modules_collection.rb +8 -0
- data/lib/rubycritic/generators/html/assets/fonts/FontAwesome.otf +0 -0
- data/lib/rubycritic/generators/html/assets/fonts/Roboto-Medium.ttf +0 -0
- data/lib/rubycritic/generators/html/assets/fonts/Roboto-Regular.ttf +0 -0
- data/lib/rubycritic/generators/html/assets/fonts/fontawesome-webfont.eot +0 -0
- data/lib/rubycritic/generators/html/assets/fonts/fontawesome-webfont.svg +2671 -0
- data/lib/rubycritic/generators/html/assets/fonts/fontawesome-webfont.ttf +0 -0
- data/lib/rubycritic/generators/html/assets/fonts/fontawesome-webfont.woff +0 -0
- data/lib/rubycritic/generators/html/assets/fonts/fontawesome-webfont.woff2 +0 -0
- data/lib/rubycritic/generators/html/assets/fonts/glyphicons-halflings-regular.eot +0 -0
- data/lib/rubycritic/generators/html/assets/fonts/glyphicons-halflings-regular.svg +288 -0
- data/lib/rubycritic/generators/html/assets/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/lib/rubycritic/generators/html/assets/fonts/glyphicons-halflings-regular.woff +0 -0
- data/lib/rubycritic/generators/html/assets/fonts/glyphicons-halflings-regular.woff2 +0 -0
- data/lib/rubycritic/generators/html/assets/images/logo.png +0 -0
- data/lib/rubycritic/generators/html/assets/javascripts/application.js +221 -72
- data/lib/rubycritic/generators/html/assets/javascripts/bootstrap.min.js +7 -0
- data/lib/rubycritic/generators/html/assets/javascripts/jquery.min.js +4 -0
- data/lib/rubycritic/generators/html/assets/javascripts/jquery.scrollTo.min.js +7 -0
- data/lib/rubycritic/generators/html/assets/javascripts/jquery.tablesorter.js +1031 -2089
- data/lib/rubycritic/generators/html/assets/javascripts/jquery.tablesorter.min.js +4 -0
- data/lib/rubycritic/generators/html/assets/javascripts/{jquery.timeago-v1.4.1.js → jquery.timeago.js} +31 -14
- data/lib/rubycritic/generators/html/assets/javascripts/prettify.js +46 -0
- data/lib/rubycritic/generators/html/assets/stylesheets/application.css +422 -197
- data/lib/rubycritic/generators/html/assets/stylesheets/bootstrap.min.css +6 -0
- data/lib/rubycritic/generators/html/assets/stylesheets/font-awesome.min.css +4 -0
- data/lib/rubycritic/generators/html/assets/stylesheets/prettify.css +1 -0
- data/lib/rubycritic/generators/html/overview.rb +2 -0
- data/lib/rubycritic/generators/html/templates/code_file.html.erb +56 -33
- data/lib/rubycritic/generators/html/templates/code_index.html.erb +45 -30
- data/lib/rubycritic/generators/html/templates/layouts/application.html.erb +43 -21
- data/lib/rubycritic/generators/html/templates/overview.html.erb +62 -7
- data/lib/rubycritic/generators/html/templates/smells_index.html.erb +47 -26
- data/lib/rubycritic/generators/html/templates/smelly_line.html.erb +16 -12
- data/lib/rubycritic/generators/html/turbulence.rb +2 -2
- data/lib/rubycritic/generators/html/view_helpers.rb +4 -0
- data/lib/rubycritic/source_control_systems/base.rb +1 -0
- data/lib/rubycritic/source_control_systems/perforce.rb +108 -0
- data/lib/rubycritic/version.rb +1 -1
- data/rubycritic.gemspec +1 -1
- data/test/analysers_test_helper.rb +7 -0
- data/test/lib/rubycritic/analysis_summary_test.rb +29 -0
- data/test/lib/rubycritic/generators/console_report_test.rb +3 -3
- data/test/lib/rubycritic/source_control_systems/perforce_test.rb +162 -0
- metadata +34 -9
- data/lib/rubycritic/generators/html/assets/javascripts/jquery-2.1.0.js +0 -9111
- data/lib/rubycritic/generators/html/assets/javascripts/jquery.floatThead-v1.2.7.js +0 -754
- data/lib/rubycritic/generators/html/assets/javascripts/jquery.scrollTo-1.4.11.js +0 -186
- data/lib/rubycritic/generators/html/assets/javascripts/prettify-4-Mar-2013.js +0 -1662
@@ -1,6 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
require 'json'
|
3
|
-
|
4
3
|
module RubyCritic
|
5
4
|
module Turbulence
|
6
5
|
def self.data(analysed_modules)
|
@@ -8,7 +7,8 @@ module RubyCritic
|
|
8
7
|
{
|
9
8
|
name: analysed_module.name,
|
10
9
|
x: analysed_module.churn,
|
11
|
-
y: analysed_module.complexity
|
10
|
+
y: analysed_module.complexity,
|
11
|
+
rating: analysed_module.rating
|
12
12
|
}
|
13
13
|
end.to_json
|
14
14
|
end
|
@@ -0,0 +1,108 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require 'date'
|
3
|
+
|
4
|
+
module RubyCritic
|
5
|
+
module SourceControlSystem
|
6
|
+
PerforceStats = Struct.new(:filename, :revision, :last_commit, :opened?)
|
7
|
+
|
8
|
+
class Perforce < Base
|
9
|
+
register_system
|
10
|
+
|
11
|
+
def self.supported?
|
12
|
+
p4_client = ENV['P4CLIENT'] || ''
|
13
|
+
p4_installed? && !p4_client.empty? && in_client_directory?
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.p4_installed?
|
17
|
+
p4_exe = Gem.win_platform? ? 'p4.exe' : 'p4'
|
18
|
+
ENV['PATH'].split(File::PATH_SEPARATOR).any? do |directory|
|
19
|
+
File.executable?(File.join(directory, p4_exe))
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.in_client_directory?
|
24
|
+
p4_info = `p4 info`.each_line.select do |line|
|
25
|
+
line.start_with?('Client root', 'Current directory')
|
26
|
+
end
|
27
|
+
|
28
|
+
client_directory, current_directory = p4_info.map! { |info| info.split(': ').last.chomp }
|
29
|
+
child?(client_directory, current_directory)
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.child?(root, target)
|
33
|
+
root_size = root.size
|
34
|
+
target_size = target.size
|
35
|
+
return false if target_size < root_size
|
36
|
+
target[0...root_size] == root &&
|
37
|
+
(target_size == root_size || [File::ALT_SEPARATOR, File::SEPARATOR].include?(target[root_size]))
|
38
|
+
end
|
39
|
+
|
40
|
+
def self.to_s
|
41
|
+
'Perforce'
|
42
|
+
end
|
43
|
+
|
44
|
+
def revisions_count(path)
|
45
|
+
perforce_files[Perforce.key_file(path)].revision.to_i
|
46
|
+
end
|
47
|
+
|
48
|
+
def date_of_last_commit(path)
|
49
|
+
DateTime.strptime(perforce_files[Perforce.key_file(path)].last_commit, '%s').strftime('%Y-%m-%d %H:%M:%S %z')
|
50
|
+
end
|
51
|
+
|
52
|
+
def revision?
|
53
|
+
!perforce_files.values.count(&:opened?).zero?
|
54
|
+
end
|
55
|
+
|
56
|
+
def self.build_file_cache
|
57
|
+
# Chun is very slow if files stats are requested one by one
|
58
|
+
# this fill a hash with the result of all ruby file in the current directory (and sub-directories)
|
59
|
+
{}.tap do |file_cache|
|
60
|
+
line_aggregator = []
|
61
|
+
`p4 fstat -F "clientFile=*.rb" -T clientFile,headRev,headTime,action #{Dir.getwd}...`.each_line do |line|
|
62
|
+
Perforce.compute_line(file_cache, line_aggregator, line)
|
63
|
+
end
|
64
|
+
# handle remaining lines
|
65
|
+
Perforce.insert_file_cache(file_cache, line_aggregator) if line_aggregator.any?
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def self.compute_line(file_cache, line_aggregator, line)
|
70
|
+
if line.chomp.empty?
|
71
|
+
Perforce.insert_file_cache(file_cache, line_aggregator)
|
72
|
+
else
|
73
|
+
line_aggregator << line
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def self.insert_file_cache(file_cache, lines)
|
78
|
+
perforce_stat = Perforce.compute_cache_lines(lines)
|
79
|
+
file_cache[perforce_stat.filename] = perforce_stat
|
80
|
+
lines.clear
|
81
|
+
end
|
82
|
+
|
83
|
+
def self.compute_cache_lines(lines)
|
84
|
+
perforce_lines = Hash[*lines.map { |line| line.split[1..-1] }.flatten]
|
85
|
+
PerforceStats.new(
|
86
|
+
Perforce.normalized_file_path(perforce_lines['clientFile']),
|
87
|
+
perforce_lines['headRev'],
|
88
|
+
perforce_lines['headTime'],
|
89
|
+
perforce_lines.key?('action')
|
90
|
+
)
|
91
|
+
end
|
92
|
+
|
93
|
+
def self.key_file(source_file_path)
|
94
|
+
Perforce.normalized_file_path(File.join(Dir.getwd, source_file_path))
|
95
|
+
end
|
96
|
+
|
97
|
+
def self.normalized_file_path(file_path)
|
98
|
+
file_path.downcase.tr('\\', '/')
|
99
|
+
end
|
100
|
+
|
101
|
+
private
|
102
|
+
|
103
|
+
def perforce_files
|
104
|
+
@perforce_files ||= Perforce.build_file_cache
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
data/lib/rubycritic/version.rb
CHANGED
data/rubycritic.gemspec
CHANGED
@@ -25,7 +25,7 @@ Gem::Specification.new do |spec|
|
|
25
25
|
spec.add_runtime_dependency 'flay', '~> 2.8'
|
26
26
|
spec.add_runtime_dependency 'flog', '~> 4.4'
|
27
27
|
spec.add_runtime_dependency 'reek', '~> 4.4'
|
28
|
-
spec.add_runtime_dependency 'parser', '2.3.1.
|
28
|
+
spec.add_runtime_dependency 'parser', '2.3.1.4'
|
29
29
|
spec.add_runtime_dependency 'ruby_parser', '~> 3.8'
|
30
30
|
spec.add_runtime_dependency 'rainbow'
|
31
31
|
spec.add_runtime_dependency 'launchy', '2.4.3'
|
@@ -2,3 +2,10 @@
|
|
2
2
|
require 'test_helper'
|
3
3
|
|
4
4
|
class AnalysedModuleDouble < OpenStruct; end
|
5
|
+
|
6
|
+
require_relative '../lib/rubycritic/core/analysed_modules_collection'
|
7
|
+
class AnalysedModulesCollectionDouble < RubyCritic::AnalysedModulesCollection
|
8
|
+
def initialize(module_doubles)
|
9
|
+
@modules = module_doubles
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require 'test_helper'
|
3
|
+
require 'rubycritic/analysis_summary'
|
4
|
+
|
5
|
+
module RubyCritic
|
6
|
+
describe AnalysisSummary do
|
7
|
+
before do
|
8
|
+
analysed_modules = AnalysedModulesCollectionDouble.new(
|
9
|
+
[
|
10
|
+
AnalysedModuleDouble.new(rating: 'A', churn: 2, smells: [:a, :b, :c]),
|
11
|
+
AnalysedModuleDouble.new(rating: 'A', churn: 3, smells: [:b]),
|
12
|
+
AnalysedModuleDouble.new(rating: 'A', churn: 4, smells: [:x, :y]),
|
13
|
+
AnalysedModuleDouble.new(rating: 'B', churn: 5, smells: [:a, :z])
|
14
|
+
]
|
15
|
+
)
|
16
|
+
@summary = RubyCritic::AnalysisSummary.generate(analysed_modules)
|
17
|
+
end
|
18
|
+
|
19
|
+
describe '.root' do
|
20
|
+
it 'computes correct summary' do
|
21
|
+
@summary['A'].to_a.must_equal({ files: 3, churns: 9, smells: 6 }.to_a)
|
22
|
+
@summary['B'].to_a.must_equal({ files: 1, churns: 5, smells: 2 }.to_a)
|
23
|
+
@summary['C'].to_a.must_equal({ files: 0, churns: 0, smells: 0 }.to_a)
|
24
|
+
@summary['D'].to_a.must_equal({ files: 0, churns: 0, smells: 0 }.to_a)
|
25
|
+
@summary['F'].to_a.must_equal({ files: 0, churns: 0, smells: 0 }.to_a)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -28,15 +28,15 @@ describe RubyCritic::Generator::ConsoleReport do
|
|
28
28
|
assert output_contains?('Rating', @mock_analysed_module.rating)
|
29
29
|
end
|
30
30
|
|
31
|
-
it "includes the module's
|
31
|
+
it "includes the module's churn metric in the report" do
|
32
32
|
assert output_contains?('Churn', @mock_analysed_module.churn)
|
33
33
|
end
|
34
34
|
|
35
|
-
it "includes the module's
|
35
|
+
it "includes the module's complexity in the report" do
|
36
36
|
assert output_contains?('Complexity', @mock_analysed_module.complexity)
|
37
37
|
end
|
38
38
|
|
39
|
-
it "includes the module's
|
39
|
+
it "includes the module's duplication metric in the report" do
|
40
40
|
assert output_contains?('Duplication', @mock_analysed_module.duplication)
|
41
41
|
end
|
42
42
|
|
@@ -0,0 +1,162 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require 'test_helper'
|
3
|
+
require 'rubycritic/source_control_systems/base'
|
4
|
+
|
5
|
+
describe RubyCritic::SourceControlSystem::Perforce do
|
6
|
+
before do
|
7
|
+
@system = RubyCritic::SourceControlSystem::Perforce.new
|
8
|
+
end
|
9
|
+
|
10
|
+
describe RubyCritic::SourceControlSystem::Perforce do
|
11
|
+
describe '::supported?' do
|
12
|
+
let(:path) do
|
13
|
+
['/some/path', File::PATH_SEPARATOR, '/perforce/path/p4', File::PATH_SEPARATOR + '/other/useless_path'].join
|
14
|
+
end
|
15
|
+
let(:p4_client) { 'UNIT_TEST_CLIENT' }
|
16
|
+
|
17
|
+
context 'directory is under p4 client' do
|
18
|
+
it 'detects if Perforce is the source control used' do
|
19
|
+
ENV['PATH'] = path
|
20
|
+
ENV['P4CLIENT'] = p4_client
|
21
|
+
Gem.stubs(:win_platform?).returns(false)
|
22
|
+
File.stubs(:executable?).with('/some/path/p4').returns(false)
|
23
|
+
File.stubs(:executable?).with('/perforce/path/p4/p4').returns(true)
|
24
|
+
RubyCritic::SourceControlSystem::Perforce.stubs(:in_client_directory?).returns(true)
|
25
|
+
|
26
|
+
RubyCritic::SourceControlSystem::Perforce.supported?.must_equal true
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
context 'directory is not under p4 client' do
|
31
|
+
it 'returns false if no p4 executables are found' do
|
32
|
+
ENV['PATH'] = path
|
33
|
+
ENV['P4CLIENT'] = nil
|
34
|
+
Gem.stubs(:win_platform?).returns(false)
|
35
|
+
File.stubs(:executable?).with('/some/path/p4').returns(false)
|
36
|
+
File.stubs(:executable?).with('/perforce/path/p4/p4').returns(false)
|
37
|
+
File.stubs(:executable?).with('/other/useless_path/p4').returns(false)
|
38
|
+
|
39
|
+
RubyCritic::SourceControlSystem::Perforce.supported?.must_equal false
|
40
|
+
end
|
41
|
+
|
42
|
+
it 'returns false if no p4 client is set in environment variables' do
|
43
|
+
ENV['PATH'] = path
|
44
|
+
ENV['P4CLIENT'] = nil
|
45
|
+
Gem.stubs(:win_platform?).returns(false)
|
46
|
+
File.stubs(:executable?).with('/some/path/p4').returns(false)
|
47
|
+
File.stubs(:executable?).with('/perforce/path/p4/p4').returns(true)
|
48
|
+
|
49
|
+
RubyCritic::SourceControlSystem::Perforce.supported?.must_equal false
|
50
|
+
end
|
51
|
+
|
52
|
+
it 'returns false if the current directory is not under p4 client' do
|
53
|
+
ENV['PATH'] = path
|
54
|
+
ENV['P4CLIENT'] = p4_client
|
55
|
+
Gem.stubs(:win_platform?).returns(false)
|
56
|
+
File.stubs(:executable?).with('/some/path/p4').returns(false)
|
57
|
+
File.stubs(:executable?).with('/perforce/path/p4/p4').returns(true)
|
58
|
+
RubyCritic::SourceControlSystem::Perforce.stubs(:in_client_directory?).returns(false)
|
59
|
+
|
60
|
+
RubyCritic::SourceControlSystem::Perforce.supported?.must_equal false
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
describe '::in_client_directory?' do
|
66
|
+
context 'current directory is in p4 client' do
|
67
|
+
let(:p4_info) do
|
68
|
+
<<-END
|
69
|
+
User name: unit_test_user
|
70
|
+
Client name: UNIT_TEST_CLIENT
|
71
|
+
Client host: MACHINE_NAME
|
72
|
+
Client root: /path/to/client/root
|
73
|
+
Current directory: /path/to/client/root/ruby_project/unit_test
|
74
|
+
Peer address: 127.0.0.1::3000
|
75
|
+
Client address: 127.0.0.1
|
76
|
+
Server address: the.server.address.com
|
77
|
+
END
|
78
|
+
end
|
79
|
+
|
80
|
+
it 'calls p4 info and parse the result' do
|
81
|
+
RubyCritic::SourceControlSystem::Perforce.stubs(:`).with('p4 info').returns(p4_info)
|
82
|
+
RubyCritic::SourceControlSystem::Perforce.in_client_directory?.must_equal true
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
context 'current directory is not in p4 client' do
|
87
|
+
let(:p4_info) do
|
88
|
+
<<-END
|
89
|
+
User name: unit_test_user
|
90
|
+
Client name: UNIT_TEST_CLIENT
|
91
|
+
Client host: MACHINE_NAME
|
92
|
+
Client root: /path/to/client/root
|
93
|
+
Current directory: /somewhere/else/ruby_project/unit_test
|
94
|
+
Peer address: 127.0.0.1::3000
|
95
|
+
Client address: 127.0.0.1
|
96
|
+
Server address: the.server.address.com
|
97
|
+
END
|
98
|
+
end
|
99
|
+
|
100
|
+
it 'calls p4 info and parse the result' do
|
101
|
+
RubyCritic::SourceControlSystem::Perforce.stubs(:`).with('p4 info').returns(p4_info)
|
102
|
+
RubyCritic::SourceControlSystem::Perforce.in_client_directory?.must_equal false
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
describe 'retrieve informations' do
|
108
|
+
let(:p4_stats) do
|
109
|
+
<<-END
|
110
|
+
... clientFile /path/to/client/a_ruby_file.rb
|
111
|
+
... headTime 1473075551
|
112
|
+
... headRev 16
|
113
|
+
|
114
|
+
... clientFile /path/to/client/second_ruby_file.rb
|
115
|
+
... headTime 1464601668
|
116
|
+
... action opened
|
117
|
+
... headRev 12
|
118
|
+
END
|
119
|
+
end
|
120
|
+
|
121
|
+
describe 'build_file_cache' do
|
122
|
+
it 'builds the perforce file cache' do
|
123
|
+
RubyCritic::SourceControlSystem::Perforce.stubs(:`).returns(p4_stats)
|
124
|
+
file_cache = @system.send(:perforce_files)
|
125
|
+
file_cache.size.must_equal 2
|
126
|
+
|
127
|
+
first_file = file_cache['/path/to/client/a_ruby_file.rb']
|
128
|
+
first_file.filename.must_equal '/path/to/client/a_ruby_file.rb'
|
129
|
+
first_file.revision.must_equal '16'
|
130
|
+
first_file.last_commit.must_equal '1473075551'
|
131
|
+
first_file.opened?.must_equal false
|
132
|
+
|
133
|
+
second_file = file_cache['/path/to/client/second_ruby_file.rb']
|
134
|
+
second_file.filename.must_equal '/path/to/client/second_ruby_file.rb'
|
135
|
+
second_file.revision.must_equal '12'
|
136
|
+
second_file.last_commit.must_equal '1464601668'
|
137
|
+
second_file.opened?.must_equal true
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
it 'retrieves the number revisions of the ruby files' do
|
142
|
+
Dir.stubs(:getwd).returns('/path/to/client')
|
143
|
+
RubyCritic::SourceControlSystem::Perforce.stubs(:`).once.returns(p4_stats)
|
144
|
+
@system.revisions_count('a_ruby_file.rb').must_equal 16
|
145
|
+
@system.revisions_count('second_ruby_file.rb').must_equal 12
|
146
|
+
end
|
147
|
+
|
148
|
+
it 'retrieves the date of the last commit of the ruby files' do
|
149
|
+
Dir.stubs(:getwd).returns('/path/to/client')
|
150
|
+
RubyCritic::SourceControlSystem::Perforce.stubs(:`).once.returns(p4_stats)
|
151
|
+
@system.date_of_last_commit('a_ruby_file.rb').must_equal '2016-09-05 11:39:11 +0000'
|
152
|
+
@system.date_of_last_commit('second_ruby_file.rb').must_equal '2016-05-30 09:47:48 +0000'
|
153
|
+
end
|
154
|
+
|
155
|
+
it 'retrieves the information if the ruby file is opened (in the changelist and ready to commit)' do
|
156
|
+
Dir.stubs(:getwd).returns('/path/to/client')
|
157
|
+
RubyCritic::SourceControlSystem::Perforce.stubs(:`).once.returns(p4_stats)
|
158
|
+
@system.revision?.must_equal true
|
159
|
+
end
|
160
|
+
end
|
161
|
+
end
|
162
|
+
end
|
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: 3.
|
4
|
+
version: 3.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: 2016-11-
|
11
|
+
date: 2016-11-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: virtus
|
@@ -72,14 +72,14 @@ dependencies:
|
|
72
72
|
requirements:
|
73
73
|
- - '='
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 2.3.1.
|
75
|
+
version: 2.3.1.4
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - '='
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: 2.3.1.
|
82
|
+
version: 2.3.1.4
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: ruby_parser
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -253,6 +253,7 @@ files:
|
|
253
253
|
- Gemfile
|
254
254
|
- LICENSE.txt
|
255
255
|
- README.md
|
256
|
+
- ROADMAP.md
|
256
257
|
- Rakefile
|
257
258
|
- bin/rubycritic
|
258
259
|
- docs/building-own-code-climate.md
|
@@ -279,6 +280,7 @@ files:
|
|
279
280
|
- lib/rubycritic/analysers/smells/flog.rb
|
280
281
|
- lib/rubycritic/analysers/smells/reek.rb
|
281
282
|
- lib/rubycritic/analysers_runner.rb
|
283
|
+
- lib/rubycritic/analysis_summary.rb
|
282
284
|
- lib/rubycritic/browser.rb
|
283
285
|
- lib/rubycritic/cli/application.rb
|
284
286
|
- lib/rubycritic/cli/options.rb
|
@@ -297,15 +299,33 @@ files:
|
|
297
299
|
- lib/rubycritic/core/rating.rb
|
298
300
|
- lib/rubycritic/core/smell.rb
|
299
301
|
- lib/rubycritic/generators/console_report.rb
|
302
|
+
- lib/rubycritic/generators/html/assets/fonts/FontAwesome.otf
|
303
|
+
- lib/rubycritic/generators/html/assets/fonts/Roboto-Medium.ttf
|
304
|
+
- lib/rubycritic/generators/html/assets/fonts/Roboto-Regular.ttf
|
305
|
+
- lib/rubycritic/generators/html/assets/fonts/fontawesome-webfont.eot
|
306
|
+
- lib/rubycritic/generators/html/assets/fonts/fontawesome-webfont.svg
|
307
|
+
- lib/rubycritic/generators/html/assets/fonts/fontawesome-webfont.ttf
|
308
|
+
- lib/rubycritic/generators/html/assets/fonts/fontawesome-webfont.woff
|
309
|
+
- lib/rubycritic/generators/html/assets/fonts/fontawesome-webfont.woff2
|
310
|
+
- lib/rubycritic/generators/html/assets/fonts/glyphicons-halflings-regular.eot
|
311
|
+
- lib/rubycritic/generators/html/assets/fonts/glyphicons-halflings-regular.svg
|
312
|
+
- lib/rubycritic/generators/html/assets/fonts/glyphicons-halflings-regular.ttf
|
313
|
+
- lib/rubycritic/generators/html/assets/fonts/glyphicons-halflings-regular.woff
|
314
|
+
- lib/rubycritic/generators/html/assets/fonts/glyphicons-halflings-regular.woff2
|
315
|
+
- lib/rubycritic/generators/html/assets/images/logo.png
|
300
316
|
- lib/rubycritic/generators/html/assets/javascripts/application.js
|
317
|
+
- lib/rubycritic/generators/html/assets/javascripts/bootstrap.min.js
|
301
318
|
- lib/rubycritic/generators/html/assets/javascripts/highcharts.src-4.0.1.js
|
302
|
-
- lib/rubycritic/generators/html/assets/javascripts/jquery
|
303
|
-
- lib/rubycritic/generators/html/assets/javascripts/jquery.
|
304
|
-
- lib/rubycritic/generators/html/assets/javascripts/jquery.scrollTo-1.4.11.js
|
319
|
+
- lib/rubycritic/generators/html/assets/javascripts/jquery.min.js
|
320
|
+
- lib/rubycritic/generators/html/assets/javascripts/jquery.scrollTo.min.js
|
305
321
|
- lib/rubycritic/generators/html/assets/javascripts/jquery.tablesorter.js
|
306
|
-
- lib/rubycritic/generators/html/assets/javascripts/jquery.
|
307
|
-
- lib/rubycritic/generators/html/assets/javascripts/
|
322
|
+
- lib/rubycritic/generators/html/assets/javascripts/jquery.tablesorter.min.js
|
323
|
+
- lib/rubycritic/generators/html/assets/javascripts/jquery.timeago.js
|
324
|
+
- lib/rubycritic/generators/html/assets/javascripts/prettify.js
|
308
325
|
- lib/rubycritic/generators/html/assets/stylesheets/application.css
|
326
|
+
- lib/rubycritic/generators/html/assets/stylesheets/bootstrap.min.css
|
327
|
+
- lib/rubycritic/generators/html/assets/stylesheets/font-awesome.min.css
|
328
|
+
- lib/rubycritic/generators/html/assets/stylesheets/prettify.css
|
309
329
|
- lib/rubycritic/generators/html/assets/stylesheets/prettify.custom_theme.css
|
310
330
|
- lib/rubycritic/generators/html/base.rb
|
311
331
|
- lib/rubycritic/generators/html/code_file.rb
|
@@ -336,6 +356,7 @@ files:
|
|
336
356
|
- lib/rubycritic/source_control_systems/double.rb
|
337
357
|
- lib/rubycritic/source_control_systems/git.rb
|
338
358
|
- lib/rubycritic/source_control_systems/mercurial.rb
|
359
|
+
- lib/rubycritic/source_control_systems/perforce.rb
|
339
360
|
- lib/rubycritic/source_locator.rb
|
340
361
|
- lib/rubycritic/version.rb
|
341
362
|
- rubycritic.gemspec
|
@@ -347,6 +368,7 @@ files:
|
|
347
368
|
- test/lib/rubycritic/analysers/smells/flay_test.rb
|
348
369
|
- test/lib/rubycritic/analysers/smells/flog_test.rb
|
349
370
|
- test/lib/rubycritic/analysers/smells/reek_test.rb
|
371
|
+
- test/lib/rubycritic/analysis_summary_test.rb
|
350
372
|
- test/lib/rubycritic/browser_test.rb
|
351
373
|
- test/lib/rubycritic/commands/status_reporter_test.rb
|
352
374
|
- test/lib/rubycritic/configuration_test.rb
|
@@ -367,6 +389,7 @@ files:
|
|
367
389
|
- test/lib/rubycritic/source_control_systems/interfaces/basic.rb
|
368
390
|
- test/lib/rubycritic/source_control_systems/interfaces/time_travel.rb
|
369
391
|
- test/lib/rubycritic/source_control_systems/mercurial_test.rb
|
392
|
+
- test/lib/rubycritic/source_control_systems/perforce_test.rb
|
370
393
|
- test/lib/rubycritic/source_locator_test.rb
|
371
394
|
- test/lib/rubycritic/version_test.rb
|
372
395
|
- test/samples/empty.rb
|
@@ -419,6 +442,7 @@ test_files:
|
|
419
442
|
- test/lib/rubycritic/analysers/smells/flay_test.rb
|
420
443
|
- test/lib/rubycritic/analysers/smells/flog_test.rb
|
421
444
|
- test/lib/rubycritic/analysers/smells/reek_test.rb
|
445
|
+
- test/lib/rubycritic/analysis_summary_test.rb
|
422
446
|
- test/lib/rubycritic/browser_test.rb
|
423
447
|
- test/lib/rubycritic/commands/status_reporter_test.rb
|
424
448
|
- test/lib/rubycritic/configuration_test.rb
|
@@ -439,6 +463,7 @@ test_files:
|
|
439
463
|
- test/lib/rubycritic/source_control_systems/interfaces/basic.rb
|
440
464
|
- test/lib/rubycritic/source_control_systems/interfaces/time_travel.rb
|
441
465
|
- test/lib/rubycritic/source_control_systems/mercurial_test.rb
|
466
|
+
- test/lib/rubycritic/source_control_systems/perforce_test.rb
|
442
467
|
- test/lib/rubycritic/source_locator_test.rb
|
443
468
|
- test/lib/rubycritic/version_test.rb
|
444
469
|
- test/samples/empty.rb
|