abcing 0.0.1
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 +7 -0
- data/.gitignore +14 -0
- data/.rspec +1 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +47 -0
- data/Rakefile +2 -0
- data/abcing.gemspec +24 -0
- data/bin/abcing +7 -0
- data/lib/abcing.rb +50 -0
- data/lib/abcing/alphabet_match.rb +17 -0
- data/lib/abcing/class_file_finder.rb +29 -0
- data/lib/abcing/class_name_finder.rb +11 -0
- data/lib/abcing/colour_alphabet_result.rb +35 -0
- data/lib/abcing/renderer.rb +32 -0
- data/lib/abcing/scanner.rb +52 -0
- data/lib/abcing/version.rb +3 -0
- data/spec/alphabet_match_spec.rb +35 -0
- data/spec/class_file_finder_spec.rb +47 -0
- data/spec/class_name_finder_spec.rb +16 -0
- data/spec/colour_alphabet_result_spec.rb +35 -0
- data/spec/renderer_spec.rb +11 -0
- data/spec/scan_result_spec.rb +8 -0
- metadata +116 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 43744baaa2fe4138222d3ea2808e94658983a85e
|
4
|
+
data.tar.gz: 45d5010f1b3b3d2a597d0ecac85b17c5005918ce
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 5738aeb756c8e9009cd3ba43be511476b1b22bae652fec8fce779263588c2a2e7f548cbcbb037d08345ce689fa421d0d02d72dc7f51cbdd4753e8dc806079ef0
|
7
|
+
data.tar.gz: a97b72cac034dfa1d7d6f1744f966cd470da570fad89bac6ce673913228469a5c91f873fa0c40e914020c6001367dbab5e89819dbaef6c4018928b33eb6b9f24
|
data/.gitignore
ADDED
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--color
|
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2015 Emile
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
# ABCing
|
2
|
+
|
3
|
+

|
4
|
+
|
5
|
+
Dumbed down automated test coverage metrics.
|
6
|
+
Checks your working directory for class names, and tries to match them in the test directories.
|
7
|
+
|
8
|
+
The way this works is:
|
9
|
+
|
10
|
+
If it finds a matching class name in one of your test directories, you get a green result.
|
11
|
+
If it finds a class name in the working directory but not in the test directory, it is printed in red.
|
12
|
+
Other letters (not present in your working directory or test directories) are printed in yellow.
|
13
|
+
|
14
|
+
## Installation
|
15
|
+
|
16
|
+
Add this line to your application's Gemfile:
|
17
|
+
|
18
|
+
```ruby
|
19
|
+
gem 'abcing'
|
20
|
+
```
|
21
|
+
|
22
|
+
And then execute:
|
23
|
+
|
24
|
+
$ bundle
|
25
|
+
|
26
|
+
Or install it yourself as:
|
27
|
+
|
28
|
+
$ gem install abcing
|
29
|
+
|
30
|
+
## Usage
|
31
|
+
|
32
|
+
abcing /path/to/project/root
|
33
|
+
|
34
|
+
Currently this only considers app/ and lib/ for the scan.
|
35
|
+
It will check spec/ and features/ for matching class names found in the working directory.
|
36
|
+
|
37
|
+
## Contributing
|
38
|
+
|
39
|
+
1. Fork it ( https://github.com/[my-github-username]/abcing/fork )
|
40
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
41
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
42
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
43
|
+
5. Create a new Pull Request
|
44
|
+
|
45
|
+
## TODO
|
46
|
+
|
47
|
+
1. check for presence of config file for scan params
|
data/Rakefile
ADDED
data/abcing.gemspec
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'abcing/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "abcing"
|
8
|
+
spec.version = Abcing::VERSION
|
9
|
+
spec.authors = ["Emile"]
|
10
|
+
spec.email = ["emile.swarts123@gmail.com"]
|
11
|
+
spec.summary = %q{Dumb code metrics}
|
12
|
+
spec.description = %q{See coverage by alphabet}
|
13
|
+
spec.homepage = ""
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0")
|
17
|
+
spec.executables = ['abcing']
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_development_dependency "bundler", "~> 1.7"
|
22
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
23
|
+
spec.add_development_dependency "rspec", "~> 3.2.0"
|
24
|
+
end
|
data/bin/abcing
ADDED
data/lib/abcing.rb
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'abcing/alphabet_match'
|
2
|
+
require 'abcing/class_file_finder'
|
3
|
+
require 'abcing/class_name_finder'
|
4
|
+
require 'abcing/colour_alphabet_result'
|
5
|
+
require 'abcing/renderer'
|
6
|
+
require 'abcing/scanner'
|
7
|
+
require 'abcing/version'
|
8
|
+
|
9
|
+
module ABCing
|
10
|
+
class Runner
|
11
|
+
def initialize(working_dir)
|
12
|
+
@working_dir = working_dir
|
13
|
+
end
|
14
|
+
|
15
|
+
def run
|
16
|
+
app_directories = ["#{@working_dir}/app", "#{@working_dir}/lib"]
|
17
|
+
test_directories = ["#{@working_dir}/spec", "#{@working_dir}/features"]
|
18
|
+
|
19
|
+
params = {
|
20
|
+
app_directories: app_directories,
|
21
|
+
test_directories: test_directories }
|
22
|
+
|
23
|
+
scan_results = ABCing::Scanner.new(params).results
|
24
|
+
|
25
|
+
ABCing::Renderer.new(scan_results).render
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
class String
|
31
|
+
def colorize(color_code)
|
32
|
+
"\e[#{color_code}m#{self}\e[0m"
|
33
|
+
end
|
34
|
+
|
35
|
+
def red
|
36
|
+
colorize(31)
|
37
|
+
end
|
38
|
+
|
39
|
+
def green
|
40
|
+
colorize(32)
|
41
|
+
end
|
42
|
+
|
43
|
+
def yellow
|
44
|
+
colorize(33)
|
45
|
+
end
|
46
|
+
|
47
|
+
def pink
|
48
|
+
colorize(35)
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module ABCing
|
2
|
+
class AlphabetMatch
|
3
|
+
def initialize(class_names)
|
4
|
+
@class_names = class_names
|
5
|
+
end
|
6
|
+
|
7
|
+
def letters
|
8
|
+
class_letters.flatten.sort.uniq
|
9
|
+
end
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def class_letters
|
14
|
+
@class_names.map { |c| c[0] }
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
module ABCing
|
2
|
+
class ClassFileFinder
|
3
|
+
def initialize(directories = ['.'])
|
4
|
+
@target_directories = directories
|
5
|
+
end
|
6
|
+
|
7
|
+
def find
|
8
|
+
@target_directories.collect do |dir|
|
9
|
+
matching_files(dir)
|
10
|
+
end.flatten
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def matching_files(directory)
|
16
|
+
files_for_directory(directory).select do |f|
|
17
|
+
is_class_file? f
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def is_class_file?(file)
|
22
|
+
File.read(file).include?('class ')
|
23
|
+
end
|
24
|
+
|
25
|
+
def files_for_directory(directory)
|
26
|
+
Dir["#{directory}/**/*.rb"]
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
module ABCing
|
2
|
+
class ColourAlphabetResult
|
3
|
+
def initialize(params)
|
4
|
+
@test_letters = params.fetch(:test_letters)
|
5
|
+
@app_letters = params.fetch(:app_letters)
|
6
|
+
@alphabet = ('A'..'Z').to_a
|
7
|
+
end
|
8
|
+
|
9
|
+
def calculate
|
10
|
+
results = {}
|
11
|
+
|
12
|
+
@alphabet.each do |a|
|
13
|
+
results[a.to_sym] = colour(a)
|
14
|
+
end
|
15
|
+
|
16
|
+
results
|
17
|
+
end
|
18
|
+
|
19
|
+
def colour(letter)
|
20
|
+
return :green if test_letter_covered?(letter)
|
21
|
+
|
22
|
+
return :red if test_letter_not_covered?(letter)
|
23
|
+
|
24
|
+
:yellow
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_letter_covered?(letter)
|
28
|
+
@app_letters.include?(letter) and @test_letters.include?(letter)
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_letter_not_covered?(letter)
|
32
|
+
@app_letters.include?(letter) and !@test_letters.include?(letter)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module ABCing
|
2
|
+
class Renderer
|
3
|
+
def initialize(scan_results)
|
4
|
+
p scan_results
|
5
|
+
@alphabet = ('A'..'Z').to_a
|
6
|
+
@scan_results = scan_results
|
7
|
+
end
|
8
|
+
|
9
|
+
def render
|
10
|
+
puts report
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def report
|
16
|
+
coloured_letters.map do |coloured_letter, colour|
|
17
|
+
coloured_letter.to_s.send(colour)
|
18
|
+
end.join(' ')
|
19
|
+
end
|
20
|
+
|
21
|
+
def coloured_letters
|
22
|
+
test_letters = @scan_results.fetch(:test_letter_matches)
|
23
|
+
app_letters = @scan_results.fetch(:app_letter_matches)
|
24
|
+
|
25
|
+
params = {
|
26
|
+
test_letters: test_letters,
|
27
|
+
app_letters: app_letters }
|
28
|
+
|
29
|
+
ABCing::ColourAlphabetResult.new(params).calculate
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
module ABCing
|
2
|
+
class Scanner
|
3
|
+
def initialize(params)
|
4
|
+
@app_directories = params.fetch(:app_directories)
|
5
|
+
@test_directories = params.fetch(:test_directories)
|
6
|
+
end
|
7
|
+
|
8
|
+
def results
|
9
|
+
test_classes = []
|
10
|
+
|
11
|
+
app_class_names.each do |a|
|
12
|
+
@test_directories.each do |t|
|
13
|
+
entries = test_class_names(a)
|
14
|
+
test_classes << entries unless entries.empty?
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
{ test_letter_matches: first_letters(test_classes.flatten.uniq),
|
19
|
+
app_letter_matches: first_letters(app_class_names) }
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def test_class_names(app_class_name)
|
25
|
+
contents(test_files).collect { |e| e.scan(/^.*(#{app_class_name}).*$/) }.flatten
|
26
|
+
end
|
27
|
+
|
28
|
+
def app_class_names
|
29
|
+
class_names contents(files @app_directories)
|
30
|
+
end
|
31
|
+
|
32
|
+
def contents(files)
|
33
|
+
files.collect { |f| File.read(f) }
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_files
|
37
|
+
@test_directories.collect { |dir| Dir["#{dir}/**/*.rb"] }.flatten
|
38
|
+
end
|
39
|
+
|
40
|
+
def files(directories)
|
41
|
+
ABCing::ClassFileFinder.new(directories).find
|
42
|
+
end
|
43
|
+
|
44
|
+
def class_names(file_contents)
|
45
|
+
ABCing::ClassNameFinder.new(file_contents).find
|
46
|
+
end
|
47
|
+
|
48
|
+
def first_letters(class_names)
|
49
|
+
ABCing::AlphabetMatch.new(class_names).letters
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
|
2
|
+
require_relative '../lib/abcing/alphabet_match'
|
3
|
+
|
4
|
+
describe ABCing::AlphabetMatch do
|
5
|
+
before(:each) do
|
6
|
+
Dir.mkdir 'dummy'
|
7
|
+
end
|
8
|
+
|
9
|
+
after(:each) do
|
10
|
+
FileUtils.rm_rf 'dummy'
|
11
|
+
end
|
12
|
+
|
13
|
+
it 'collects 2 letters' do
|
14
|
+
class_names = ['Bar', 'Foo']
|
15
|
+
matcher = ABCing::AlphabetMatch.new(class_names)
|
16
|
+
|
17
|
+
expect(matcher.letters).to eq(['B', 'F'])
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'Only collects unique letters' do
|
21
|
+
class_names = ['Zoo', 'Zebra']
|
22
|
+
|
23
|
+
matcher = ABCing::AlphabetMatch.new(class_names)
|
24
|
+
|
25
|
+
expect(matcher.letters).to eq(['Z'])
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'Orders letter results alphabetically' do
|
29
|
+
class_names = ['Cobra', 'Acid', 'Bee']
|
30
|
+
|
31
|
+
matcher = ABCing::AlphabetMatch.new(class_names)
|
32
|
+
|
33
|
+
expect(matcher.letters).to eq(['A', 'B', 'C'])
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
require 'abcing/class_file_finder'
|
3
|
+
|
4
|
+
describe ABCing::ClassFileFinder do
|
5
|
+
before(:each) do
|
6
|
+
Dir.mkdir 'dummy'
|
7
|
+
out_file = File.new("dummy/foo.rb", "w")
|
8
|
+
out_file.puts("class Foo; end;")
|
9
|
+
out_file.close
|
10
|
+
|
11
|
+
out_file = File.new("dummy/bar.rb", "w")
|
12
|
+
out_file.puts("class Foo; end;")
|
13
|
+
out_file.close
|
14
|
+
end
|
15
|
+
|
16
|
+
after(:each) do
|
17
|
+
FileUtils.rm_rf 'dummy'
|
18
|
+
end
|
19
|
+
|
20
|
+
context 'Included files' do
|
21
|
+
it 'Finds files with class defined in them' do
|
22
|
+
expected_results = [
|
23
|
+
'dummy/bar.rb',
|
24
|
+
'dummy/foo.rb',
|
25
|
+
]
|
26
|
+
|
27
|
+
finder = ABCing::ClassFileFinder.new(['dummy'])
|
28
|
+
expect(finder.find).to eq(expected_results)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
context 'Excluded files' do
|
33
|
+
it 'that do not have a .rb extension' do
|
34
|
+
out_file = File.new("dummy/foo_config.txt", "w")
|
35
|
+
out_file.puts("class FooConfig; end;")
|
36
|
+
out_file.close
|
37
|
+
|
38
|
+
expected_results = [
|
39
|
+
'dummy/bar.rb',
|
40
|
+
'dummy/foo.rb',
|
41
|
+
]
|
42
|
+
|
43
|
+
finder = ABCing::ClassFileFinder.new(['dummy'])
|
44
|
+
expect(finder.find).to eq(expected_results)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require_relative '../lib/abcing/class_name_finder.rb'
|
2
|
+
|
3
|
+
describe ABCing::ClassNameFinder do
|
4
|
+
it 'produces class names from string input' do
|
5
|
+
content = ['class Something; end']
|
6
|
+
finder = ABCing::ClassNameFinder.new(content)
|
7
|
+
expect(finder.find).to eq(['Something'])
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'Only finds unique class names' do
|
11
|
+
content = ['class Something; end
|
12
|
+
class Something; end']
|
13
|
+
finder = ABCing::ClassNameFinder.new(content)
|
14
|
+
expect(finder.find).to eq(['Something'])
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require_relative '../lib/abcing/colour_alphabet_result.rb'
|
2
|
+
|
3
|
+
describe ABCing::ColourAlphabetResult do
|
4
|
+
it 'finds tested class letters' do
|
5
|
+
params = {
|
6
|
+
test_letters: ['A', 'B'],
|
7
|
+
app_letters: ['A', 'B']
|
8
|
+
}
|
9
|
+
|
10
|
+
result = ABCing::ColourAlphabetResult.new(params).calculate
|
11
|
+
expect(result).to include(A: :green, B: :green)
|
12
|
+
end
|
13
|
+
|
14
|
+
it 'does not find a test for a class letter' do
|
15
|
+
params = {
|
16
|
+
test_letters: ['A'],
|
17
|
+
app_letters: ['A', 'B']
|
18
|
+
}
|
19
|
+
|
20
|
+
result = ABCing::ColourAlphabetResult.new(params).calculate
|
21
|
+
expect(result).to include(A: :green, B: :red)
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'does not find an application class or test class from the letter of the alphabet' do
|
25
|
+
params = {
|
26
|
+
test_letters: [],
|
27
|
+
app_letters: []
|
28
|
+
}
|
29
|
+
|
30
|
+
result = ABCing::ColourAlphabetResult.new(params).calculate
|
31
|
+
expect(result).to include(A: :yellow, B: :yellow)
|
32
|
+
end
|
33
|
+
|
34
|
+
|
35
|
+
end
|
metadata
ADDED
@@ -0,0 +1,116 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: abcing
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Emile
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-02-22 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.7'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.7'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 3.2.0
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 3.2.0
|
55
|
+
description: See coverage by alphabet
|
56
|
+
email:
|
57
|
+
- emile.swarts123@gmail.com
|
58
|
+
executables:
|
59
|
+
- abcing
|
60
|
+
extensions: []
|
61
|
+
extra_rdoc_files: []
|
62
|
+
files:
|
63
|
+
- ".gitignore"
|
64
|
+
- ".rspec"
|
65
|
+
- Gemfile
|
66
|
+
- Gemfile.lock
|
67
|
+
- LICENSE.txt
|
68
|
+
- README.md
|
69
|
+
- Rakefile
|
70
|
+
- abcing.gemspec
|
71
|
+
- bin/abcing
|
72
|
+
- lib/abcing.rb
|
73
|
+
- lib/abcing/alphabet_match.rb
|
74
|
+
- lib/abcing/class_file_finder.rb
|
75
|
+
- lib/abcing/class_name_finder.rb
|
76
|
+
- lib/abcing/colour_alphabet_result.rb
|
77
|
+
- lib/abcing/renderer.rb
|
78
|
+
- lib/abcing/scanner.rb
|
79
|
+
- lib/abcing/version.rb
|
80
|
+
- spec/alphabet_match_spec.rb
|
81
|
+
- spec/class_file_finder_spec.rb
|
82
|
+
- spec/class_name_finder_spec.rb
|
83
|
+
- spec/colour_alphabet_result_spec.rb
|
84
|
+
- spec/renderer_spec.rb
|
85
|
+
- spec/scan_result_spec.rb
|
86
|
+
homepage: ''
|
87
|
+
licenses:
|
88
|
+
- MIT
|
89
|
+
metadata: {}
|
90
|
+
post_install_message:
|
91
|
+
rdoc_options: []
|
92
|
+
require_paths:
|
93
|
+
- lib
|
94
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
95
|
+
requirements:
|
96
|
+
- - ">="
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '0'
|
99
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
requirements: []
|
105
|
+
rubyforge_project:
|
106
|
+
rubygems_version: 2.2.2
|
107
|
+
signing_key:
|
108
|
+
specification_version: 4
|
109
|
+
summary: Dumb code metrics
|
110
|
+
test_files:
|
111
|
+
- spec/alphabet_match_spec.rb
|
112
|
+
- spec/class_file_finder_spec.rb
|
113
|
+
- spec/class_name_finder_spec.rb
|
114
|
+
- spec/colour_alphabet_result_spec.rb
|
115
|
+
- spec/renderer_spec.rb
|
116
|
+
- spec/scan_result_spec.rb
|