gravedigger 0.1.0 → 0.1.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 +4 -4
- data/.ruby-version +1 -0
- data/Gemfile.lock +2 -2
- data/gravedigger.gemspec +1 -1
- data/lib/gravedigger/definition_finder.rb +36 -0
- data/lib/gravedigger/output_printer.rb +44 -0
- data/lib/gravedigger/usage_searcher.rb +26 -0
- data/lib/gravedigger/version.rb +1 -1
- data/lib/gravedigger.rb +11 -1
- metadata +10 -8
- data/bin/console +0 -14
- data/bin/setup +0 -8
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 000db92231504a24d3ab6d87569148eafaa6d355af6192ebbb8efa0f8c881392
|
|
4
|
+
data.tar.gz: c4242466fcd30cc7a49a429b9e897732e09f441c06c8fc654bb68a12f53e8f1e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 545d8998fa99660778cc4686699c8d86d8b0ae6f6db2164f6bf9d7f4917c720db9ee98daeb12383253f3014317592bc1ecca2a5fb9c41211244fedab5c400190
|
|
7
|
+
data.tar.gz: f68a4188b3cad386ea55a7da0d45f7603516682f086b3f7243109a0a0968f9664b61f87b8adfac5d14ab44cb0908243472768c2082af9a49397c15825993af97
|
data/.ruby-version
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2.6.5
|
data/Gemfile.lock
CHANGED
data/gravedigger.gemspec
CHANGED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Gravedigger
|
|
4
|
+
module DefinitionFinder
|
|
5
|
+
def self.get_definitions
|
|
6
|
+
all_file_names = Dir[File.join(Dir.pwd,"/{app,lib,config}/**/*.{erb,haml,rb}")]
|
|
7
|
+
method_definitions = {}
|
|
8
|
+
errors = []
|
|
9
|
+
|
|
10
|
+
all_file_names.each do |fileName|
|
|
11
|
+
begin
|
|
12
|
+
File.readlines(fileName).each_with_index do |line,index|
|
|
13
|
+
next unless line
|
|
14
|
+
method_name = find_method_definitions(line)
|
|
15
|
+
location = "[#{fileName}:#{index+1}]"
|
|
16
|
+
|
|
17
|
+
method_definitions[method_name] = location if method_name
|
|
18
|
+
end
|
|
19
|
+
rescue StandardError => error
|
|
20
|
+
errors << "Error while reading file: #{fileName} \n #{error.message}"
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
return method_definitions, errors
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def self.find_method_definitions(line)
|
|
28
|
+
find_method_regex_result = line[/[ ]+def [a-zA-Z0-9?_.\!]*/]
|
|
29
|
+
if find_method_regex_result
|
|
30
|
+
method_name = find_method_regex_result.strip.slice(4..-1)
|
|
31
|
+
method_name = method_name.slice(0,4) if method_name && method_name[0..4] == 'self.'
|
|
32
|
+
end
|
|
33
|
+
method_name
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Gravedigger
|
|
4
|
+
module OutputPrinter
|
|
5
|
+
NEW_LINE = "\n"
|
|
6
|
+
def self.print_output(output, error_messages = [])
|
|
7
|
+
print_scan_results(output.length, error_messages.length)
|
|
8
|
+
|
|
9
|
+
if output.any?
|
|
10
|
+
puts NEW_LINE
|
|
11
|
+
puts "Unused methods in your project:"
|
|
12
|
+
puts NEW_LINE
|
|
13
|
+
output.each do |method_name, location|
|
|
14
|
+
puts "#{method_name}: #{location}"
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
if error_messages.any?
|
|
19
|
+
puts NEW_LINE
|
|
20
|
+
puts "Errors encountered while processing:"
|
|
21
|
+
puts NEW_LINE
|
|
22
|
+
error_messages.each do |error_message|
|
|
23
|
+
puts error_message
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def self.print_scan_results(output_length, error_messages_length)
|
|
29
|
+
puts "="*80 + NEW_LINE
|
|
30
|
+
puts "Scanning completed."
|
|
31
|
+
puts print_with_green_color(output_length) + " unused method definitions found."
|
|
32
|
+
puts print_with_red_color(error_messages_length) + " errors encountered."
|
|
33
|
+
puts "="*80 +NEW_LINE
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def self.print_with_green_color(string)
|
|
37
|
+
"\e[32m#{string}\e[0m"
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def self.print_with_red_color(string)
|
|
41
|
+
"\e[31m#{string}\e[0m"
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Gravedigger
|
|
4
|
+
module UsageSearcher
|
|
5
|
+
def self.search_methods(method_definitions)
|
|
6
|
+
all_file_names = Dir[File.join(Dir.pwd,"/{app,lib,config}/**/*.{erb,haml,rb}")]
|
|
7
|
+
errors = []
|
|
8
|
+
all_file_names.each do |fileName|
|
|
9
|
+
begin
|
|
10
|
+
File.open(fileName).each_line do |line|
|
|
11
|
+
next unless line
|
|
12
|
+
method_usage_matches = line.scan(/(?<!def)[ \.\-\:\'\(\{\!\=\&\#\[\*]+([a-zA-Z0-9?_\!]+)?(?=[\\ \,\/\[\'\:\(\)\.\}]|$)/)
|
|
13
|
+
method_usage_matches.each do |method_usage_match|
|
|
14
|
+
method_definitions.delete(method_usage_match.first) if method_usage_match
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
rescue StandardError => error
|
|
18
|
+
errors << "Error while searching method: #{method_name} in file: #{fileName}\n"\
|
|
19
|
+
"#{error.message}"
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
return method_definitions, errors
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
data/lib/gravedigger/version.rb
CHANGED
data/lib/gravedigger.rb
CHANGED
|
@@ -1,10 +1,20 @@
|
|
|
1
1
|
require "thor"
|
|
2
|
-
require "
|
|
2
|
+
require "gravedigger/definition_finder.rb"
|
|
3
|
+
require "gravedigger/usage_searcher"
|
|
4
|
+
require "gravedigger/output_printer"
|
|
3
5
|
|
|
4
6
|
module Gravedigger
|
|
5
7
|
class CLI < Thor
|
|
8
|
+
|
|
6
9
|
desc "dig", "Find unused code in your Rails project"
|
|
10
|
+
|
|
7
11
|
def dig
|
|
12
|
+
method_definitions, get_definitions_errors = Gravedigger::DefinitionFinder.get_definitions
|
|
13
|
+
output, method_search_errors = Gravedigger::UsageSearcher.search_methods(method_definitions)
|
|
14
|
+
|
|
15
|
+
errors = get_definitions_errors.concat method_search_errors
|
|
16
|
+
|
|
17
|
+
Gravedigger::OutputPrinter.print_output(output, errors)
|
|
8
18
|
end
|
|
9
19
|
end
|
|
10
20
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: gravedigger
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Oğuzhan Göller
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2019-
|
|
11
|
+
date: 2019-12-14 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -56,16 +56,16 @@ dependencies:
|
|
|
56
56
|
name: thor
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
58
58
|
requirements:
|
|
59
|
-
- - "
|
|
59
|
+
- - ">="
|
|
60
60
|
- !ruby/object:Gem::Version
|
|
61
|
-
version: 0
|
|
61
|
+
version: '0'
|
|
62
62
|
type: :runtime
|
|
63
63
|
prerelease: false
|
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
65
|
requirements:
|
|
66
|
-
- - "
|
|
66
|
+
- - ">="
|
|
67
67
|
- !ruby/object:Gem::Version
|
|
68
|
-
version: 0
|
|
68
|
+
version: '0'
|
|
69
69
|
description: Gravedigger iterates through your project searching unused methods
|
|
70
70
|
and constants, helping you detect and eliminate dead code.
|
|
71
71
|
email:
|
|
@@ -76,6 +76,7 @@ extensions: []
|
|
|
76
76
|
extra_rdoc_files: []
|
|
77
77
|
files:
|
|
78
78
|
- ".gitignore"
|
|
79
|
+
- ".ruby-version"
|
|
79
80
|
- ".travis.yml"
|
|
80
81
|
- CODE_OF_CONDUCT.md
|
|
81
82
|
- Gemfile
|
|
@@ -83,11 +84,12 @@ files:
|
|
|
83
84
|
- LICENSE.txt
|
|
84
85
|
- README.md
|
|
85
86
|
- Rakefile
|
|
86
|
-
- bin/console
|
|
87
87
|
- bin/gravedigger
|
|
88
|
-
- bin/setup
|
|
89
88
|
- gravedigger.gemspec
|
|
90
89
|
- lib/gravedigger.rb
|
|
90
|
+
- lib/gravedigger/definition_finder.rb
|
|
91
|
+
- lib/gravedigger/output_printer.rb
|
|
92
|
+
- lib/gravedigger/usage_searcher.rb
|
|
91
93
|
- lib/gravedigger/version.rb
|
|
92
94
|
homepage: https://github.com/oguzhangoller/gravedigger
|
|
93
95
|
licenses:
|
data/bin/console
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ruby
|
|
2
|
-
|
|
3
|
-
require "bundler/setup"
|
|
4
|
-
require "gravedigger"
|
|
5
|
-
|
|
6
|
-
# You can add fixtures and/or initialization code here to make experimenting
|
|
7
|
-
# with your gem easier. You can also use a different console, if you like.
|
|
8
|
-
|
|
9
|
-
# (If you use this, don't forget to add pry to your Gemfile!)
|
|
10
|
-
# require "pry"
|
|
11
|
-
# Pry.start
|
|
12
|
-
|
|
13
|
-
require "irb"
|
|
14
|
-
IRB.start(__FILE__)
|