code_quality 0.1.9 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4d634f37e3805714ba3225cbde5d3db73b7fcb469589c633e56ee11eabb0b7b5
4
- data.tar.gz: 4986eb8f07b233f6bfa5b69e73218afa675c8340c4043f941d0866c7c7b877fa
3
+ metadata.gz: c173a4ac55a8c71df46b9adb9ba5f7e9618749fc716d66307a753eadc84e970f
4
+ data.tar.gz: 3da24dbd87a11a7cc44dd44d0f1290bdf54d24b1ea89630269647abe3db5b891
5
5
  SHA512:
6
- metadata.gz: 2173a13b383cbf4f80b1c9dbf8f03d7ea6e13001ce9444e8a26eb6347d8d22a3ef920c3bef23f5f5929fcff03947123b5c37bb016d69bf094758f27acf16b488
7
- data.tar.gz: 95733cc0481be5adec4bdb80d19b03ea3e5fda563b5272fd064c9b2d5ce9f7f7e6b01d69915c852cbee1cd45ad305ed99a5a5b6071f29f44d783719fd695bcde
6
+ metadata.gz: 2af8be37724eab2eb916d286d431f390e8d95a98c4d5fdd6e9da7e18424f70bba97226b5e1dccca0c75d83a6b2f2327b1c9f7f5849bef9fe8ee58e7a75fc6e08
7
+ data.tar.gz: 46bd00a6f06da779691f67e305c623f7fc7ff0a13fc4aeae258de03607371e7714579a5ce2664bc1ad955e0b3173c06385d3535d219002d01aa1f4042f29f178
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # CodeQuality
2
2
 
3
- Run code quality and security audit report with one rake task as `rake code_quality`.
3
+ Run code quality and security audit report with one command `code_quality`.
4
4
 
5
5
  [![Gem Version](https://badge.fury.io/rb/code_quality.svg)](https://badge.fury.io/rb/code_quality)
6
6
  [![Build Status](https://travis-ci.org/rainchen/code_quality.svg)](https://travis-ci.org/rainchen/code_quality)
@@ -13,7 +13,11 @@ Run code quality and security audit report with one rake task as `rake code_qual
13
13
 
14
14
  ## Installation
15
15
 
16
- Add this line to your application's Gemfile:
16
+ ```ruby
17
+ gem install code_quality
18
+ ```
19
+
20
+ Or add this line to your application's Gemfile:
17
21
 
18
22
  ```ruby
19
23
  group :development do
@@ -30,9 +34,12 @@ And then execute:
30
34
  To generate security audit and code quality report:
31
35
 
32
36
  ```
33
- rake code_quality
37
+ code_quality
34
38
  ```
35
39
 
40
+ or run as a rake task: `rake code_quality`, [Read More](README_for_rake.md)
41
+
42
+
36
43
  will output report like:
37
44
 
38
45
  ```
@@ -56,12 +63,14 @@ There are 2 types of audit tasks: `security_audit` and `quality_audit`, each sub
56
63
 
57
64
  In summary:
58
65
 
59
- - run `rake code_quality:security_audit` to get security audit report
60
- - run `rake code_quality:quality_audit` to get code quality report
66
+ - run `code_quality security_audit` to get security audit report
67
+ - run `code_quality quality_audit` to get code quality report
68
+
69
+ [Tips] Run `code_quality -T` to display all tasks.
61
70
 
62
71
  ### Report result using Markdown format
63
72
 
64
- You can output report using `rake code_quality > code_quality_report.md` then open it with a Markdown editor.
73
+ You can output report using `code_quality > code_quality_report.md` then open it with a Markdown editor.
65
74
 
66
75
 
67
76
 
@@ -74,7 +83,7 @@ Use [bundler-audit](https://rubygems.org/gems/bundler-audit) for patch-level ver
74
83
 
75
84
  ```
76
85
  # run security audit tasks
77
- rake code_quality:security_audit
86
+ code_quality security_audit
78
87
  ```
79
88
 
80
89
  output example:
@@ -91,7 +100,8 @@ Recommend setting up this task as part of a CI pipeline. For example, adding a j
91
100
  code_security_audit:
92
101
  stage: test
93
102
  script:
94
- - bundle exec rake code_quality:security_audit
103
+ - gem install code_quality
104
+ - code_quality security_audit
95
105
  ```
96
106
  Gitlab-CI pipeline example:
97
107
 
@@ -108,17 +118,17 @@ Then Gitlab sends notification with the failure info, for example:
108
118
 
109
119
  ```
110
120
  # bundler audit - checks for vulnerable versions of gems in Gemfile.lock
111
- rake code_quality:security_audit:bundler_audit
121
+ code_quality security_audit:bundler_audit
112
122
  ```
113
123
 
114
124
  ```
115
125
  # brakeman audit - checks Ruby on Rails applications for security vulnerabilities
116
- rake code_quality:security_audit:brakeman
126
+ code_quality security_audit:brakeman
117
127
  ```
118
128
 
119
129
  ```
120
130
  # show helpful URLs
121
- rake code_quality:security_audit:resources
131
+ code_quality security_audit:resources
122
132
  ```
123
133
 
124
134
 
@@ -135,16 +145,16 @@ Base on these ruby code analysis gems, you can choose suitable ones for your pro
135
145
 
136
146
  In summary:
137
147
 
138
- - run `rake code_quality:rubycritic` to get an evaluated score and code smells
139
- - run `rake code_quality:rubocop` to audit coding style and get refactor suggestions
140
- - run `rake code_quality:metric_fu` to get many kinds of code metrics, including rails best practice suggestions, recommend to use for rails project
148
+ - run `code_quality rubycritic` to get an evaluated score and code smells
149
+ - run `code_quality rubocop` to audit coding style and get refactor suggestions
150
+ - run `code_quality metric_fu` to get many kinds of code metrics, including rails best practice suggestions, recommend to use for rails project
141
151
 
142
152
 
143
153
  #### usage:
144
154
 
145
155
  ```
146
156
  # run all code quality audit tasks
147
- rake code_quality:quality_audit
157
+ code_quality quality_audit
148
158
  ```
149
159
 
150
160
  output example:
@@ -160,7 +170,7 @@ Audit task will return non-zero exit status and showing failure reason when pass
160
170
 
161
171
  ```
162
172
  # audit with lowest_score option
163
- rake code_quality:quality_audit:rubycritic lowest_score=94.5
173
+ code_quality quality_audit:rubycritic lowest_score=94.5
164
174
  ```
165
175
 
166
176
  output example:
@@ -172,7 +182,7 @@ output example:
172
182
  ##### options for rubocop
173
183
 
174
184
  ```
175
- # e.g.: rake code_quality:quality_audit:rubocop max_offenses=100
185
+ # e.g.: code_quality quality_audit:rubocop max_offenses=100
176
186
  # options:
177
187
  # config_formula: use which formula for config, supports "github, "rails" or path_to_your_local_config.yml, default is "github"
178
188
  # cli_options: pass extract options, e.g.: cli_options="--show-cops"
@@ -186,7 +196,7 @@ output example:
186
196
  ##### options for metric_fu
187
197
 
188
198
  ```
189
- # e.g.: rake code_quality:quality_audit:metric_fu metrics=stats,rails_best_practices,roodi rails_best_practices_max_offenses=9 roodi_max_offenses=10
199
+ # e.g.: code_quality quality_audit:metric_fu metrics=stats,rails_best_practices,roodi rails_best_practices_max_offenses=9 roodi_max_offenses=10
190
200
  # options:
191
201
  # metrics: default to run all metrics, can be config as: cane,churn,flay,flog,hotspots,rails_best_practices,rcov,reek,roodi,saikuro,stats
192
202
  # flay_max_offenses: offenses number for audit
@@ -205,7 +215,7 @@ output example:
205
215
 
206
216
  ```
207
217
  # run all at once
208
- rake code_quality:quality_audit lowest_score=90 max_offenses=100 metrics=stats,rails_best_practices,roodi rails_best_practices_max_offenses=10 roodi_max_offenses=10
218
+ code_quality quality_audit lowest_score=90 max_offenses=100 metrics=stats,rails_best_practices,roodi rails_best_practices_max_offenses=10 roodi_max_offenses=10
209
219
  ```
210
220
 
211
221
  #### work with CI
@@ -217,7 +227,8 @@ Configure audit value options that matching to your own ruby/rails project, for
217
227
  code_quality_audit:
218
228
  stage: test
219
229
  script:
220
- - bundle exec rake code_quality:quality_audit lowest_score=93 rails_best_practices_max_offenses=10
230
+ - gem install code_quality
231
+ - code_quality quality_audit lowest_score=93 rails_best_practices_max_offenses=10
221
232
 
222
233
  ```
223
234
 
@@ -0,0 +1,260 @@
1
+ # CodeQuality
2
+
3
+ Run code quality and security audit report with one rake task as `rake code_quality`.
4
+
5
+ [![Gem Version](https://badge.fury.io/rb/code_quality.svg)](https://badge.fury.io/rb/code_quality)
6
+ [![Build Status](https://travis-ci.org/rainchen/code_quality.svg)](https://travis-ci.org/rainchen/code_quality)
7
+ [![HitCount](http://hits.dwyl.io/rainchen/code_quality.svg)](http://hits.dwyl.io/rainchen/code_quality)
8
+
9
+ ## Principle
10
+
11
+ > If you can’t measure it, you can’t improve it.
12
+
13
+
14
+ ## Installation
15
+
16
+ Add this line to your application's Gemfile:
17
+
18
+ ```ruby
19
+ group :development do
20
+ gem 'code_quality'
21
+ end
22
+ ```
23
+
24
+ And then execute:
25
+
26
+ $ bundle
27
+
28
+ ## Usage
29
+
30
+ To generate security audit and code quality report:
31
+
32
+ ```
33
+ rake code_quality
34
+ ```
35
+
36
+ will output report like:
37
+
38
+ ```
39
+ # Code Quality Report
40
+
41
+ Generated by code_quality (v0.1.3) @ 2018-01-12 16:32:20 +0800
42
+
43
+ ## bundler audit - checks for vulnerable versions of gems in Gemfile.lock
44
+
45
+ ......
46
+
47
+ ```
48
+
49
+ [Code Quality Report Example](doc/code_quality_report_example.md)
50
+
51
+ [Code Quality Report Details Example](https://rainchen.github.io/code_quality/)
52
+
53
+ ### Two major audit tasks
54
+
55
+ There are 2 types of audit tasks: `security_audit` and `quality_audit`, each sub task can be run separately.
56
+
57
+ In summary:
58
+
59
+ - run `rake code_quality:security_audit` to get security audit report
60
+ - run `rake code_quality:quality_audit` to get code quality report
61
+
62
+ ### Report result using Markdown format
63
+
64
+ You can output report using `rake code_quality > code_quality_report.md` then open it with a Markdown editor.
65
+
66
+
67
+
68
+ ### Security Audit
69
+
70
+ Use [bundler-audit](https://rubygems.org/gems/bundler-audit) for patch-level verification for ruby projects which using `bundler`,
71
+ use [brakeman](https://rubygems.org/gems/brakeman) to detect security vulnerabilities for Rails applications.
72
+
73
+ #### usage:
74
+
75
+ ```
76
+ # run security audit tasks
77
+ rake code_quality:security_audit
78
+ ```
79
+
80
+ output example:
81
+
82
+ ![](doc/imgs/code_quality_security_audit_failed_example.png)
83
+
84
+
85
+ #### work with CI
86
+
87
+ Recommend setting up this task as part of a CI pipeline. For example, adding a job to stage "test" for Gitlab-CI:
88
+
89
+ ```
90
+ # .gitlab-ci.yml
91
+ code_security_audit:
92
+ stage: test
93
+ script:
94
+ - bundle exec rake code_quality:security_audit
95
+ ```
96
+ Gitlab-CI pipeline example:
97
+
98
+ ![](doc/imgs/code_security_audit_faild_on_ci_example.png)
99
+
100
+ Then Gitlab sends notification with the failure info, for example:
101
+
102
+ ![](doc/imgs/code_security_audit_faild_gitlab_notification_example.png)
103
+
104
+ [Tips] Code analyzers are your friends for writing secure code, since they're diligent and they don't get tired, thirsty, hungry, or bored.
105
+
106
+
107
+ #### Each sub task can be run separately
108
+
109
+ ```
110
+ # bundler audit - checks for vulnerable versions of gems in Gemfile.lock
111
+ rake code_quality:security_audit:bundler_audit
112
+ ```
113
+
114
+ ```
115
+ # brakeman audit - checks Ruby on Rails applications for security vulnerabilities
116
+ rake code_quality:security_audit:brakeman
117
+ ```
118
+
119
+ ```
120
+ # show helpful URLs
121
+ rake code_quality:security_audit:resources
122
+ ```
123
+
124
+
125
+ ### Code Quality Audit
126
+
127
+ Base on these ruby code analysis gems, you can choose suitable ones for your project:
128
+
129
+ - use [rubycritic](https://github.com/whitesmith/rubycritic) static analysis gems such as Reek, Flay and Flog to provide a quality report and get an evaluated score of your Ruby code.
130
+
131
+ - use [rubocop](https://github.com/bbatsov/rubocop/) to audit coding style and get refactor suggestion.
132
+
133
+ - use [metric_fu](https://github.com/metricfu/metric_fu) to get many kinds of code metrics from Flog, Flay, Saikuro, Churn, Reek, Roodi, Code Statistics, and Rails Best Practices. (and optionally RCov)
134
+
135
+
136
+ In summary:
137
+
138
+ - run `rake code_quality:rubycritic` to get an evaluated score and code smells
139
+ - run `rake code_quality:rubocop` to audit coding style and get refactor suggestions
140
+ - run `rake code_quality:metric_fu` to get many kinds of code metrics, including rails best practice suggestions, recommend to use for rails project
141
+
142
+
143
+ #### usage:
144
+
145
+ ```
146
+ # run all code quality audit tasks
147
+ rake code_quality:quality_audit
148
+ ```
149
+
150
+ output example:
151
+
152
+ ![](doc/imgs/code_quality_quality_audit_example.png)
153
+
154
+ [Tips] You don't have to run all audit tasks, some code metrics are the same using by rubycritic and metric_fu. You can choose them based on your needs, the more tasks will take longer running time, unless you don't care about time-consuming problem.
155
+
156
+
157
+ #### Run audit task with audit value option
158
+
159
+ Audit task will return non-zero exit status and showing failure reason when passing an audit value option and the value is lower than the result in report, for example:
160
+
161
+ ```
162
+ # audit with lowest_score option
163
+ rake code_quality:quality_audit:rubycritic lowest_score=94.5
164
+ ```
165
+
166
+ output example:
167
+
168
+ ![](doc/imgs/code_quality_quality_audit_failed_example.png)
169
+
170
+ #### Each audit task accepts different audit value options
171
+
172
+ ##### options for rubocop
173
+
174
+ ```
175
+ # e.g.: rake code_quality:quality_audit:rubocop max_offenses=100
176
+ # options:
177
+ # config_formula: use which formula for config, supports "github, "rails" or path_to_your_local_config.yml, default is "github"
178
+ # cli_options: pass extract options, e.g.: cli_options="--show-cops"
179
+ # max_offenses: if config max_offenses then audit it with detected offenses number in report, e.g.: max_offenses=100
180
+ ```
181
+
182
+ output example:
183
+
184
+ ![](doc/imgs/code_quality_quality_audit_rubocop_failed_example.png)
185
+
186
+ ##### options for metric_fu
187
+
188
+ ```
189
+ # e.g.: rake code_quality:quality_audit:metric_fu metrics=stats,rails_best_practices,roodi rails_best_practices_max_offenses=9 roodi_max_offenses=10
190
+ # options:
191
+ # metrics: default to run all metrics, can be config as: cane,churn,flay,flog,hotspots,rails_best_practices,rcov,reek,roodi,saikuro,stats
192
+ # flay_max_offenses: offenses number for audit
193
+ # cane_max_offenses: offenses number for audit
194
+ # rails_best_practices_max_offenses: offenses number for audit
195
+ # reek_max_offenses: offenses number for audit
196
+ # roodi_max_offenses: offenses number for audit
197
+ ```
198
+
199
+ output example:
200
+
201
+ ![](doc/imgs/code_quality_quality_audit_metric_fu_failed_example.png)
202
+
203
+
204
+ ##### options can be joint together
205
+
206
+ ```
207
+ # run all at once
208
+ rake code_quality:quality_audit lowest_score=90 max_offenses=100 metrics=stats,rails_best_practices,roodi rails_best_practices_max_offenses=10 roodi_max_offenses=10
209
+ ```
210
+
211
+ #### work with CI
212
+
213
+ Configure audit value options that matching to your own ruby/rails project, for example:
214
+
215
+ ```
216
+ # .gitlab-ci.yml
217
+ code_quality_audit:
218
+ stage: test
219
+ script:
220
+ - bundle exec rake code_quality:quality_audit lowest_score=93 rails_best_practices_max_offenses=10
221
+
222
+ ```
223
+
224
+ [Tips] Don't rely on your diligence, just let CI doing the boring/repeating/time-consuming jobs can make you more enjoyable in programming.
225
+
226
+
227
+ #### code quality audit task report
228
+
229
+ Code quality audit task report will be saved to `tmp/code_quality/quality_audit/`, and will be auto open in web browser.
230
+
231
+ rubycritic report example:
232
+
233
+ ![](doc/imgs/rubycritic_report_example.png)
234
+
235
+ rubocop report example:
236
+
237
+ ![](doc/imgs/rubocop_report_example.png)
238
+
239
+ metric_fu report example:
240
+
241
+ ![](doc/imgs/metric_fu_report_example.png)
242
+
243
+ metric_fu analyzed file report example:
244
+
245
+ ![](doc/imgs/metric_fu_file_report_example.png)
246
+
247
+
248
+ ## Development
249
+
250
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
251
+
252
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
253
+
254
+ ## Contributing
255
+
256
+ Bug reports and pull requests are welcome on GitHub at https://github.com/rainchen/code_quality.
257
+
258
+ ## License
259
+
260
+ The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
@@ -9,8 +9,8 @@ Gem::Specification.new do |spec|
9
9
  spec.authors = ["RainChen"]
10
10
  spec.email = ["hirainchen@gmail.com"]
11
11
 
12
- spec.summary = %q{run code quality and security audit report with one rake task}
13
- spec.description = %q{run code quality and security audit report with one rake task}
12
+ spec.summary = %q{run code quality and security audit report with one command}
13
+ spec.description = %q{run code quality and security audit report with one command or one rake task}
14
14
  spec.homepage = "https://github.com/rainchen/code_quality"
15
15
  spec.license = "MIT"
16
16
 
@@ -0,0 +1,13 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ # allow to run exe/code_quality for local development
4
+ git_path = File.expand_path("../.git", __dir__)
5
+ if File.exist?(git_path)
6
+ railties_path = File.expand_path("../lib", __dir__)
7
+ $:.unshift(railties_path)
8
+ end
9
+
10
+ require "code_quality"
11
+ require "code_quality/cli"
12
+
13
+ CodeQuality::CLI.start
@@ -0,0 +1,95 @@
1
+ require "rake"
2
+
3
+ module CodeQuality
4
+ class CLI
5
+ def self.start(argv = ARGV)
6
+ Application.new.run
7
+ end
8
+
9
+ # doc: http://www.rubydoc.info/gems/rake/Rake/Application
10
+ class Application < Rake::Application
11
+ def initialize
12
+ super
13
+ @name = "code_quality"
14
+ end
15
+
16
+ def run
17
+ Rake.application = self
18
+ @rakefiles = []
19
+ add_import File.join(lib_dir, "tasks", "code_quality.rake")
20
+ standard_exception_handling do
21
+ init name
22
+ load_rakefile
23
+ top_level
24
+ end
25
+ end
26
+
27
+ def in_namespace(name)
28
+ if name == @name # remove root namespace
29
+ yield
30
+ else
31
+ super
32
+ end
33
+ end
34
+
35
+ # allow option "--help"
36
+ def handle_options
37
+ options.rakelib = ["rakelib"]
38
+ options.trace_output = $stderr
39
+
40
+ OptionParser.new do |opts|
41
+ opts.separator "Run code_quality for a ruby/rails project, e.g.:"
42
+ opts.separator " code_quality lowest_score=90 max_offenses=100 metrics=stats,rails_best_practices,roodi rails_best_practices_max_offenses=10 roodi_max_offenses=10"
43
+ opts.separator ""
44
+ opts.separator "Show available tasks:"
45
+ opts.separator " code_quality -T"
46
+ opts.separator ""
47
+ opts.separator "Invoke a audit task:"
48
+ opts.separator " code_quality AUDIT_TASK"
49
+ opts.separator ""
50
+ opts.separator "Advanced options:"
51
+
52
+ opts.on_tail("-h", "--help", "-H", "Display this help message.") do
53
+ puts opts
54
+ exit
55
+ end
56
+
57
+ standard_rake_options.each { |args| opts.on(*args) }
58
+ opts.environment("RAKEOPT")
59
+ end.parse!
60
+ end
61
+
62
+ # overwrite options
63
+ def sort_options(options)
64
+ super.push(__version)
65
+ end
66
+
67
+ # allow option "--version"
68
+ def __version
69
+ ["--version", "-V",
70
+ "Display the program version.",
71
+ lambda do |_value|
72
+ puts "CodeQuality #{CodeQuality::VERSION}"
73
+ exit
74
+ end]
75
+ end
76
+
77
+ # allows running `code_quality` without a Rakefile
78
+ def find_rakefile_location
79
+ if (location = super).nil?
80
+ [rakefile_path, Dir.pwd]
81
+ else
82
+ location
83
+ end
84
+ end
85
+
86
+ def lib_dir
87
+ File.expand_path("../../../lib", __FILE__)
88
+ end
89
+
90
+ def rakefile_path
91
+ File.join(lib_dir, "code_quality.rb")
92
+ end
93
+ end
94
+ end
95
+ end
@@ -1,3 +1,3 @@
1
1
  module CodeQuality
2
- VERSION = "0.1.9"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -1,6 +1,6 @@
1
1
  desc "Generate security audit and code quality report"
2
2
  # e.g.: rake code_quality lowest_score=90 max_offenses=100 metrics=stats,rails_best_practices,roodi rails_best_practices_max_offenses=10 roodi_max_offenses=10
3
- task :code_quality => :"code_quality:default" do; end
3
+ task :code_quality => :"code_quality:default" do; end if Rake.application.instance_of?(Rake::Application)
4
4
  namespace :code_quality do
5
5
  task :default => [:summary, :security_audit, :quality_audit, :generate_index] do; end
6
6
 
@@ -80,7 +80,7 @@ namespace :code_quality do
80
80
  # fail_fast: to stop immediately if any audit task fails, by default fail_fast=false
81
81
  # generate_index: generate a report index page to tmp/code_quality/quality_audit/index.html, by default generate_index=false
82
82
  task :quality_audit => [:"quality_audit:default"] do; end
83
- namespace :quality_audit do
83
+ namespace :quality_audit do |ns|
84
84
  # default tasks
85
85
  task :default => [:run_all, :resources] do; end
86
86
 
@@ -92,9 +92,8 @@ namespace :code_quality do
92
92
  audit_tasks = [:rubycritic, :rubocop, :metric_fu]
93
93
  exc = nil
94
94
  audit_tasks.each do |task_name|
95
- full_task_name = :"code_quality:quality_audit:#{task_name}"
96
95
  begin
97
- task = Rake::Task[full_task_name]
96
+ task = ns[task_name]
98
97
  task.invoke
99
98
  rescue SystemExit => exc
100
99
  raise exc if fail_fast == "true"
@@ -222,7 +221,7 @@ namespace :code_quality do
222
221
  puts "for metrics: #{selected_metrics.join(",")}"
223
222
  end
224
223
  # geneate report
225
- report = `bundle exec metric_fu --no-open #{metric_fu_opts}`
224
+ report = `metric_fu --no-open #{metric_fu_opts}`
226
225
  FileUtils.remove_dir(report_path) if Dir.exists? report_path
227
226
  FileUtils.mv("tmp/metric_fu/output", report_path, force: true)
228
227
  puts report
@@ -288,7 +287,7 @@ namespace :code_quality do
288
287
  @audit_tasks[task_name][:failure] = exc.message.gsub(/(\e\[\d+m)/, "")
289
288
  ensure
290
289
  # get @report_path set in each audit task
291
- @audit_tasks[task_name][:report_path] = @report_path.sub("tmp/code_quality/", "")
290
+ @audit_tasks[task_name][:report_path] = @report_path&.sub("tmp/code_quality/", "")
292
291
  end
293
292
  puts "```", ""
294
293
  raise exc if exc
@@ -347,6 +346,7 @@ namespace :code_quality do
347
346
 
348
347
  def show_in_browser(dir)
349
348
  require "launchy"
349
+ require "uri"
350
350
  uri = URI.escape("file://#{dir}/")
351
351
  if File.directory?(dir)
352
352
  uri = URI.join(uri, "index.html")
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: code_quality
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - RainChen
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-01-23 00:00:00.000000000 Z
11
+ date: 2018-02-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler-audit
@@ -136,10 +136,12 @@ dependencies:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
138
  version: '3.0'
139
- description: run code quality and security audit report with one rake task
139
+ description: run code quality and security audit report with one command or one rake
140
+ task
140
141
  email:
141
142
  - hirainchen@gmail.com
142
- executables: []
143
+ executables:
144
+ - code_quality
143
145
  extensions: []
144
146
  extra_rdoc_files: []
145
147
  files:
@@ -149,6 +151,7 @@ files:
149
151
  - Gemfile
150
152
  - LICENSE.txt
151
153
  - README.md
154
+ - README_for_rake.md
152
155
  - Rakefile
153
156
  - app/readme
154
157
  - app/views/code_quality/index.html.erb
@@ -158,7 +161,9 @@ files:
158
161
  - code_quality.gemspec
159
162
  - config/rubocop-github.yml
160
163
  - config/rubocop-rails.yml
164
+ - exe/code_quality
161
165
  - lib/code_quality.rb
166
+ - lib/code_quality/cli.rb
162
167
  - lib/code_quality/railtie.rb
163
168
  - lib/code_quality/version.rb
164
169
  - lib/tasks/code_quality.rake
@@ -185,5 +190,5 @@ rubyforge_project:
185
190
  rubygems_version: 2.7.4
186
191
  signing_key:
187
192
  specification_version: 4
188
- summary: run code quality and security audit report with one rake task
193
+ summary: run code quality and security audit report with one command
189
194
  test_files: []