devtools 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rspec +1 -0
- data/Gemfile +0 -2
- data/README.md +2 -2
- data/circle.yml +1 -1
- data/config/devtools.yml +2 -0
- data/config/flay.yml +2 -2
- data/config/flog.yml +1 -1
- data/config/mutant.yml +2 -0
- data/config/reek.yml +7 -12
- data/devtools.gemspec +20 -18
- data/lib/devtools.rb +34 -83
- data/lib/devtools/config.rb +76 -55
- data/lib/devtools/flay.rb +94 -0
- data/lib/devtools/project.rb +28 -105
- data/lib/devtools/project/initializer.rb +2 -12
- data/lib/devtools/project/initializer/rake.rb +9 -7
- data/lib/devtools/project/initializer/rspec.rb +28 -55
- data/lib/devtools/rake/flay.rb +126 -0
- data/lib/devtools/spec_helper.rb +1 -3
- data/shared/spec/shared/abstract_type_behavior.rb +0 -2
- data/shared/spec/shared/command_method_behavior.rb +0 -2
- data/shared/spec/shared/each_method_behaviour.rb +0 -2
- data/shared/spec/shared/hash_method_behavior.rb +0 -2
- data/shared/spec/shared/idempotent_method_behavior.rb +0 -2
- data/shared/spec/support/ice_nine_config.rb +0 -2
- data/spec/integration/devtools/rake/flay/verify_spec.rb +164 -0
- data/spec/spec_helper.rb +2 -8
- data/spec/unit/devtools/config/yardstick_spec.rb +17 -0
- data/spec/unit/devtools/config_spec.rb +78 -0
- data/spec/unit/devtools/flay/file_list/call_spec.rb +19 -0
- data/spec/unit/devtools/flay/scale/flay_report_spec.rb +17 -0
- data/spec/unit/devtools/flay/scale/measure_spec.rb +43 -0
- data/spec/unit/devtools/project/initializer/rake_spec.rb +21 -0
- data/spec/unit/devtools/project/initializer/rspec_spec.rb +52 -0
- data/spec/unit/devtools/project_spec.rb +34 -0
- data/spec/unit/devtools_spec.rb +14 -0
- data/tasks/metrics/ci.rake +1 -3
- data/tasks/metrics/coverage.rake +0 -2
- data/tasks/metrics/flay.rake +6 -33
- data/tasks/metrics/flog.rake +0 -2
- data/tasks/metrics/mutant.rake +31 -39
- data/tasks/metrics/reek.rake +0 -2
- data/tasks/metrics/rubocop.rake +0 -2
- data/tasks/metrics/yardstick.rake +0 -14
- data/tasks/spec.rake +0 -2
- data/tasks/yard.rake +0 -2
- metadata +96 -31
- data/.travis.yml +0 -15
- data/TODO +0 -0
- data/bin/devtools +0 -18
- data/default/config/devtools.yml +0 -2
- data/default/config/flay.yml +0 -3
- data/default/config/flog.yml +0 -2
- data/default/config/mutant.yml +0 -3
- data/default/config/reek.yml +0 -103
- data/default/config/rubocop.yml +0 -91
- data/default/config/yardstick.yml +0 -2
- data/lib/devtools/platform.rb +0 -118
- data/lib/devtools/site.rb +0 -41
- data/lib/devtools/site/initializer.rb +0 -57
data/.travis.yml
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
sudo: false
|
2
|
-
language: ruby
|
3
|
-
bundler_args: --without yard guard benchmarks
|
4
|
-
script: "bundle exec rake ci"
|
5
|
-
rvm:
|
6
|
-
- '2.1'
|
7
|
-
- '2.2'
|
8
|
-
- rbx
|
9
|
-
matrix:
|
10
|
-
include:
|
11
|
-
- rvm: jruby
|
12
|
-
env: JRUBY_OPTS="$JRUBY_OPTS --debug --2.0"
|
13
|
-
allow_failures:
|
14
|
-
- rvm: jruby
|
15
|
-
- rvm: rbx
|
data/TODO
DELETED
File without changes
|
data/bin/devtools
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# encoding: utf-8
|
3
|
-
|
4
|
-
require 'bundler'
|
5
|
-
|
6
|
-
Bundler.setup
|
7
|
-
|
8
|
-
require 'devtools'
|
9
|
-
|
10
|
-
command = ARGV.first
|
11
|
-
|
12
|
-
case command
|
13
|
-
when 'init' then Devtools.init
|
14
|
-
when 'sync' then Devtools.sync
|
15
|
-
when 'update' then Devtools.update
|
16
|
-
else
|
17
|
-
puts 'command not supported'
|
18
|
-
end
|
data/default/config/devtools.yml
DELETED
data/default/config/flay.yml
DELETED
data/default/config/flog.yml
DELETED
data/default/config/mutant.yml
DELETED
data/default/config/reek.yml
DELETED
@@ -1,103 +0,0 @@
|
|
1
|
-
---
|
2
|
-
Attribute:
|
3
|
-
enabled: true
|
4
|
-
exclude: []
|
5
|
-
BooleanParameter:
|
6
|
-
enabled: true
|
7
|
-
exclude: []
|
8
|
-
ClassVariable:
|
9
|
-
enabled: true
|
10
|
-
exclude: []
|
11
|
-
ControlParameter:
|
12
|
-
enabled: true
|
13
|
-
exclude: []
|
14
|
-
DataClump:
|
15
|
-
enabled: true
|
16
|
-
exclude: []
|
17
|
-
max_copies: 2
|
18
|
-
min_clump_size: 2
|
19
|
-
DuplicateMethodCall:
|
20
|
-
enabled: true
|
21
|
-
exclude: []
|
22
|
-
max_calls: 1
|
23
|
-
allow_calls: []
|
24
|
-
FeatureEnvy:
|
25
|
-
enabled: true
|
26
|
-
exclude: []
|
27
|
-
IrresponsibleModule:
|
28
|
-
enabled: true
|
29
|
-
exclude: []
|
30
|
-
LongParameterList:
|
31
|
-
enabled: true
|
32
|
-
exclude: []
|
33
|
-
max_params: 2
|
34
|
-
overrides:
|
35
|
-
initialize:
|
36
|
-
max_params: 3
|
37
|
-
LongYieldList:
|
38
|
-
enabled: true
|
39
|
-
exclude: []
|
40
|
-
max_params: 2
|
41
|
-
NestedIterators:
|
42
|
-
enabled: true
|
43
|
-
exclude: []
|
44
|
-
max_allowed_nesting: 1
|
45
|
-
ignore_iterators: []
|
46
|
-
NilCheck:
|
47
|
-
enabled: true
|
48
|
-
exclude: []
|
49
|
-
RepeatedConditional:
|
50
|
-
enabled: true
|
51
|
-
exclude: []
|
52
|
-
max_ifs: 1
|
53
|
-
TooManyInstanceVariables:
|
54
|
-
enabled: true
|
55
|
-
exclude: []
|
56
|
-
max_instance_variables: 3
|
57
|
-
TooManyMethods:
|
58
|
-
enabled: true
|
59
|
-
exclude: []
|
60
|
-
max_methods: 10
|
61
|
-
TooManyStatements:
|
62
|
-
enabled: true
|
63
|
-
exclude:
|
64
|
-
- each
|
65
|
-
max_statements: 2
|
66
|
-
UncommunicativeMethodName:
|
67
|
-
enabled: true
|
68
|
-
exclude: []
|
69
|
-
reject:
|
70
|
-
- !ruby/regexp /^[a-z]$/
|
71
|
-
- !ruby/regexp /[0-9]$/
|
72
|
-
- !ruby/regexp /[A-Z]/
|
73
|
-
accept: []
|
74
|
-
UncommunicativeModuleName:
|
75
|
-
enabled: true
|
76
|
-
exclude: []
|
77
|
-
reject:
|
78
|
-
- !ruby/regexp /^.$/
|
79
|
-
- !ruby/regexp /[0-9]$/
|
80
|
-
accept: []
|
81
|
-
UncommunicativeParameterName:
|
82
|
-
enabled: true
|
83
|
-
exclude: []
|
84
|
-
reject:
|
85
|
-
- !ruby/regexp /^.$/
|
86
|
-
- !ruby/regexp /[0-9]$/
|
87
|
-
- !ruby/regexp /[A-Z]/
|
88
|
-
accept: []
|
89
|
-
UncommunicativeVariableName:
|
90
|
-
enabled: true
|
91
|
-
exclude: []
|
92
|
-
reject:
|
93
|
-
- !ruby/regexp /^.$/
|
94
|
-
- !ruby/regexp /[0-9]$/
|
95
|
-
- !ruby/regexp /[A-Z]/
|
96
|
-
accept: []
|
97
|
-
UnusedParameters:
|
98
|
-
enabled: true
|
99
|
-
exclude: []
|
100
|
-
UtilityFunction:
|
101
|
-
enabled: true
|
102
|
-
exclude: []
|
103
|
-
max_helper_calls: 0
|
data/default/config/rubocop.yml
DELETED
@@ -1,91 +0,0 @@
|
|
1
|
-
AllCops:
|
2
|
-
Includes:
|
3
|
-
- '**/*.rake'
|
4
|
-
- 'Gemfile'
|
5
|
-
Excludes:
|
6
|
-
- '**/vendor/**'
|
7
|
-
- '**/benchmarks/**'
|
8
|
-
|
9
|
-
# Avoid parameter lists longer than five parameters.
|
10
|
-
ParameterLists:
|
11
|
-
Max: 3
|
12
|
-
CountKeywordArgs: true
|
13
|
-
|
14
|
-
# Limit method length
|
15
|
-
MethodLength:
|
16
|
-
CountComments: false
|
17
|
-
Max: 10
|
18
|
-
|
19
|
-
# Avoid more than `Max` levels of nesting.
|
20
|
-
BlockNesting:
|
21
|
-
Max: 3
|
22
|
-
|
23
|
-
# Align with the style guide.
|
24
|
-
CollectionMethods:
|
25
|
-
PreferredMethods:
|
26
|
-
collect: 'map'
|
27
|
-
inject: 'reduce'
|
28
|
-
find: 'detect'
|
29
|
-
find_all: 'select'
|
30
|
-
|
31
|
-
# Do not force public/protected/private keyword to be indented at the same
|
32
|
-
# level as the def keyword. My personal preference is to outdent these keywords
|
33
|
-
# because I think when scanning code it makes it easier to identify the
|
34
|
-
# sections of code and visually separate them. When the keyword is at the same
|
35
|
-
# level I think it sort of blends in with the def keywords and makes it harder
|
36
|
-
# to scan the code and see where the sections are.
|
37
|
-
AccessModifierIndentation:
|
38
|
-
Enabled: false
|
39
|
-
|
40
|
-
# Limit line length
|
41
|
-
LineLength:
|
42
|
-
Max: 79
|
43
|
-
|
44
|
-
# Disable documentation checking until a class needs to be documented once
|
45
|
-
Documentation:
|
46
|
-
Enabled: false
|
47
|
-
|
48
|
-
# Do not always use &&/|| instead of and/or.
|
49
|
-
AndOr:
|
50
|
-
Enabled: false
|
51
|
-
|
52
|
-
# Do not favor modifier if/unless usage when you have a single-line body
|
53
|
-
IfUnlessModifier:
|
54
|
-
Enabled: false
|
55
|
-
|
56
|
-
# Allow case equality operator (in limited use within the specs)
|
57
|
-
CaseEquality:
|
58
|
-
Enabled: false
|
59
|
-
|
60
|
-
# Constants do not always have to use SCREAMING_SNAKE_CASE
|
61
|
-
ConstantName:
|
62
|
-
Enabled: false
|
63
|
-
|
64
|
-
# Not all trivial readers/writers can be defined with attr_* methods
|
65
|
-
TrivialAccessors:
|
66
|
-
Enabled: false
|
67
|
-
|
68
|
-
# Do not prefer do/end over {} for multiline blocks
|
69
|
-
Blocks:
|
70
|
-
Enabled: false
|
71
|
-
|
72
|
-
# Allow empty lines around body
|
73
|
-
EmptyLinesAroundBody:
|
74
|
-
Enabled: false
|
75
|
-
|
76
|
-
# Prefer String#% over Kernel#sprintf
|
77
|
-
FormatString:
|
78
|
-
Enabled: false
|
79
|
-
|
80
|
-
# Use square brackets for literal Array objects
|
81
|
-
PercentLiteralDelimiters:
|
82
|
-
PreferredDelimiters:
|
83
|
-
'%': ()
|
84
|
-
'%i': '[]'
|
85
|
-
'%q': ()
|
86
|
-
'%Q': ()
|
87
|
-
'%r': '{}'
|
88
|
-
'%s': ()
|
89
|
-
'%w': '[]'
|
90
|
-
'%W': '[]'
|
91
|
-
'%x': ()
|
data/lib/devtools/platform.rb
DELETED
@@ -1,118 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
module Devtools
|
4
|
-
|
5
|
-
# Provides methods to determine the ruby platform
|
6
|
-
module Platform
|
7
|
-
|
8
|
-
DEFAULT_RVM_NAME = 'mri'.freeze
|
9
|
-
|
10
|
-
# Return Ruby engine string
|
11
|
-
#
|
12
|
-
# @return [String]
|
13
|
-
#
|
14
|
-
# @api private
|
15
|
-
def ruby_engine
|
16
|
-
@ruby_engine ||= (defined?(RUBY_ENGINE) && RUBY_ENGINE || 'ruby').freeze
|
17
|
-
end
|
18
|
-
|
19
|
-
# Return RVM name
|
20
|
-
#
|
21
|
-
# @return [String]
|
22
|
-
#
|
23
|
-
# @api private
|
24
|
-
def rvm_name
|
25
|
-
@rvm_name ||= begin
|
26
|
-
engine = ruby_engine
|
27
|
-
engine == 'ruby' ? DEFAULT_RVM_NAME : engine
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
# Return RVM string
|
32
|
-
#
|
33
|
-
# @return [String]
|
34
|
-
#
|
35
|
-
# @api private
|
36
|
-
def rvm
|
37
|
-
@rvm ||= "#{rvm_name}-#{RUBY_VERSION}".freeze
|
38
|
-
end
|
39
|
-
|
40
|
-
# Test for being executed under JRuby
|
41
|
-
#
|
42
|
-
# @return [true]
|
43
|
-
# if running under JRuby
|
44
|
-
#
|
45
|
-
# @return [false]
|
46
|
-
# otherwise
|
47
|
-
#
|
48
|
-
# @api private
|
49
|
-
def jruby?
|
50
|
-
ruby_engine == 'jruby'
|
51
|
-
end
|
52
|
-
|
53
|
-
# Test for being executed under rbx
|
54
|
-
#
|
55
|
-
# @return [true]
|
56
|
-
# if running under rbx
|
57
|
-
#
|
58
|
-
# @return [false]
|
59
|
-
# otherwise
|
60
|
-
#
|
61
|
-
# @api private
|
62
|
-
def rbx?
|
63
|
-
ruby_engine == 'rbx'
|
64
|
-
end
|
65
|
-
|
66
|
-
# Test for being executed under rubies with a JIT
|
67
|
-
#
|
68
|
-
# @return [true]
|
69
|
-
# if running under JRuby or rbx
|
70
|
-
#
|
71
|
-
# @return [false]
|
72
|
-
# otherwise
|
73
|
-
#
|
74
|
-
# @api private
|
75
|
-
def jit?
|
76
|
-
jruby? || rbx?
|
77
|
-
end
|
78
|
-
|
79
|
-
# Test for 1.8 mode
|
80
|
-
#
|
81
|
-
# @return [true]
|
82
|
-
# if running under 1.8.x
|
83
|
-
#
|
84
|
-
# @return [false]
|
85
|
-
# otherwise
|
86
|
-
#
|
87
|
-
# @api private
|
88
|
-
def ruby18?
|
89
|
-
RUBY_VERSION.start_with?('1.8.')
|
90
|
-
end
|
91
|
-
|
92
|
-
# Test for 1.9 mode
|
93
|
-
#
|
94
|
-
# @return [true]
|
95
|
-
# if running under 1.9.x
|
96
|
-
#
|
97
|
-
# @return [false]
|
98
|
-
# otherwise
|
99
|
-
#
|
100
|
-
# @api private
|
101
|
-
def ruby19?
|
102
|
-
RUBY_VERSION.start_with?('1.9.')
|
103
|
-
end
|
104
|
-
|
105
|
-
# Test for 2.0 mode
|
106
|
-
#
|
107
|
-
# @return [true]
|
108
|
-
# if running under 2.0.x
|
109
|
-
#
|
110
|
-
# @return [false]
|
111
|
-
# otherwise
|
112
|
-
#
|
113
|
-
# @api private
|
114
|
-
def ruby20?
|
115
|
-
RUBY_VERSION.start_with?('2.0.')
|
116
|
-
end
|
117
|
-
end # module Platform
|
118
|
-
end # module Devtools
|
data/lib/devtools/site.rb
DELETED
@@ -1,41 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
module Devtools
|
4
|
-
|
5
|
-
# Encapsulates a specific {Project} devtools is used for
|
6
|
-
class Site
|
7
|
-
|
8
|
-
attr_reader :root
|
9
|
-
|
10
|
-
attr_reader :project
|
11
|
-
|
12
|
-
def initialize(project)
|
13
|
-
@project = project
|
14
|
-
@root = project.root
|
15
|
-
end
|
16
|
-
|
17
|
-
# Initialize project and load shared specs
|
18
|
-
#
|
19
|
-
# Expects to be called from $application_root/spec/spec_helper.rb
|
20
|
-
#
|
21
|
-
# @return [self]
|
22
|
-
#
|
23
|
-
# @api private
|
24
|
-
def init_spec_helper
|
25
|
-
Project::Initializer::Rspec.call(project)
|
26
|
-
self
|
27
|
-
end
|
28
|
-
|
29
|
-
# Initialize devtools using default config
|
30
|
-
#
|
31
|
-
# @return [undefined]
|
32
|
-
#
|
33
|
-
# @api private
|
34
|
-
def init
|
35
|
-
Initializer.call(self)
|
36
|
-
puts 'Run bundle install to complete the devtools installation'
|
37
|
-
self
|
38
|
-
end
|
39
|
-
|
40
|
-
end # class Site
|
41
|
-
end # module Devtools
|
@@ -1,57 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
module Devtools
|
4
|
-
class Site
|
5
|
-
|
6
|
-
# Supports initializing new projects with a Rakefile
|
7
|
-
class Initializer
|
8
|
-
|
9
|
-
def self.call(root)
|
10
|
-
new(root).call
|
11
|
-
end
|
12
|
-
|
13
|
-
attr_reader :site
|
14
|
-
|
15
|
-
attr_reader :root
|
16
|
-
|
17
|
-
attr_reader :config_dir
|
18
|
-
|
19
|
-
def initialize(site)
|
20
|
-
@site = site
|
21
|
-
@root = site.root
|
22
|
-
config_dir = @root.join(DEFAULT_CONFIG_DIR_NAME).tap(&:mkpath)
|
23
|
-
@config_dir = config_dir.parent
|
24
|
-
end
|
25
|
-
|
26
|
-
# Init devtools using default config
|
27
|
-
#
|
28
|
-
# @return [undefined]
|
29
|
-
#
|
30
|
-
# @api public
|
31
|
-
def call
|
32
|
-
FileUtils.cp_r(DEFAULT_CONFIG_PATH, config_dir)
|
33
|
-
|
34
|
-
site.sync
|
35
|
-
init_rakefile
|
36
|
-
|
37
|
-
self
|
38
|
-
end
|
39
|
-
|
40
|
-
private
|
41
|
-
|
42
|
-
# Initialize the Rakefile
|
43
|
-
#
|
44
|
-
# @return [undefined]
|
45
|
-
#
|
46
|
-
# @api private
|
47
|
-
def init_rakefile
|
48
|
-
rakefile = root.join(RAKE_FILE_NAME)
|
49
|
-
return if rakefile.file? && rakefile.read.include?(INIT_RAKE_TASKS)
|
50
|
-
rakefile.open('a') do |file|
|
51
|
-
file << ANNOTATION_WRAPPER % [REQUIRE, INIT_RAKE_TASKS].join("\n")
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
end # class Initializer
|
56
|
-
end # class Site
|
57
|
-
end # module Devtools
|