class-metrix 1.0.1 → 1.1.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/.prettierrc.json +41 -0
- data/.qlty/.gitignore +7 -0
- data/.qlty/configs/.yamllint.yaml +8 -0
- data/.qlty/qlty.toml +108 -0
- data/.rubocop.yml +31 -25
- data/.vscode/README.md +230 -78
- data/.vscode/extensions.json +1 -9
- data/.vscode/keybindings.json +0 -26
- data/.vscode/settings.json +57 -11
- data/.vscode/tasks.json +90 -0
- data/CHANGELOG.md +31 -1
- data/README.md +63 -9
- data/Rakefile +64 -1
- data/config/brakeman.yml +37 -0
- data/docs/ARCHITECTURE.md +90 -48
- data/docs/QLTY_INTEGRATION.md +181 -0
- data/docs/RELEASE_GUIDE.md +318 -0
- data/docs/SLACK_INTEGRATION.md +227 -0
- data/examples/README.md +23 -17
- data/examples/basic_usage.rb +19 -19
- data/examples/debug_levels_demo.rb +15 -16
- data/examples/debug_mode_demo.rb +12 -13
- data/examples/inheritance_and_modules.rb +45 -45
- data/lib/class_metrix/version.rb +1 -1
- data/sig/manifest.yaml +12 -12
- metadata +52 -4
- data/.vscode/rbs.code-snippets +0 -61
- data/RELEASE_GUIDE.md +0 -158
data/examples/basic_usage.rb
CHANGED
|
@@ -11,11 +11,11 @@ puts "=" * 30
|
|
|
11
11
|
class User
|
|
12
12
|
ROLE = "user"
|
|
13
13
|
MAX_LOGIN_ATTEMPTS = 3
|
|
14
|
-
|
|
14
|
+
|
|
15
15
|
def self.permissions
|
|
16
16
|
["read"]
|
|
17
17
|
end
|
|
18
|
-
|
|
18
|
+
|
|
19
19
|
def self.session_timeout
|
|
20
20
|
3600
|
|
21
21
|
end
|
|
@@ -24,11 +24,11 @@ end
|
|
|
24
24
|
class Admin
|
|
25
25
|
ROLE = "admin"
|
|
26
26
|
MAX_LOGIN_ATTEMPTS = 5
|
|
27
|
-
|
|
27
|
+
|
|
28
28
|
def self.permissions
|
|
29
29
|
["read", "write", "admin"]
|
|
30
30
|
end
|
|
31
|
-
|
|
31
|
+
|
|
32
32
|
def self.session_timeout
|
|
33
33
|
7200
|
|
34
34
|
end
|
|
@@ -40,33 +40,33 @@ classes = [User, Admin]
|
|
|
40
40
|
puts "\n1. Constants Comparison"
|
|
41
41
|
puts "-" * 25
|
|
42
42
|
result = ClassMetrix.extract(:constants)
|
|
43
|
-
|
|
44
|
-
|
|
43
|
+
.from(classes)
|
|
44
|
+
.to_markdown
|
|
45
45
|
puts result
|
|
46
46
|
|
|
47
47
|
# 2. Extract class methods
|
|
48
|
-
puts "\n2. Class Methods Comparison"
|
|
48
|
+
puts "\n2. Class Methods Comparison"
|
|
49
49
|
puts "-" * 25
|
|
50
50
|
result = ClassMetrix.extract(:class_methods)
|
|
51
|
-
|
|
52
|
-
|
|
51
|
+
.from(classes)
|
|
52
|
+
.to_markdown
|
|
53
53
|
puts result
|
|
54
54
|
|
|
55
55
|
# 3. Combined extraction
|
|
56
56
|
puts "\n3. Combined Analysis"
|
|
57
57
|
puts "-" * 25
|
|
58
58
|
result = ClassMetrix.extract(:constants, :class_methods)
|
|
59
|
-
|
|
60
|
-
|
|
59
|
+
.from(classes)
|
|
60
|
+
.to_markdown
|
|
61
61
|
puts result
|
|
62
62
|
|
|
63
63
|
# 4. Filtered analysis
|
|
64
64
|
puts "\n4. Filtered Analysis (ROLE and permissions only)"
|
|
65
65
|
puts "-" * 25
|
|
66
66
|
result = ClassMetrix.extract(:constants, :class_methods)
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
67
|
+
.from(classes)
|
|
68
|
+
.filter(/ROLE|permissions/)
|
|
69
|
+
.to_markdown
|
|
70
70
|
puts result
|
|
71
71
|
|
|
72
72
|
# 5. Hash expansion
|
|
@@ -75,14 +75,14 @@ puts "-" * 25
|
|
|
75
75
|
|
|
76
76
|
class ConfigExample
|
|
77
77
|
SETTINGS = { timeout: 30, retries: 3, ssl: true }.freeze
|
|
78
|
-
|
|
78
|
+
|
|
79
79
|
def self.database_config
|
|
80
80
|
{ host: "localhost", port: 5432, pool_size: 5 }
|
|
81
81
|
end
|
|
82
82
|
end
|
|
83
83
|
|
|
84
84
|
result = ClassMetrix.extract(:constants, :class_methods)
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
puts result
|
|
85
|
+
.from([ConfigExample])
|
|
86
|
+
.expand_hashes
|
|
87
|
+
.to_markdown
|
|
88
|
+
puts result
|
|
@@ -9,7 +9,7 @@ require_relative '../lib/class_metrix'
|
|
|
9
9
|
# Example classes
|
|
10
10
|
class ServiceA
|
|
11
11
|
CONFIG = { host: 'localhost', port: 3000, timeout: 30 }
|
|
12
|
-
|
|
12
|
+
|
|
13
13
|
def self.get_settings
|
|
14
14
|
{ cache: true, retries: 3 }
|
|
15
15
|
end
|
|
@@ -17,7 +17,7 @@ end
|
|
|
17
17
|
|
|
18
18
|
class ServiceB
|
|
19
19
|
CONFIG = { host: 'remote', port: 8080 }
|
|
20
|
-
|
|
20
|
+
|
|
21
21
|
def self.get_settings
|
|
22
22
|
{ cache: false, retries: 1 }
|
|
23
23
|
end
|
|
@@ -30,36 +30,35 @@ puts
|
|
|
30
30
|
levels = [:basic, :detailed, :verbose]
|
|
31
31
|
|
|
32
32
|
levels.each do |level|
|
|
33
|
-
puts "\n" + "="*50
|
|
33
|
+
puts "\n" + "=" * 50
|
|
34
34
|
puts "DEBUG LEVEL: #{level.upcase}"
|
|
35
|
-
puts "="*50
|
|
36
|
-
|
|
35
|
+
puts "=" * 50
|
|
36
|
+
|
|
37
37
|
begin
|
|
38
38
|
result = ClassMetrix.extract(:constants, :class_methods)
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
39
|
+
.from([ServiceA, ServiceB])
|
|
40
|
+
.expand_hashes
|
|
41
|
+
.debug(level) # Set debug level
|
|
42
|
+
.to_markdown
|
|
43
|
+
|
|
44
44
|
puts "\n--- Result Summary ---"
|
|
45
45
|
puts "Report generated successfully! ✅"
|
|
46
46
|
puts "Lines in output: #{result.lines.count}"
|
|
47
|
-
|
|
48
47
|
rescue => e
|
|
49
48
|
puts "Error: #{e.class}: #{e.message}"
|
|
50
49
|
end
|
|
51
|
-
|
|
50
|
+
|
|
52
51
|
puts "\n"
|
|
53
52
|
end
|
|
54
53
|
|
|
55
|
-
puts "\n" + "="*50
|
|
54
|
+
puts "\n" + "=" * 50
|
|
56
55
|
puts "DEBUG LEVEL SUMMARY"
|
|
57
|
-
puts "="*50
|
|
56
|
+
puts "=" * 50
|
|
58
57
|
puts
|
|
59
58
|
puts ":basic - Key decisions and summaries only"
|
|
60
|
-
puts ":detailed - More context and intermediate steps"
|
|
59
|
+
puts ":detailed - More context and intermediate steps"
|
|
61
60
|
puts ":verbose - Full details including individual value processing"
|
|
62
61
|
puts
|
|
63
62
|
puts "Use :basic for general troubleshooting"
|
|
64
63
|
puts "Use :detailed for understanding data flow"
|
|
65
|
-
puts "Use :verbose for deep debugging of specific values"
|
|
64
|
+
puts "Use :verbose for deep debugging of specific values"
|
data/examples/debug_mode_demo.rb
CHANGED
|
@@ -9,7 +9,7 @@ require_relative '../lib/class_metrix'
|
|
|
9
9
|
# Example classes with different types of values
|
|
10
10
|
class SafeService
|
|
11
11
|
CONFIG = { host: 'localhost', port: 3000 }
|
|
12
|
-
|
|
12
|
+
|
|
13
13
|
def self.timeout_config
|
|
14
14
|
{ connect: 30, read: 60 }
|
|
15
15
|
end
|
|
@@ -18,7 +18,7 @@ end
|
|
|
18
18
|
class ProblematicService
|
|
19
19
|
# This constant is a Class object (not a Hash)
|
|
20
20
|
CONFIG_CLASS = SafeService
|
|
21
|
-
|
|
21
|
+
|
|
22
22
|
def self.service_config
|
|
23
23
|
SafeService::CONFIG
|
|
24
24
|
end
|
|
@@ -29,11 +29,11 @@ class ProblematicObject
|
|
|
29
29
|
def inspect
|
|
30
30
|
raise "Inspect not allowed!"
|
|
31
31
|
end
|
|
32
|
-
|
|
32
|
+
|
|
33
33
|
def to_s
|
|
34
34
|
raise "To_s not allowed!"
|
|
35
35
|
end
|
|
36
|
-
|
|
36
|
+
|
|
37
37
|
def class
|
|
38
38
|
raise "Class not allowed!"
|
|
39
39
|
end
|
|
@@ -41,7 +41,7 @@ end
|
|
|
41
41
|
|
|
42
42
|
class WeirdService
|
|
43
43
|
BROKEN_OBJECT = ProblematicObject.new
|
|
44
|
-
|
|
44
|
+
|
|
45
45
|
def self.get_config
|
|
46
46
|
{ normal: 'value', broken: ProblematicObject.new }
|
|
47
47
|
end
|
|
@@ -58,18 +58,17 @@ puts
|
|
|
58
58
|
|
|
59
59
|
begin
|
|
60
60
|
result = ClassMetrix.extract(:constants, :class_methods)
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
61
|
+
.from([SafeService, ProblematicService, WeirdService])
|
|
62
|
+
.expand_hashes
|
|
63
|
+
.handle_errors
|
|
64
|
+
.debug # Enable debug mode
|
|
65
|
+
.to_markdown
|
|
66
|
+
|
|
67
67
|
puts "\n=== Generated Report ==="
|
|
68
68
|
puts result[0..500] + "..." if result.length > 500
|
|
69
69
|
puts "\nReport generated successfully! ✅"
|
|
70
70
|
puts "Note: Debug output above shows how problematic objects were handled safely."
|
|
71
|
-
|
|
72
71
|
rescue => e
|
|
73
72
|
puts "Error: #{e.class}: #{e.message}"
|
|
74
73
|
puts "This should not happen with the safety improvements!"
|
|
75
|
-
end
|
|
74
|
+
end
|
|
@@ -11,11 +11,11 @@ puts "=" * 50
|
|
|
11
11
|
|
|
12
12
|
module Configurable
|
|
13
13
|
DEFAULT_TIMEOUT = 30
|
|
14
|
-
|
|
14
|
+
|
|
15
15
|
def self.included(base)
|
|
16
16
|
base.extend(ClassMethods)
|
|
17
17
|
end
|
|
18
|
-
|
|
18
|
+
|
|
19
19
|
module ClassMethods
|
|
20
20
|
def configuration
|
|
21
21
|
{ timeout: DEFAULT_TIMEOUT, enabled: true }
|
|
@@ -25,11 +25,11 @@ end
|
|
|
25
25
|
|
|
26
26
|
module Cacheable
|
|
27
27
|
CACHE_TTL = 3600
|
|
28
|
-
|
|
28
|
+
|
|
29
29
|
def self.included(base)
|
|
30
30
|
base.extend(ClassMethods)
|
|
31
31
|
end
|
|
32
|
-
|
|
32
|
+
|
|
33
33
|
module ClassMethods
|
|
34
34
|
def cache_config
|
|
35
35
|
{ ttl: CACHE_TTL, enabled: true }
|
|
@@ -39,11 +39,11 @@ end
|
|
|
39
39
|
|
|
40
40
|
class BaseService
|
|
41
41
|
SERVICE_VERSION = "1.0"
|
|
42
|
-
|
|
42
|
+
|
|
43
43
|
def self.service_type
|
|
44
44
|
"base"
|
|
45
45
|
end
|
|
46
|
-
|
|
46
|
+
|
|
47
47
|
def self.health_check
|
|
48
48
|
{ status: "ok", version: SERVICE_VERSION }
|
|
49
49
|
end
|
|
@@ -51,14 +51,14 @@ end
|
|
|
51
51
|
|
|
52
52
|
class DatabaseService < BaseService
|
|
53
53
|
include Configurable
|
|
54
|
-
|
|
54
|
+
|
|
55
55
|
SERVICE_NAME = "database"
|
|
56
56
|
CONNECTION_POOL_SIZE = 5
|
|
57
|
-
|
|
57
|
+
|
|
58
58
|
def self.service_type
|
|
59
59
|
"database"
|
|
60
60
|
end
|
|
61
|
-
|
|
61
|
+
|
|
62
62
|
def self.connection_config
|
|
63
63
|
{ pool_size: CONNECTION_POOL_SIZE, timeout: 60 }
|
|
64
64
|
end
|
|
@@ -67,14 +67,14 @@ end
|
|
|
67
67
|
class CacheService < BaseService
|
|
68
68
|
include Configurable
|
|
69
69
|
include Cacheable
|
|
70
|
-
|
|
71
|
-
SERVICE_NAME = "cache"
|
|
70
|
+
|
|
71
|
+
SERVICE_NAME = "cache"
|
|
72
72
|
MAX_MEMORY = "512MB"
|
|
73
|
-
|
|
73
|
+
|
|
74
74
|
def self.service_type
|
|
75
75
|
"cache"
|
|
76
76
|
end
|
|
77
|
-
|
|
77
|
+
|
|
78
78
|
def self.memory_config
|
|
79
79
|
{ max_memory: MAX_MEMORY, eviction_policy: "lru" }
|
|
80
80
|
end
|
|
@@ -86,43 +86,43 @@ services = [DatabaseService, CacheService]
|
|
|
86
86
|
puts "\n1. Basic Analysis (Own Constants Only)"
|
|
87
87
|
puts "-" * 40
|
|
88
88
|
result = ClassMetrix.extract(:constants)
|
|
89
|
-
|
|
90
|
-
|
|
89
|
+
.from(services)
|
|
90
|
+
.to_markdown
|
|
91
91
|
puts result
|
|
92
92
|
|
|
93
93
|
puts "\n2. With Inheritance (Own + Parent Constants)"
|
|
94
94
|
puts "-" * 40
|
|
95
95
|
result = ClassMetrix.extract(:constants)
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
96
|
+
.from(services)
|
|
97
|
+
.include_inherited
|
|
98
|
+
.to_markdown
|
|
99
99
|
puts result
|
|
100
100
|
|
|
101
101
|
puts "\n3. With Modules (Own + Module Constants)"
|
|
102
102
|
puts "-" * 40
|
|
103
103
|
result = ClassMetrix.extract(:constants)
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
104
|
+
.from(services)
|
|
105
|
+
.include_modules
|
|
106
|
+
.to_markdown
|
|
107
107
|
puts result
|
|
108
108
|
|
|
109
109
|
puts "\n4. Complete Analysis (Own + Inherited + Modules)"
|
|
110
110
|
puts "-" * 40
|
|
111
111
|
result = ClassMetrix.extract(:constants, :class_methods)
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
112
|
+
.from(services)
|
|
113
|
+
.include_all
|
|
114
|
+
.handle_errors
|
|
115
|
+
.to_markdown
|
|
116
116
|
puts result
|
|
117
117
|
|
|
118
118
|
puts "\n5. Filtered Configuration Analysis"
|
|
119
119
|
puts "-" * 40
|
|
120
120
|
result = ClassMetrix.extract(:constants, :class_methods)
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
121
|
+
.from(services)
|
|
122
|
+
.include_all
|
|
123
|
+
.filter(/config|timeout|service/i)
|
|
124
|
+
.expand_hashes
|
|
125
|
+
.to_markdown
|
|
126
126
|
puts result
|
|
127
127
|
|
|
128
128
|
puts "\n6. Hash Expansion Modes"
|
|
@@ -130,26 +130,26 @@ puts "-" * 40
|
|
|
130
130
|
|
|
131
131
|
puts "\n6a. Default: Show Only Main Rows (Collapsed Hashes)"
|
|
132
132
|
result = ClassMetrix.extract(:class_methods)
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
133
|
+
.from([CacheService])
|
|
134
|
+
.filter(/config/)
|
|
135
|
+
.expand_hashes
|
|
136
|
+
.to_markdown
|
|
137
137
|
puts result
|
|
138
138
|
|
|
139
139
|
puts "\n6b. Show Only Key Rows (Expanded Details)"
|
|
140
140
|
result = ClassMetrix.extract(:class_methods)
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
141
|
+
.from([CacheService])
|
|
142
|
+
.filter(/config/)
|
|
143
|
+
.expand_hashes
|
|
144
|
+
.show_only_keys
|
|
145
|
+
.to_markdown
|
|
146
146
|
puts result
|
|
147
147
|
|
|
148
148
|
puts "\n6c. Show Both Main and Key Rows"
|
|
149
149
|
result = ClassMetrix.extract(:class_methods)
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
puts result
|
|
150
|
+
.from([CacheService])
|
|
151
|
+
.filter(/config/)
|
|
152
|
+
.expand_hashes
|
|
153
|
+
.show_expanded_details
|
|
154
|
+
.to_markdown
|
|
155
|
+
puts result
|
data/lib/class_metrix/version.rb
CHANGED
data/sig/manifest.yaml
CHANGED
|
@@ -3,24 +3,24 @@
|
|
|
3
3
|
|
|
4
4
|
dependencies:
|
|
5
5
|
- name: csv
|
|
6
|
-
version:
|
|
6
|
+
version: ~> 3.0
|
|
7
7
|
- name: pathname
|
|
8
|
-
version:
|
|
8
|
+
version: ~> 0.2
|
|
9
9
|
- name: json
|
|
10
|
-
version:
|
|
10
|
+
version: ~> 2.0
|
|
11
11
|
- name: fileutils
|
|
12
|
-
version:
|
|
12
|
+
version: ~> 1.0
|
|
13
13
|
|
|
14
14
|
type_definitions:
|
|
15
|
-
- class_metrix.rbs
|
|
16
|
-
- version.rbs
|
|
17
|
-
- extractor.rbs
|
|
18
|
-
- extractors.rbs
|
|
19
|
-
- formatters_base.rbs
|
|
15
|
+
- class_metrix.rbs # Main module and entry point
|
|
16
|
+
- version.rbs # Version constant
|
|
17
|
+
- extractor.rbs # Core extractor fluent interface
|
|
18
|
+
- extractors.rbs # Specialized extractor classes
|
|
19
|
+
- formatters_base.rbs # Base formatter and component classes
|
|
20
20
|
- formatters_components.rbs # Component classes for formatters
|
|
21
|
-
- formatters_shared.rbs
|
|
22
|
-
- formatters_main.rbs
|
|
23
|
-
- utils.rbs
|
|
21
|
+
- formatters_shared.rbs # Shared table builder classes
|
|
22
|
+
- formatters_main.rbs # Main formatter classes
|
|
23
|
+
- utils.rbs # Utility classes and processors
|
|
24
24
|
|
|
25
25
|
coverage_targets:
|
|
26
26
|
- lib/class_metrix.rb
|
metadata
CHANGED
|
@@ -1,15 +1,29 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: class-metrix
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0
|
|
4
|
+
version: 1.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Huy Nguyen
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2025-06-
|
|
11
|
+
date: 2025-06-08 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: brakeman
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - "~>"
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '7.0'
|
|
20
|
+
type: :development
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - "~>"
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '7.0'
|
|
13
27
|
- !ruby/object:Gem::Dependency
|
|
14
28
|
name: rbs
|
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -52,6 +66,34 @@ dependencies:
|
|
|
52
66
|
- - "~>"
|
|
53
67
|
- !ruby/object:Gem::Version
|
|
54
68
|
version: '1.0'
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: simplecov
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - "~>"
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '0.22'
|
|
76
|
+
type: :development
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - "~>"
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '0.22'
|
|
83
|
+
- !ruby/object:Gem::Dependency
|
|
84
|
+
name: simplecov_json_formatter
|
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
|
86
|
+
requirements:
|
|
87
|
+
- - "~>"
|
|
88
|
+
- !ruby/object:Gem::Version
|
|
89
|
+
version: '0.1'
|
|
90
|
+
type: :development
|
|
91
|
+
prerelease: false
|
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
+
requirements:
|
|
94
|
+
- - "~>"
|
|
95
|
+
- !ruby/object:Gem::Version
|
|
96
|
+
version: '0.1'
|
|
55
97
|
- !ruby/object:Gem::Dependency
|
|
56
98
|
name: steep
|
|
57
99
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -76,6 +118,10 @@ extensions: []
|
|
|
76
118
|
extra_rdoc_files: []
|
|
77
119
|
files:
|
|
78
120
|
- ".editorconfig"
|
|
121
|
+
- ".prettierrc.json"
|
|
122
|
+
- ".qlty/.gitignore"
|
|
123
|
+
- ".qlty/configs/.yamllint.yaml"
|
|
124
|
+
- ".qlty/qlty.toml"
|
|
79
125
|
- ".rspec"
|
|
80
126
|
- ".rubocop.yml"
|
|
81
127
|
- ".tool-versions"
|
|
@@ -83,17 +129,19 @@ files:
|
|
|
83
129
|
- ".vscode/extensions.json"
|
|
84
130
|
- ".vscode/keybindings.json"
|
|
85
131
|
- ".vscode/launch.json"
|
|
86
|
-
- ".vscode/rbs.code-snippets"
|
|
87
132
|
- ".vscode/settings.json"
|
|
88
133
|
- ".vscode/tasks.json"
|
|
89
134
|
- CHANGELOG.md
|
|
90
135
|
- LICENSE.txt
|
|
91
136
|
- README.md
|
|
92
|
-
- RELEASE_GUIDE.md
|
|
93
137
|
- Rakefile
|
|
94
138
|
- Steepfile
|
|
139
|
+
- config/brakeman.yml
|
|
95
140
|
- docs/ARCHITECTURE.md
|
|
96
141
|
- docs/CHANGELOG_EVOLUTION_EXAMPLE.md
|
|
142
|
+
- docs/QLTY_INTEGRATION.md
|
|
143
|
+
- docs/RELEASE_GUIDE.md
|
|
144
|
+
- docs/SLACK_INTEGRATION.md
|
|
97
145
|
- examples/README.md
|
|
98
146
|
- examples/basic_usage.rb
|
|
99
147
|
- examples/debug_levels_demo.rb
|
data/.vscode/rbs.code-snippets
DELETED
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"RBS Class Definition": {
|
|
3
|
-
"prefix": "rbsclass",
|
|
4
|
-
"body": [
|
|
5
|
-
"class ${1:ClassName}",
|
|
6
|
-
" ${2:# Instance variables}",
|
|
7
|
-
" ${3:@var}: ${4:Type}",
|
|
8
|
-
"",
|
|
9
|
-
" ${5:# Methods}",
|
|
10
|
-
" def initialize: (${6:params}) -> void",
|
|
11
|
-
" def ${7:method_name}: (${8:params}) -> ${9:ReturnType}",
|
|
12
|
-
"",
|
|
13
|
-
" private",
|
|
14
|
-
"",
|
|
15
|
-
" def ${10:private_method}: () -> ${11:ReturnType}",
|
|
16
|
-
"end"
|
|
17
|
-
],
|
|
18
|
-
"description": "RBS class definition template"
|
|
19
|
-
},
|
|
20
|
-
"RBS Module Definition": {
|
|
21
|
-
"prefix": "rbsmodule",
|
|
22
|
-
"body": [
|
|
23
|
-
"module ${1:ModuleName}",
|
|
24
|
-
" ${2:# Module methods}",
|
|
25
|
-
" def self.${3:method_name}: (${4:params}) -> ${5:ReturnType}",
|
|
26
|
-
"",
|
|
27
|
-
" ${6:# Instance methods}",
|
|
28
|
-
" def ${7:method_name}: (${8:params}) -> ${9:ReturnType}",
|
|
29
|
-
"end"
|
|
30
|
-
],
|
|
31
|
-
"description": "RBS module definition template"
|
|
32
|
-
},
|
|
33
|
-
"RBS Method Definition": {
|
|
34
|
-
"prefix": "rbsmethod",
|
|
35
|
-
"body": [
|
|
36
|
-
"def ${1:method_name}: (${2:params}) -> ${3:ReturnType}"
|
|
37
|
-
],
|
|
38
|
-
"description": "RBS method definition"
|
|
39
|
-
},
|
|
40
|
-
"RBS Attribute Reader": {
|
|
41
|
-
"prefix": "rbsattr_reader",
|
|
42
|
-
"body": [
|
|
43
|
-
"attr_reader ${1:attribute}: ${2:Type}"
|
|
44
|
-
],
|
|
45
|
-
"description": "RBS attribute reader"
|
|
46
|
-
},
|
|
47
|
-
"RBS Attribute Writer": {
|
|
48
|
-
"prefix": "rbsattr_writer",
|
|
49
|
-
"body": [
|
|
50
|
-
"attr_writer ${1:attribute}: ${2:Type}"
|
|
51
|
-
],
|
|
52
|
-
"description": "RBS attribute writer"
|
|
53
|
-
},
|
|
54
|
-
"RBS Attribute Accessor": {
|
|
55
|
-
"prefix": "rbsattr_accessor",
|
|
56
|
-
"body": [
|
|
57
|
-
"attr_accessor ${1:attribute}: ${2:Type}"
|
|
58
|
-
],
|
|
59
|
-
"description": "RBS attribute accessor"
|
|
60
|
-
}
|
|
61
|
-
}
|