class-metrix 0.1.2 → 1.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 +4 -4
- data/.editorconfig +48 -0
- data/.vscode/README.md +128 -0
- data/.vscode/extensions.json +31 -0
- data/.vscode/keybindings.json +26 -0
- data/.vscode/launch.json +32 -0
- data/.vscode/rbs.code-snippets +61 -0
- data/.vscode/settings.json +112 -0
- data/.vscode/tasks.json +240 -0
- data/CHANGELOG.md +73 -4
- data/README.md +86 -22
- data/Steepfile +26 -0
- data/docs/ARCHITECTURE.md +501 -0
- data/docs/CHANGELOG_EVOLUTION_EXAMPLE.md +95 -0
- data/examples/README.md +161 -114
- data/examples/basic_usage.rb +88 -0
- data/examples/debug_levels_demo.rb +65 -0
- data/examples/debug_mode_demo.rb +75 -0
- data/examples/inheritance_and_modules.rb +155 -0
- data/lib/class_metrix/extractor.rb +106 -11
- data/lib/class_metrix/extractors/constants_extractor.rb +155 -21
- data/lib/class_metrix/extractors/methods_extractor.rb +186 -21
- data/lib/class_metrix/extractors/multi_type_extractor.rb +8 -7
- data/lib/class_metrix/formatters/base/base_formatter.rb +3 -3
- data/lib/class_metrix/formatters/components/footer_component.rb +4 -4
- data/lib/class_metrix/formatters/components/generic_header_component.rb +2 -2
- data/lib/class_metrix/formatters/components/header_component.rb +4 -4
- data/lib/class_metrix/formatters/components/missing_behaviors_component.rb +7 -7
- data/lib/class_metrix/formatters/components/table_component/column_width_calculator.rb +56 -0
- data/lib/class_metrix/formatters/components/table_component/row_processor.rb +141 -0
- data/lib/class_metrix/formatters/components/table_component/table_data_extractor.rb +57 -0
- data/lib/class_metrix/formatters/components/table_component/table_renderer.rb +55 -0
- data/lib/class_metrix/formatters/components/table_component.rb +32 -245
- data/lib/class_metrix/formatters/csv_formatter.rb +3 -3
- data/lib/class_metrix/formatters/markdown_formatter.rb +3 -4
- data/lib/class_metrix/formatters/shared/markdown_table_builder.rb +12 -7
- data/lib/class_metrix/formatters/shared/table_builder.rb +92 -27
- data/lib/class_metrix/formatters/shared/value_processor.rb +72 -16
- data/lib/class_metrix/utils/debug_logger.rb +159 -0
- data/lib/class_metrix/version.rb +1 -1
- data/sig/class_metrix.rbs +8 -0
- data/sig/extractor.rbs +54 -0
- data/sig/extractors.rbs +84 -0
- data/sig/formatters_base.rbs +59 -0
- data/sig/formatters_components.rbs +133 -0
- data/sig/formatters_main.rbs +20 -0
- data/sig/formatters_shared.rbs +102 -0
- data/sig/manifest.yaml +32 -0
- data/sig/utils.rbs +57 -0
- data/sig/value_processor.rbs +11 -0
- data/sig/version.rbs +4 -0
- metadata +60 -10
- data/examples/advanced/error_handling.rb +0 -199
- data/examples/advanced/hash_expansion.rb +0 -180
- data/examples/basic/01_simple_constants.rb +0 -56
- data/examples/basic/02_simple_methods.rb +0 -99
- data/examples/basic/03_multi_type_extraction.rb +0 -116
- data/examples/components/configurable_reports.rb +0 -201
- data/examples/csv_output_demo.rb +0 -237
- data/examples/real_world/microservices_audit.rb +0 -312
- data/sig/class/metrix.rbs +0 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9b893eab40ee30c91bfb72059fcaffc282efca2088e4e150d2cf89c7fb0ff835
|
4
|
+
data.tar.gz: 553832b76ef1c44f6ace2cb7b37808dc2e18ef3c2f16882cc2aa951d1d9b82b3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 98297596048b427aa614a18ab3bb01cde37382b95df9b10dd2d9e2856db0afccdc420245e6b5f84ac676fa35bd7b6b68e8d945bf58f987526c39fde840d05a8f
|
7
|
+
data.tar.gz: dc3729ab21692725a5660b781c51c81282640640a3fae6d11328fb0485f30f4af4e30e71c74e987a3ad5709726878fb04713e349098bd4df0538468416b0099f
|
data/.editorconfig
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
# EditorConfig is awesome: https://EditorConfig.org
|
2
|
+
|
3
|
+
# top-most EditorConfig file
|
4
|
+
root = true
|
5
|
+
|
6
|
+
# All files
|
7
|
+
[*]
|
8
|
+
charset = utf-8
|
9
|
+
end_of_line = lf
|
10
|
+
insert_final_newline = true
|
11
|
+
trim_trailing_whitespace = true
|
12
|
+
|
13
|
+
# Ruby files
|
14
|
+
[*.rb]
|
15
|
+
indent_style = space
|
16
|
+
indent_size = 2
|
17
|
+
max_line_length = 140
|
18
|
+
|
19
|
+
# Gemfiles and other Ruby-related files
|
20
|
+
[{Gemfile,Rakefile,*.gemspec}]
|
21
|
+
indent_style = space
|
22
|
+
indent_size = 2
|
23
|
+
|
24
|
+
# YAML files
|
25
|
+
[*.{yml,yaml}]
|
26
|
+
indent_style = space
|
27
|
+
indent_size = 2
|
28
|
+
|
29
|
+
# Markdown files
|
30
|
+
[*.md]
|
31
|
+
indent_style = space
|
32
|
+
indent_size = 2
|
33
|
+
trim_trailing_whitespace = false
|
34
|
+
|
35
|
+
# JSON files
|
36
|
+
[*.json]
|
37
|
+
indent_style = space
|
38
|
+
indent_size = 2
|
39
|
+
|
40
|
+
# JavaScript/TypeScript files (if any)
|
41
|
+
[*.{js,ts}]
|
42
|
+
indent_style = space
|
43
|
+
indent_size = 2
|
44
|
+
|
45
|
+
# Shell scripts
|
46
|
+
[*.sh]
|
47
|
+
indent_style = space
|
48
|
+
indent_size = 2
|
data/.vscode/README.md
ADDED
@@ -0,0 +1,128 @@
|
|
1
|
+
# VS Code Configuration for ClassMetrix
|
2
|
+
|
3
|
+
## 🎯 Overview
|
4
|
+
|
5
|
+
This directory contains comprehensive VS Code configuration for the ClassMetrix Ruby gem development with full RBS (Ruby Signature) and Steep type checking integration.
|
6
|
+
|
7
|
+
## 📦 Extensions
|
8
|
+
|
9
|
+
### Required Extensions
|
10
|
+
|
11
|
+
- **Ruby LSP** (`shopify.ruby-lsp`) - Primary Ruby language support
|
12
|
+
- **RBS Syntax** (`soutaro.rbs-syntax`) - RBS file syntax highlighting
|
13
|
+
- **Steep VS Code** (`soutaro.steep-vscode`) - Type checking integration
|
14
|
+
- **RBS Snippets** (`mateuszdrewniak.rbs-snippets`) - Code snippets for RBS
|
15
|
+
|
16
|
+
### Optional Extensions
|
17
|
+
|
18
|
+
- **Ruby Debugger** (`koichisasada.vscode-rdbg`) - Debugging support
|
19
|
+
- **GitLens** (`eamodio.gitlens`) - Enhanced Git integration
|
20
|
+
- **Markdown All in One** (`yzhang.markdown-all-in-one`) - Documentation support
|
21
|
+
|
22
|
+
## ⚙️ Settings Configuration
|
23
|
+
|
24
|
+
### Ruby Language Support
|
25
|
+
|
26
|
+
- **Format on Save**: Enabled with RuboCop
|
27
|
+
- **Ruby LSP**: Full feature set enabled
|
28
|
+
- **Semantic Highlighting**: Enabled for both Ruby and RBS files
|
29
|
+
|
30
|
+
### RBS Type Checking
|
31
|
+
|
32
|
+
- **Steep Integration**: Real-time type checking
|
33
|
+
- **Diagnostics**: Enabled for immediate feedback
|
34
|
+
- **File Associations**: `.rbs` files properly recognized
|
35
|
+
|
36
|
+
### Code Quality
|
37
|
+
|
38
|
+
- **RuboCop**: Integrated for code formatting and linting
|
39
|
+
- **Auto-fix on Save**: Automatic code corrections
|
40
|
+
|
41
|
+
## 🛠️ Available Tasks
|
42
|
+
|
43
|
+
### Ruby Development Tasks
|
44
|
+
|
45
|
+
- **`Ctrl+Shift+P` → "Tasks: Run Task"**
|
46
|
+
|
47
|
+
| Task | Description | Shortcut |
|
48
|
+
| --------------------------- | --------------------------- | ---------------------- |
|
49
|
+
| `Rubocop: Check` | Lint all Ruby files | - |
|
50
|
+
| `Rubocop: Fix` | Auto-fix all RuboCop issues | `Ctrl+Shift+R, Ctrl+R` |
|
51
|
+
| `Rubocop: Fix Current File` | Fix current file only | - |
|
52
|
+
| `RSpec: Run All Tests` | Run entire test suite | - |
|
53
|
+
| `RSpec: Run Current File` | Run tests for current file | - |
|
54
|
+
|
55
|
+
### Type Checking Tasks
|
56
|
+
|
57
|
+
| Task | Description | Shortcut |
|
58
|
+
| -------------------------- | --------------------------- | ---------------------- |
|
59
|
+
| `RBS: Validate` | Validate RBS syntax | `Ctrl+Shift+R, Ctrl+V` |
|
60
|
+
| `RBS: Generate Prototypes` | Generate RBS from Ruby code | - |
|
61
|
+
| `Steep: Type Check` | Run type checking | `Ctrl+Shift+R, Ctrl+S` |
|
62
|
+
| `Steep: Watch Mode` | Continuous type checking | `Ctrl+Shift+R, Ctrl+W` |
|
63
|
+
|
64
|
+
### Build Tasks
|
65
|
+
|
66
|
+
| Task | Description |
|
67
|
+
| ---------------- | ------------------------ |
|
68
|
+
| `Bundle Install` | Install gem dependencies |
|
69
|
+
|
70
|
+
## ⌨️ Keyboard Shortcuts
|
71
|
+
|
72
|
+
### Custom Shortcuts
|
73
|
+
|
74
|
+
- **`Ctrl+Shift+R, Ctrl+V`**: RBS Validate
|
75
|
+
- **`Ctrl+Shift+R, Ctrl+S`**: Steep Type Check
|
76
|
+
- **`Ctrl+Shift+R, Ctrl+W`**: Steep Watch Mode
|
77
|
+
- **`Ctrl+Shift+R, Ctrl+R`**: RuboCop Fix
|
78
|
+
|
79
|
+
### Usage Pattern
|
80
|
+
|
81
|
+
1. Press `Ctrl+Shift+R` to enter "Ruby mode"
|
82
|
+
2. Press the second key for the specific action
|
83
|
+
|
84
|
+
## 📝 Code Snippets
|
85
|
+
|
86
|
+
### RBS Snippets
|
87
|
+
|
88
|
+
- **`rbsclass`**: Complete RBS class template
|
89
|
+
- **`rbsmodule`**: RBS module template
|
90
|
+
- **`rbsmethod`**: Method signature
|
91
|
+
- **`rbsattr_reader`**: Attribute reader
|
92
|
+
- **`rbsattr_writer`**: Attribute writer
|
93
|
+
- **`rbsattr_accessor`**: Attribute accessor
|
94
|
+
|
95
|
+
### Usage
|
96
|
+
|
97
|
+
1. Type snippet prefix in `.rbs` file
|
98
|
+
2. Press `Tab` to expand
|
99
|
+
3. Use `Tab` to navigate through placeholders
|
100
|
+
|
101
|
+
## 🚀 Getting Started
|
102
|
+
|
103
|
+
### 1. Install Extensions
|
104
|
+
|
105
|
+
VS Code will prompt to install recommended extensions when you open the workspace.
|
106
|
+
|
107
|
+
### 2. Verify Setup
|
108
|
+
|
109
|
+
1. Open any `.rb` file - should have Ruby LSP support
|
110
|
+
2. Open any `.rbs` file - should have syntax highlighting
|
111
|
+
3. Run `Ctrl+Shift+R, Ctrl+S` - should type check without errors
|
112
|
+
|
113
|
+
### 3. Start Development
|
114
|
+
|
115
|
+
1. Use `Ctrl+Shift+R, Ctrl+W` to start watch mode
|
116
|
+
2. Edit Ruby files - see real-time type checking
|
117
|
+
3. Use code snippets for rapid RBS development
|
118
|
+
|
119
|
+
## 📊 Current Status
|
120
|
+
|
121
|
+
✅ **Type Safety**: 100% (0 Steep errors)
|
122
|
+
✅ **RBS Coverage**: Complete for all extractors
|
123
|
+
✅ **VS Code Integration**: Fully configured
|
124
|
+
✅ **Development Workflow**: Optimized
|
125
|
+
|
126
|
+
---
|
127
|
+
|
128
|
+
This VS Code setup provides a complete Ruby development environment with modern type checking capabilities.
|
@@ -0,0 +1,31 @@
|
|
1
|
+
{
|
2
|
+
"recommendations": [
|
3
|
+
// Ruby language support
|
4
|
+
"shopify.ruby-lsp",
|
5
|
+
|
6
|
+
// RBS and Steep support (type checking)
|
7
|
+
"soutaro.rbs-syntax",
|
8
|
+
"soutaro.steep-vscode",
|
9
|
+
"mateuszdrewniak.rbs-snippets",
|
10
|
+
|
11
|
+
// Debugging support
|
12
|
+
"koichisasada.vscode-rdbg",
|
13
|
+
|
14
|
+
// Markdown support
|
15
|
+
"esbenp.prettier-vscode",
|
16
|
+
"yzhang.markdown-all-in-one",
|
17
|
+
"davidanson.vscode-markdownlint",
|
18
|
+
|
19
|
+
// General productivity
|
20
|
+
"ms-vscode.vscode-json",
|
21
|
+
"redhat.vscode-yaml",
|
22
|
+
"editorconfig.editorconfig",
|
23
|
+
|
24
|
+
// Git integration
|
25
|
+
"eamodio.gitlens",
|
26
|
+
|
27
|
+
// Additional helpful extensions
|
28
|
+
"ms-vscode.test-adapter-converter",
|
29
|
+
"hbenl.vscode-test-explorer"
|
30
|
+
]
|
31
|
+
}
|
@@ -0,0 +1,26 @@
|
|
1
|
+
[
|
2
|
+
{
|
3
|
+
"key": "ctrl+shift+r ctrl+v",
|
4
|
+
"command": "workbench.action.tasks.runTask",
|
5
|
+
"args": "RBS: Validate",
|
6
|
+
"when": "editorTextFocus"
|
7
|
+
},
|
8
|
+
{
|
9
|
+
"key": "ctrl+shift+r ctrl+s",
|
10
|
+
"command": "workbench.action.tasks.runTask",
|
11
|
+
"args": "Steep: Type Check",
|
12
|
+
"when": "editorTextFocus"
|
13
|
+
},
|
14
|
+
{
|
15
|
+
"key": "ctrl+shift+r ctrl+w",
|
16
|
+
"command": "workbench.action.tasks.runTask",
|
17
|
+
"args": "Steep: Watch Mode",
|
18
|
+
"when": "editorTextFocus"
|
19
|
+
},
|
20
|
+
{
|
21
|
+
"key": "ctrl+shift+r ctrl+r",
|
22
|
+
"command": "workbench.action.tasks.runTask",
|
23
|
+
"args": "Rubocop: Fix",
|
24
|
+
"when": "editorTextFocus"
|
25
|
+
}
|
26
|
+
]
|
data/.vscode/launch.json
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
{
|
2
|
+
"version": "0.2.0",
|
3
|
+
"configurations": [
|
4
|
+
{
|
5
|
+
"name": "Ruby: Run Current File",
|
6
|
+
"type": "ruby_lsp",
|
7
|
+
"request": "launch",
|
8
|
+
"program": "${file}"
|
9
|
+
},
|
10
|
+
{
|
11
|
+
"name": "Ruby: Run with Arguments",
|
12
|
+
"type": "ruby_lsp",
|
13
|
+
"request": "launch",
|
14
|
+
"program": "${file}",
|
15
|
+
"args": []
|
16
|
+
},
|
17
|
+
{
|
18
|
+
"name": "RSpec: Debug Current File",
|
19
|
+
"type": "ruby_lsp",
|
20
|
+
"request": "launch",
|
21
|
+
"program": "bundle",
|
22
|
+
"args": ["exec", "rspec", "${file}"]
|
23
|
+
},
|
24
|
+
{
|
25
|
+
"name": "RSpec: Debug All Tests",
|
26
|
+
"type": "ruby_lsp",
|
27
|
+
"request": "launch",
|
28
|
+
"program": "bundle",
|
29
|
+
"args": ["exec", "rspec"]
|
30
|
+
}
|
31
|
+
]
|
32
|
+
}
|
@@ -0,0 +1,61 @@
|
|
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
|
+
}
|
@@ -0,0 +1,112 @@
|
|
1
|
+
{
|
2
|
+
// Ruby language settings
|
3
|
+
"ruby.format": "rubocop",
|
4
|
+
"ruby.lint": {
|
5
|
+
"rubocop": {
|
6
|
+
"useBundler": true
|
7
|
+
}
|
8
|
+
},
|
9
|
+
"ruby.useLanguageServer": true,
|
10
|
+
"ruby.intellisense": "rubyLsp",
|
11
|
+
|
12
|
+
// Auto-formatting settings
|
13
|
+
"editor.formatOnSave": true,
|
14
|
+
"editor.formatOnPaste": true,
|
15
|
+
"editor.formatOnType": false,
|
16
|
+
"editor.codeActionsOnSave": {
|
17
|
+
"source.fixAll.rubocop": "explicit"
|
18
|
+
},
|
19
|
+
|
20
|
+
// Language-specific formatting
|
21
|
+
"[ruby]": {
|
22
|
+
"editor.defaultFormatter": "Shopify.ruby-lsp",
|
23
|
+
"editor.formatOnSave": true,
|
24
|
+
"editor.tabSize": 2,
|
25
|
+
"editor.insertSpaces": true,
|
26
|
+
"editor.semanticHighlighting.enabled": true,
|
27
|
+
"editor.formatOnType": true,
|
28
|
+
"editor.rulers": [140],
|
29
|
+
"editor.trimAutoWhitespace": true
|
30
|
+
},
|
31
|
+
"[markdown]": {
|
32
|
+
"editor.defaultFormatter": "esbenp.prettier-vscode",
|
33
|
+
"editor.formatOnSave": true,
|
34
|
+
"editor.tabSize": 2,
|
35
|
+
"editor.wordWrap": "on",
|
36
|
+
"editor.quickSuggestions": {
|
37
|
+
"comments": "off",
|
38
|
+
"strings": "off",
|
39
|
+
"other": "off"
|
40
|
+
}
|
41
|
+
},
|
42
|
+
"[rbs]": {
|
43
|
+
"editor.defaultFormatter": "soutaro.rbs-syntax",
|
44
|
+
"editor.formatOnSave": true,
|
45
|
+
"editor.tabSize": 2,
|
46
|
+
"editor.insertSpaces": true,
|
47
|
+
"editor.semanticHighlighting.enabled": true,
|
48
|
+
"editor.rulers": [120],
|
49
|
+
"editor.trimAutoWhitespace": true
|
50
|
+
},
|
51
|
+
|
52
|
+
// File associations
|
53
|
+
"files.associations": {
|
54
|
+
"*.gemspec": "ruby",
|
55
|
+
"Gemfile": "ruby",
|
56
|
+
"Rakefile": "ruby",
|
57
|
+
".rubocop.yml": "yaml",
|
58
|
+
"*.rbs": "rbs",
|
59
|
+
"Steepfile": "ruby"
|
60
|
+
},
|
61
|
+
|
62
|
+
// Auto-save settings
|
63
|
+
"files.autoSave": "onFocusChange",
|
64
|
+
"files.trimTrailingWhitespace": true,
|
65
|
+
"files.insertFinalNewline": true,
|
66
|
+
"files.trimFinalNewlines": true,
|
67
|
+
|
68
|
+
// Ruby LSP specific settings
|
69
|
+
"rubyLsp.enabledFeatures": {
|
70
|
+
"codeActions": true,
|
71
|
+
"diagnostics": true,
|
72
|
+
"documentHighlights": true,
|
73
|
+
"documentLink": true,
|
74
|
+
"documentSymbols": true,
|
75
|
+
"foldingRanges": true,
|
76
|
+
"formatting": true,
|
77
|
+
"hover": true,
|
78
|
+
"inlayHint": true,
|
79
|
+
"onTypeFormatting": true,
|
80
|
+
"selectionRanges": true,
|
81
|
+
"semanticHighlighting": true,
|
82
|
+
"completion": true,
|
83
|
+
"codeLens": true,
|
84
|
+
"definition": true,
|
85
|
+
"workspaceSymbol": true,
|
86
|
+
"signatureHelp": true,
|
87
|
+
"typeHierarchy": true
|
88
|
+
},
|
89
|
+
"rubyLsp.formatter": "rubocop",
|
90
|
+
|
91
|
+
// Rubocop specific settings
|
92
|
+
"ruby.rubocop.configFilePath": ".rubocop.yml",
|
93
|
+
"ruby.rubocop.suppressRubocopWarnings": false,
|
94
|
+
|
95
|
+
// Steep type checker settings
|
96
|
+
"steep.enabled": true,
|
97
|
+
"steep.checkOnSave": true,
|
98
|
+
"steep.diagnosticsEnabled": true,
|
99
|
+
"steep.signatureHelp": true,
|
100
|
+
"steep.hover": true,
|
101
|
+
|
102
|
+
// RBS validation settings
|
103
|
+
"ruby.rbs": {
|
104
|
+
"enabled": true,
|
105
|
+
"diagnostics": true
|
106
|
+
},
|
107
|
+
|
108
|
+
// Additional helpful settings
|
109
|
+
"breadcrumbs.enabled": true,
|
110
|
+
"editor.minimap.enabled": true,
|
111
|
+
"workbench.editor.enablePreview": false
|
112
|
+
}
|
data/.vscode/tasks.json
ADDED
@@ -0,0 +1,240 @@
|
|
1
|
+
{
|
2
|
+
"version": "2.0.0",
|
3
|
+
"tasks": [
|
4
|
+
{
|
5
|
+
"label": "Rubocop: Check",
|
6
|
+
"type": "shell",
|
7
|
+
"command": "bundle",
|
8
|
+
"args": ["exec", "rubocop"],
|
9
|
+
"group": "test",
|
10
|
+
"presentation": {
|
11
|
+
"echo": true,
|
12
|
+
"reveal": "always",
|
13
|
+
"focus": false,
|
14
|
+
"panel": "shared"
|
15
|
+
},
|
16
|
+
"problemMatcher": [
|
17
|
+
{
|
18
|
+
"owner": "rubocop",
|
19
|
+
"fileLocation": "absolute",
|
20
|
+
"pattern": [
|
21
|
+
{
|
22
|
+
"regexp": "^([^:]+):(\\d+):(\\d+): ([A-Z]): (.*)$",
|
23
|
+
"file": 1,
|
24
|
+
"line": 2,
|
25
|
+
"column": 3,
|
26
|
+
"severity": 4,
|
27
|
+
"message": 5
|
28
|
+
}
|
29
|
+
]
|
30
|
+
}
|
31
|
+
]
|
32
|
+
},
|
33
|
+
{
|
34
|
+
"label": "Rubocop: Fix",
|
35
|
+
"type": "shell",
|
36
|
+
"command": "bundle",
|
37
|
+
"args": ["exec", "rubocop", "-A"],
|
38
|
+
"group": "build",
|
39
|
+
"presentation": {
|
40
|
+
"echo": true,
|
41
|
+
"reveal": "always",
|
42
|
+
"focus": false,
|
43
|
+
"panel": "shared"
|
44
|
+
}
|
45
|
+
},
|
46
|
+
{
|
47
|
+
"label": "Rubocop: Fix Current File",
|
48
|
+
"type": "shell",
|
49
|
+
"command": "bundle",
|
50
|
+
"args": ["exec", "rubocop", "-A", "${file}"],
|
51
|
+
"group": "build",
|
52
|
+
"presentation": {
|
53
|
+
"echo": true,
|
54
|
+
"reveal": "silent",
|
55
|
+
"focus": false,
|
56
|
+
"panel": "shared"
|
57
|
+
}
|
58
|
+
},
|
59
|
+
{
|
60
|
+
"label": "RSpec: Run All Tests",
|
61
|
+
"type": "shell",
|
62
|
+
"command": "bundle",
|
63
|
+
"args": ["exec", "rspec"],
|
64
|
+
"group": "test",
|
65
|
+
"presentation": {
|
66
|
+
"echo": true,
|
67
|
+
"reveal": "always",
|
68
|
+
"focus": false,
|
69
|
+
"panel": "shared"
|
70
|
+
}
|
71
|
+
},
|
72
|
+
{
|
73
|
+
"label": "RSpec: Run Current File",
|
74
|
+
"type": "shell",
|
75
|
+
"command": "bundle",
|
76
|
+
"args": ["exec", "rspec", "${file}"],
|
77
|
+
"group": "test",
|
78
|
+
"presentation": {
|
79
|
+
"echo": true,
|
80
|
+
"reveal": "always",
|
81
|
+
"focus": false,
|
82
|
+
"panel": "shared"
|
83
|
+
}
|
84
|
+
},
|
85
|
+
{
|
86
|
+
"label": "Bundle Install",
|
87
|
+
"type": "shell",
|
88
|
+
"command": "bundle",
|
89
|
+
"args": ["install"],
|
90
|
+
"group": "build",
|
91
|
+
"presentation": {
|
92
|
+
"echo": true,
|
93
|
+
"reveal": "always",
|
94
|
+
"focus": false,
|
95
|
+
"panel": "shared"
|
96
|
+
}
|
97
|
+
},
|
98
|
+
{
|
99
|
+
"label": "RBS: Validate",
|
100
|
+
"type": "shell",
|
101
|
+
"command": "bundle",
|
102
|
+
"args": ["exec", "rbs", "validate"],
|
103
|
+
"group": "test",
|
104
|
+
"presentation": {
|
105
|
+
"echo": true,
|
106
|
+
"reveal": "always",
|
107
|
+
"focus": false,
|
108
|
+
"panel": "shared"
|
109
|
+
},
|
110
|
+
"problemMatcher": [
|
111
|
+
{
|
112
|
+
"owner": "rbs",
|
113
|
+
"fileLocation": "absolute",
|
114
|
+
"pattern": [
|
115
|
+
{
|
116
|
+
"regexp": "^([^:]+):(\\d+):(\\d+): (.*)$",
|
117
|
+
"file": 1,
|
118
|
+
"line": 2,
|
119
|
+
"column": 3,
|
120
|
+
"message": 4
|
121
|
+
}
|
122
|
+
]
|
123
|
+
}
|
124
|
+
]
|
125
|
+
},
|
126
|
+
{
|
127
|
+
"label": "Steep: Type Check",
|
128
|
+
"type": "shell",
|
129
|
+
"command": "bundle",
|
130
|
+
"args": ["exec", "steep", "check"],
|
131
|
+
"group": "test",
|
132
|
+
"presentation": {
|
133
|
+
"echo": true,
|
134
|
+
"reveal": "always",
|
135
|
+
"focus": false,
|
136
|
+
"panel": "shared"
|
137
|
+
},
|
138
|
+
"problemMatcher": [
|
139
|
+
{
|
140
|
+
"owner": "steep",
|
141
|
+
"fileLocation": "absolute",
|
142
|
+
"pattern": [
|
143
|
+
{
|
144
|
+
"regexp": "^([^:]+):(\\d+):(\\d+): \\[([^\\]]+)\\] (.*)$",
|
145
|
+
"file": 1,
|
146
|
+
"line": 2,
|
147
|
+
"column": 3,
|
148
|
+
"severity": 4,
|
149
|
+
"message": 5
|
150
|
+
}
|
151
|
+
]
|
152
|
+
}
|
153
|
+
]
|
154
|
+
},
|
155
|
+
{
|
156
|
+
"label": "Steep: Watch Mode",
|
157
|
+
"type": "shell",
|
158
|
+
"command": "bundle",
|
159
|
+
"args": ["exec", "steep", "watch", "lib"],
|
160
|
+
"group": "build",
|
161
|
+
"isBackground": true,
|
162
|
+
"presentation": {
|
163
|
+
"echo": true,
|
164
|
+
"reveal": "always",
|
165
|
+
"focus": false,
|
166
|
+
"panel": "shared"
|
167
|
+
},
|
168
|
+
"problemMatcher": [
|
169
|
+
{
|
170
|
+
"owner": "steep",
|
171
|
+
"fileLocation": "absolute",
|
172
|
+
"pattern": [
|
173
|
+
{
|
174
|
+
"regexp": "^([^:]+):(\\d+):(\\d+): \\[([^\\]]+)\\] (.*)$",
|
175
|
+
"file": 1,
|
176
|
+
"line": 2,
|
177
|
+
"column": 3,
|
178
|
+
"severity": 4,
|
179
|
+
"message": 5
|
180
|
+
}
|
181
|
+
],
|
182
|
+
"background": {
|
183
|
+
"activeOnStart": true,
|
184
|
+
"beginsPattern": "^# Type checking files:",
|
185
|
+
"endsPattern": "^(No type error detected|Detected \\d+ problems)"
|
186
|
+
}
|
187
|
+
}
|
188
|
+
]
|
189
|
+
},
|
190
|
+
{
|
191
|
+
"label": "Steep: Watch All Targets",
|
192
|
+
"type": "shell",
|
193
|
+
"command": "bundle",
|
194
|
+
"args": ["exec", "steep", "watch", "--target", "lib"],
|
195
|
+
"group": "build",
|
196
|
+
"isBackground": true,
|
197
|
+
"presentation": {
|
198
|
+
"echo": true,
|
199
|
+
"reveal": "always",
|
200
|
+
"focus": false,
|
201
|
+
"panel": "shared"
|
202
|
+
},
|
203
|
+
"problemMatcher": [
|
204
|
+
{
|
205
|
+
"owner": "steep",
|
206
|
+
"fileLocation": "absolute",
|
207
|
+
"pattern": [
|
208
|
+
{
|
209
|
+
"regexp": "^([^:]+):(\\d+):(\\d+): \\[([^\\]]+)\\] (.*)$",
|
210
|
+
"file": 1,
|
211
|
+
"line": 2,
|
212
|
+
"column": 3,
|
213
|
+
"severity": 4,
|
214
|
+
"message": 5
|
215
|
+
}
|
216
|
+
],
|
217
|
+
"background": {
|
218
|
+
"activeOnStart": true,
|
219
|
+
"beginsPattern": "^# Type checking files:",
|
220
|
+
"endsPattern": "^(No type error detected|Detected \\d+ problems)"
|
221
|
+
}
|
222
|
+
}
|
223
|
+
]
|
224
|
+
},
|
225
|
+
{
|
226
|
+
"label": "RBS: Generate Prototypes",
|
227
|
+
"type": "shell",
|
228
|
+
"command": "bundle",
|
229
|
+
"args": ["exec", "rbs", "prototype", "rb", "lib"],
|
230
|
+
"group": "build",
|
231
|
+
"presentation": {
|
232
|
+
"echo": true,
|
233
|
+
"reveal": "always",
|
234
|
+
"focus": false,
|
235
|
+
"panel": "shared"
|
236
|
+
},
|
237
|
+
"problemMatcher": []
|
238
|
+
}
|
239
|
+
]
|
240
|
+
}
|