keela 0.0.2 → 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 +4 -4
- data/CHANGELOG.md +41 -0
- data/LICENSE.txt +21 -0
- data/README.md +346 -0
- data/exe/keela +174 -0
- data/lib/keela/baseline.rb +82 -0
- data/lib/keela/config_file.rb +79 -0
- data/lib/keela/configuration.rb +44 -0
- data/lib/keela/reporter.rb +84 -0
- data/lib/keela/scanner.rb +167 -0
- data/lib/keela/strategies/attributes.rb +44 -0
- data/lib/keela/strategies/constants.rb +53 -0
- data/lib/keela/strategies/delegations.rb +70 -0
- data/lib/keela/strategies/i18n_keys.rb +88 -0
- data/lib/keela/strategies/methods.rb +35 -0
- data/lib/keela/strategies/scopes.rb +29 -0
- data/lib/keela/strategy.rb +43 -0
- data/lib/keela/version.rb +5 -0
- data/lib/keela.rb +32 -1
- metadata +69 -5
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Keela
|
|
4
|
+
# Base class for detection strategies.
|
|
5
|
+
#
|
|
6
|
+
# Subclasses define how to find definitions and detect usage for
|
|
7
|
+
# different types of code (methods, scopes, etc.)
|
|
8
|
+
#
|
|
9
|
+
class Strategy
|
|
10
|
+
# Human-readable name for this strategy (e.g., "methods", "scopes")
|
|
11
|
+
def name
|
|
12
|
+
raise NotImplementedError, "#{self.class} must implement #name"
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# Regex pattern to match files that may contain definitions
|
|
16
|
+
# (e.g., /app\/models/ for scopes)
|
|
17
|
+
def definition_file_pattern
|
|
18
|
+
raise NotImplementedError, "#{self.class} must implement #definition_file_pattern"
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
# Extract a definition name from a line of code, or nil if no definition found
|
|
22
|
+
def extract_definition(line)
|
|
23
|
+
raise NotImplementedError, "#{self.class} must implement #extract_definition"
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# Build a regex to detect usage of the given definition name
|
|
27
|
+
def usage_regex(name)
|
|
28
|
+
raise NotImplementedError, "#{self.class} must implement #usage_regex"
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# Whether to skip lines that start with # (comments)
|
|
32
|
+
def skip_comments?
|
|
33
|
+
false
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# Override this method for strategies that need custom file parsing
|
|
37
|
+
# (e.g., YAML files for I18n keys).
|
|
38
|
+
# Returns an array of { name:, file: } hashes, or nil to use default line-by-line parsing.
|
|
39
|
+
def extract_definitions_from_file(_filepath, _lines)
|
|
40
|
+
nil
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
data/lib/keela.rb
CHANGED
|
@@ -1,5 +1,36 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require_relative "keela/version"
|
|
4
|
+
require_relative "keela/configuration"
|
|
5
|
+
require_relative "keela/config_file"
|
|
6
|
+
require_relative "keela/strategy"
|
|
7
|
+
require_relative "keela/strategies/methods"
|
|
8
|
+
require_relative "keela/strategies/scopes"
|
|
9
|
+
require_relative "keela/strategies/constants"
|
|
10
|
+
require_relative "keela/strategies/delegations"
|
|
11
|
+
require_relative "keela/strategies/attributes"
|
|
12
|
+
require_relative "keela/strategies/i18n_keys"
|
|
13
|
+
require_relative "keela/reporter"
|
|
14
|
+
require_relative "keela/baseline"
|
|
15
|
+
require_relative "keela/scanner"
|
|
16
|
+
|
|
3
17
|
module Keela
|
|
4
|
-
|
|
18
|
+
class Error < StandardError; end
|
|
19
|
+
class ConfigurationError < Error; end
|
|
20
|
+
|
|
21
|
+
class << self
|
|
22
|
+
attr_writer :configuration
|
|
23
|
+
|
|
24
|
+
def configuration
|
|
25
|
+
@configuration ||= Configuration.new
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def configure
|
|
29
|
+
yield(configuration)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def reset_configuration!
|
|
33
|
+
@configuration = Configuration.new
|
|
34
|
+
end
|
|
35
|
+
end
|
|
5
36
|
end
|
metadata
CHANGED
|
@@ -1,26 +1,90 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: keela
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0
|
|
4
|
+
version: 0.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Kerri Miller
|
|
8
|
-
bindir:
|
|
8
|
+
bindir: exe
|
|
9
9
|
cert_chain: []
|
|
10
10
|
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
|
-
dependencies:
|
|
11
|
+
dependencies:
|
|
12
|
+
- !ruby/object:Gem::Dependency
|
|
13
|
+
name: parallel
|
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
|
15
|
+
requirements:
|
|
16
|
+
- - "~>"
|
|
17
|
+
- !ruby/object:Gem::Version
|
|
18
|
+
version: '1.20'
|
|
19
|
+
type: :runtime
|
|
20
|
+
prerelease: false
|
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
22
|
+
requirements:
|
|
23
|
+
- - "~>"
|
|
24
|
+
- !ruby/object:Gem::Version
|
|
25
|
+
version: '1.20'
|
|
26
|
+
- !ruby/object:Gem::Dependency
|
|
27
|
+
name: rainbow
|
|
28
|
+
requirement: !ruby/object:Gem::Requirement
|
|
29
|
+
requirements:
|
|
30
|
+
- - "~>"
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: '3.0'
|
|
33
|
+
type: :runtime
|
|
34
|
+
prerelease: false
|
|
35
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
36
|
+
requirements:
|
|
37
|
+
- - "~>"
|
|
38
|
+
- !ruby/object:Gem::Version
|
|
39
|
+
version: '3.0'
|
|
40
|
+
- !ruby/object:Gem::Dependency
|
|
41
|
+
name: ruby-progressbar
|
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
|
43
|
+
requirements:
|
|
44
|
+
- - "~>"
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: '1.11'
|
|
47
|
+
type: :runtime
|
|
48
|
+
prerelease: false
|
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
50
|
+
requirements:
|
|
51
|
+
- - "~>"
|
|
52
|
+
- !ruby/object:Gem::Version
|
|
53
|
+
version: '1.11'
|
|
12
54
|
description: Like the famous CSI dog who found what others missed, Keela detects unused
|
|
13
55
|
methods and scopes in your Ruby codebase.
|
|
14
56
|
email: kerrizor@kerrizor.com
|
|
15
|
-
executables:
|
|
57
|
+
executables:
|
|
58
|
+
- keela
|
|
16
59
|
extensions: []
|
|
17
60
|
extra_rdoc_files: []
|
|
18
61
|
files:
|
|
62
|
+
- CHANGELOG.md
|
|
63
|
+
- LICENSE.txt
|
|
64
|
+
- README.md
|
|
65
|
+
- exe/keela
|
|
19
66
|
- lib/keela.rb
|
|
67
|
+
- lib/keela/baseline.rb
|
|
68
|
+
- lib/keela/config_file.rb
|
|
69
|
+
- lib/keela/configuration.rb
|
|
70
|
+
- lib/keela/reporter.rb
|
|
71
|
+
- lib/keela/scanner.rb
|
|
72
|
+
- lib/keela/strategies/attributes.rb
|
|
73
|
+
- lib/keela/strategies/constants.rb
|
|
74
|
+
- lib/keela/strategies/delegations.rb
|
|
75
|
+
- lib/keela/strategies/i18n_keys.rb
|
|
76
|
+
- lib/keela/strategies/methods.rb
|
|
77
|
+
- lib/keela/strategies/scopes.rb
|
|
78
|
+
- lib/keela/strategy.rb
|
|
79
|
+
- lib/keela/version.rb
|
|
20
80
|
homepage: https://github.com/kerrizor/keela
|
|
21
81
|
licenses:
|
|
22
82
|
- MIT
|
|
23
|
-
metadata:
|
|
83
|
+
metadata:
|
|
84
|
+
homepage_uri: https://github.com/kerrizor/keela
|
|
85
|
+
source_code_uri: https://github.com/kerrizor/keela
|
|
86
|
+
changelog_uri: https://github.com/kerrizor/keela/blob/main/CHANGELOG.md
|
|
87
|
+
bug_tracker_uri: https://github.com/kerrizor/keela/issues
|
|
24
88
|
rdoc_options: []
|
|
25
89
|
require_paths:
|
|
26
90
|
- lib
|