warder 0.1.4 → 0.1.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/features/checks_for_rails_best_practices.feature +2 -2
- data/features/checks_for_sandi_metz_rules.feature +25 -0
- data/features/step_definitions/checks_for_sandi_metz_rules_step.rb +7 -0
- data/features/step_definitions/run_steps.rb +1 -1
- data/lib/warder.rb +1 -0
- data/lib/warder/runner.rb +4 -2
- data/lib/warder/sandi_rules_runner.rb +18 -0
- data/lib/warder/version.rb +1 -1
- data/spec/fixtures/invalid_rails_app/app/controllers/application_controller.rb +7 -1
- data/spec/fixtures/invalid_rails_app/app/models/user.rb +5 -0
- data/warder.gemspec +1 -1
- metadata +23 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8fc3f7ef42e9897e30fe070ae20376ec610ef3e4
|
4
|
+
data.tar.gz: f8d04d91d316a1bd1b6b6318cb9d04231a00b8f5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b00b71994d9e5af8d39cf5634bb91c80c26ae7a9554f93c96c807b3839ba9104e41571081abde3cee0cdef33c1662feae0bff756829bb9455aa13522595a5efc
|
7
|
+
data.tar.gz: d8105384af5092c059ae96aa48f207f07355704061da94af94a94b3ee8f46e04e76b0298a46bdc732322ab6f2cec803ba6827224a0b01861c7bbacf45adc7d17
|
@@ -0,0 +1,25 @@
|
|
1
|
+
Feature: checks for Sandi Metz rules violations
|
2
|
+
In order to find Sandi Metz rules violations
|
3
|
+
As a ruby developer
|
4
|
+
I want to run warder with --sandi-rules option
|
5
|
+
|
6
|
+
Scenario: run warder with enabled sandi rules option
|
7
|
+
Given I have valid_rails_app project in directory
|
8
|
+
And I am on project directory
|
9
|
+
When I run `warder --sandi-rules`
|
10
|
+
Then warder detects sandi rules violations
|
11
|
+
Then the exit status should be 0
|
12
|
+
|
13
|
+
Scenario: run warder with enabled sandi rules option on invalid project
|
14
|
+
Given I have invalid_rails_app project in directory
|
15
|
+
And I am on project directory
|
16
|
+
When I run `warder --sandi-rules`
|
17
|
+
Then warder detects sandi rules violations
|
18
|
+
Then the exit status should be 1
|
19
|
+
|
20
|
+
Scenario: run warder with disabled sandi rules option on invalid project
|
21
|
+
Given I have invalid_rails_app project in directory
|
22
|
+
And I am on project directory
|
23
|
+
When I run `warder --no-sandi-rules`
|
24
|
+
Then warder does nothing
|
25
|
+
Then the exit status should be 0
|
@@ -16,7 +16,7 @@ Then(/^warder does nothing$/) do
|
|
16
16
|
step 'the output should match /.{0}/'
|
17
17
|
end
|
18
18
|
|
19
|
-
Then(/^warder detects (.+) issues$/) do |what|
|
19
|
+
Then(/^warder detects (.+) (issues|violations)$/) do |what, _|
|
20
20
|
executing_output = send(:"executing_#{what.gsub(' ', '_')}")
|
21
21
|
step "the output should contain \"#{executing_output}\""
|
22
22
|
|
data/lib/warder.rb
CHANGED
@@ -8,6 +8,7 @@ require 'warder/code_smells_runner'
|
|
8
8
|
require 'warder/code_complexity_runner'
|
9
9
|
require 'warder/rails_security_runner'
|
10
10
|
require 'warder/rails_advice_runner'
|
11
|
+
require 'warder/sandi_rules_runner'
|
11
12
|
require 'warder/bundle_audit_runner'
|
12
13
|
require 'warder/cli/arguments'
|
13
14
|
require 'warder/cli'
|
data/lib/warder/runner.rb
CHANGED
@@ -2,6 +2,7 @@ module Warder
|
|
2
2
|
# abstract class for command runners
|
3
3
|
class Runner
|
4
4
|
SCORE = 30
|
5
|
+
FAILURE_THRESHOLD = 0
|
5
6
|
|
6
7
|
def initialize(stdout, options = {})
|
7
8
|
@stdout = stdout
|
@@ -31,8 +32,9 @@ module Warder
|
|
31
32
|
end
|
32
33
|
|
33
34
|
def failed?(line)
|
34
|
-
|
35
|
-
match
|
35
|
+
klass = self.class
|
36
|
+
match = klass::FAILURE_REGEXP.match(line)
|
37
|
+
match && match[1].to_i != klass::FAILURE_THRESHOLD
|
36
38
|
end
|
37
39
|
|
38
40
|
def printable?(*)
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Warder
|
2
|
+
# responsible for run Sandi Metz rules validation
|
3
|
+
class SandiRulesRunner < Runner
|
4
|
+
CLI_OPTION = 'r'
|
5
|
+
CLI_FULL_OPTION = 'sandi-rules'
|
6
|
+
DESCRIPTION = 'Run Sandi Metz rules validation'
|
7
|
+
COMMAND_NAME = 'sandi_meter'
|
8
|
+
FAILURE_REGEXP = /\d\. (\d+)%/
|
9
|
+
FAILURE_THRESHOLD = 100
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def command_with_options
|
14
|
+
path = @options.files.split(' ').first
|
15
|
+
"#{COMMAND_NAME} -d -p #{path}"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/lib/warder/version.rb
CHANGED
@@ -4,6 +4,12 @@ class ApplicationController < ActionController::Base
|
|
4
4
|
protect_from_forgery with: :exception
|
5
5
|
|
6
6
|
def welcome
|
7
|
-
|
7
|
+
@user = User.new(params[:first_name], params[:last_name], params[:email], params[:password], params[:password_confirmation])
|
8
|
+
if @user
|
9
|
+
@logged_in = true
|
10
|
+
render text: "Hello #{@user.full_name}!"
|
11
|
+
else
|
12
|
+
render text: "Hello Anonymous!"
|
13
|
+
end
|
8
14
|
end
|
9
15
|
end
|
data/warder.gemspec
CHANGED
@@ -26,8 +26,8 @@ Gem::Specification.new do |spec|
|
|
26
26
|
spec.add_dependency 'mago'
|
27
27
|
spec.add_dependency 'brakeman'
|
28
28
|
spec.add_dependency 'rails_best_practices'
|
29
|
+
spec.add_dependency 'sandi_meter'
|
29
30
|
spec.add_dependency 'bundler-audit'
|
30
|
-
# spec.add_dependency 'sandi_meter'
|
31
31
|
|
32
32
|
spec.add_development_dependency 'bundler', '~> 1.3'
|
33
33
|
spec.add_development_dependency 'rake'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: warder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yura Tolstik
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-01-
|
11
|
+
date: 2014-01-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rubocop
|
@@ -122,6 +122,20 @@ dependencies:
|
|
122
122
|
- - ">="
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: sandi_meter
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :runtime
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
125
139
|
- !ruby/object:Gem::Dependency
|
126
140
|
name: bundler-audit
|
127
141
|
requirement: !ruby/object:Gem::Requirement
|
@@ -238,6 +252,7 @@ files:
|
|
238
252
|
- cucumber.yml
|
239
253
|
- features/checks_for_rails_best_practices.feature
|
240
254
|
- features/checks_for_rails_security_issues.feature
|
255
|
+
- features/checks_for_sandi_metz_rules.feature
|
241
256
|
- features/checks_for_vulnerable_gems.feature
|
242
257
|
- features/detects_code_complexity.feature
|
243
258
|
- features/detects_code_duplication.feature
|
@@ -247,6 +262,7 @@ files:
|
|
247
262
|
- features/show_version.feature
|
248
263
|
- features/step_definitions/checks_for_rails_best_practices_steps.rb
|
249
264
|
- features/step_definitions/checks_for_rails_security_issues_steps.rb
|
265
|
+
- features/step_definitions/checks_for_sandi_metz_rules_step.rb
|
250
266
|
- features/step_definitions/checks_for_vulnerable_gems_steps.rb
|
251
267
|
- features/step_definitions/detects_code_complexity_steps.rb
|
252
268
|
- features/step_definitions/detects_code_duplication_steps.rb
|
@@ -268,6 +284,7 @@ files:
|
|
268
284
|
- lib/warder/rails_advice_runner.rb
|
269
285
|
- lib/warder/rails_security_runner.rb
|
270
286
|
- lib/warder/runner.rb
|
287
|
+
- lib/warder/sandi_rules_runner.rb
|
271
288
|
- lib/warder/style_guide_runner.rb
|
272
289
|
- lib/warder/version.rb
|
273
290
|
- spec/fixtures/invalid_Gemfile
|
@@ -279,6 +296,7 @@ files:
|
|
279
296
|
- spec/fixtures/invalid_rails_app/Gemfile
|
280
297
|
- spec/fixtures/invalid_rails_app/Rakefile
|
281
298
|
- spec/fixtures/invalid_rails_app/app/controllers/application_controller.rb
|
299
|
+
- spec/fixtures/invalid_rails_app/app/models/user.rb
|
282
300
|
- spec/fixtures/invalid_rails_app/app/views/layouts/application.html.erb
|
283
301
|
- spec/fixtures/invalid_rails_app/config.ru
|
284
302
|
- spec/fixtures/invalid_rails_app/config/application.rb
|
@@ -352,6 +370,7 @@ summary: Warder of ruby code
|
|
352
370
|
test_files:
|
353
371
|
- features/checks_for_rails_best_practices.feature
|
354
372
|
- features/checks_for_rails_security_issues.feature
|
373
|
+
- features/checks_for_sandi_metz_rules.feature
|
355
374
|
- features/checks_for_vulnerable_gems.feature
|
356
375
|
- features/detects_code_complexity.feature
|
357
376
|
- features/detects_code_duplication.feature
|
@@ -361,6 +380,7 @@ test_files:
|
|
361
380
|
- features/show_version.feature
|
362
381
|
- features/step_definitions/checks_for_rails_best_practices_steps.rb
|
363
382
|
- features/step_definitions/checks_for_rails_security_issues_steps.rb
|
383
|
+
- features/step_definitions/checks_for_sandi_metz_rules_step.rb
|
364
384
|
- features/step_definitions/checks_for_vulnerable_gems_steps.rb
|
365
385
|
- features/step_definitions/detects_code_complexity_steps.rb
|
366
386
|
- features/step_definitions/detects_code_duplication_steps.rb
|
@@ -380,6 +400,7 @@ test_files:
|
|
380
400
|
- spec/fixtures/invalid_rails_app/Gemfile
|
381
401
|
- spec/fixtures/invalid_rails_app/Rakefile
|
382
402
|
- spec/fixtures/invalid_rails_app/app/controllers/application_controller.rb
|
403
|
+
- spec/fixtures/invalid_rails_app/app/models/user.rb
|
383
404
|
- spec/fixtures/invalid_rails_app/app/views/layouts/application.html.erb
|
384
405
|
- spec/fixtures/invalid_rails_app/config.ru
|
385
406
|
- spec/fixtures/invalid_rails_app/config/application.rb
|