code_quality 0.1.9 → 0.2.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 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: []