@sun-asterisk/sunlint 1.1.7 → 1.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.
Files changed (74) hide show
  1. package/.sunlint.json +1 -1
  2. package/CHANGELOG.md +83 -0
  3. package/README.md +66 -4
  4. package/config/presets/all.json +125 -0
  5. package/config/presets/beginner.json +16 -8
  6. package/config/presets/ci.json +12 -4
  7. package/config/presets/maintainability.json +38 -0
  8. package/config/presets/performance.json +32 -0
  9. package/config/presets/quality.json +103 -0
  10. package/config/presets/recommended.json +36 -12
  11. package/config/presets/security.json +88 -0
  12. package/config/presets/strict.json +15 -5
  13. package/config/rules/rules-registry-generated.json +6312 -0
  14. package/config/rules-summary.json +1941 -0
  15. package/core/adapters/sunlint-rule-adapter.js +452 -0
  16. package/core/analysis-orchestrator.js +4 -4
  17. package/core/config-manager.js +28 -5
  18. package/core/rule-selection-service.js +52 -55
  19. package/docs/CONFIGURATION.md +111 -3
  20. package/docs/LANGUAGE-SPECIFIC-RULES.md +308 -0
  21. package/docs/README.md +3 -0
  22. package/docs/STANDARDIZED-CATEGORY-FILTERING.md +156 -0
  23. package/engines/eslint-engine.js +92 -2
  24. package/engines/heuristic-engine.js +8 -31
  25. package/origin-rules/common-en.md +1320 -0
  26. package/origin-rules/dart-en.md +289 -0
  27. package/origin-rules/java-en.md +60 -0
  28. package/origin-rules/kotlin-mobile-en.md +453 -0
  29. package/origin-rules/reactjs-en.md +102 -0
  30. package/origin-rules/security-en.md +1055 -0
  31. package/origin-rules/swift-en.md +449 -0
  32. package/origin-rules/typescript-en.md +136 -0
  33. package/package.json +6 -5
  34. package/scripts/copy-rules.js +86 -0
  35. package/rules/README.md +0 -252
  36. package/rules/common/C002_no_duplicate_code/analyzer.js +0 -65
  37. package/rules/common/C002_no_duplicate_code/config.json +0 -23
  38. package/rules/common/C003_no_vague_abbreviations/analyzer.js +0 -418
  39. package/rules/common/C003_no_vague_abbreviations/config.json +0 -35
  40. package/rules/common/C006_function_naming/analyzer.js +0 -349
  41. package/rules/common/C006_function_naming/config.json +0 -86
  42. package/rules/common/C010_limit_block_nesting/analyzer.js +0 -389
  43. package/rules/common/C013_no_dead_code/analyzer.js +0 -206
  44. package/rules/common/C014_dependency_injection/analyzer.js +0 -338
  45. package/rules/common/C017_constructor_logic/analyzer.js +0 -314
  46. package/rules/common/C019_log_level_usage/analyzer.js +0 -362
  47. package/rules/common/C019_log_level_usage/config.json +0 -121
  48. package/rules/common/C029_catch_block_logging/analyzer.js +0 -373
  49. package/rules/common/C029_catch_block_logging/config.json +0 -59
  50. package/rules/common/C031_validation_separation/analyzer.js +0 -186
  51. package/rules/common/C041_no_sensitive_hardcode/analyzer.js +0 -292
  52. package/rules/common/C042_boolean_name_prefix/analyzer.js +0 -300
  53. package/rules/common/C043_no_console_or_print/analyzer.js +0 -304
  54. package/rules/common/C047_no_duplicate_retry_logic/analyzer.js +0 -351
  55. package/rules/common/C075_explicit_return_types/analyzer.js +0 -103
  56. package/rules/common/C076_single_test_behavior/analyzer.js +0 -121
  57. package/rules/docs/C002_no_duplicate_code.md +0 -57
  58. package/rules/docs/C031_validation_separation.md +0 -72
  59. package/rules/index.js +0 -149
  60. package/rules/migration/converter.js +0 -385
  61. package/rules/migration/mapping.json +0 -164
  62. package/rules/security/S026_json_schema_validation/analyzer.js +0 -251
  63. package/rules/security/S026_json_schema_validation/config.json +0 -27
  64. package/rules/security/S027_no_hardcoded_secrets/analyzer.js +0 -263
  65. package/rules/security/S027_no_hardcoded_secrets/config.json +0 -29
  66. package/rules/security/S029_csrf_protection/analyzer.js +0 -264
  67. package/rules/tests/C002_no_duplicate_code.test.js +0 -50
  68. package/rules/universal/C010/generic.js +0 -0
  69. package/rules/universal/C010/tree-sitter-analyzer.js +0 -0
  70. package/rules/utils/ast-utils.js +0 -191
  71. package/rules/utils/base-analyzer.js +0 -98
  72. package/rules/utils/pattern-matchers.js +0 -239
  73. package/rules/utils/rule-helpers.js +0 -264
  74. package/rules/utils/severity-constants.js +0 -93
package/.sunlint.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "extends": ["@sun/sunlint/recommended"],
2
+ "extends": "@sun/sunlint/recommended",
3
3
  "rules": {
4
4
  "C019": "warn",
5
5
  "C006": "warn",
package/CHANGELOG.md CHANGED
@@ -1,3 +1,86 @@
1
+ # 🎉 SunLint Changelog
2
+
3
+ ---
4
+
5
+ ## 🔥 **v1.2.0 - Architecture Refactor (In Development)**
6
+
7
+ **Release Date**: July 30, 2025
8
+ **Type**: Major Architecture Update (Adapter Pattern Implementation)
9
+
10
+ ### 🏗️ **Major Architecture Changes**
11
+
12
+ #### **Unified Adapter Pattern**
13
+ - **NEW**: `SunlintRuleAdapter` - Unified rule access layer for CLI
14
+ - **IMPROVED**: Same adapter pattern as VSCode extension (`RuleReaderService`)
15
+ - **ELIMINATED**: Direct parser/registry access across core modules
16
+ - **PERFORMANCE**: 0.07ms average per rule query with singleton caching
17
+
18
+ #### **Refactored Core Modules**
19
+ - **UPDATED**: `core/rule-selection-service.js` - Now uses adapter exclusively
20
+ - **UPDATED**: `core/config-manager.js` - Adapter-driven config validation
21
+ - **UPDATED**: `core/analysis-orchestrator.js` - Unified rule initialization
22
+ - **UPDATED**: `engines/heuristic-engine.js` - Adapter-based rule access
23
+
24
+ #### **Enhanced Rule Management**
25
+ - **IMPROVED**: 256 rules loaded from registry with fallback to origin-rules
26
+ - **ADDED**: AI context generation via `generateAIContext()` method
27
+ - **ENHANCED**: Engine compatibility checking (heuristic: 244, eslint: 17, ai: 256)
28
+ - **OPTIMIZED**: Memory usage with singleton pattern
29
+
30
+ ### 🎯 **Benefits**
31
+ - **No Rule Model Duplication**: Single source of truth across CLI and VSCode
32
+ - **Extensible Architecture**: Easy to add new engines or rule sources
33
+ - **Consistent OpenAI Integration**: Proper context extraction from origin-rules
34
+ - **Maintainable Codebase**: Centralized rule logic through adapter layer
35
+
36
+ ### 📊 **Performance Metrics**
37
+ - **Rule Loading**: 256 rules in ~10ms
38
+ - **Query Performance**: 0.07ms average per `getAllRules()` call
39
+ - **Engine Coverage**: Heuristic (95.3%), ESLint (6.6%), AI (100%)
40
+ - **Memory Efficiency**: Singleton prevents duplicate instances
41
+
42
+ ### 🧪 **Testing & Validation**
43
+ - **ADDED**: `test-adapter.js` - Comprehensive adapter testing
44
+ - **UPDATED**: Integration tests now use adapter methods
45
+ - **VERIFIED**: All 3/3 integration tests pass
46
+ - **VALIDATED**: Engine orchestration and rule compatibility
47
+
48
+ ---
49
+
50
+ ## 🎉 **v1.1.8 Release Notes**
51
+
52
+ **Release Date**: July 24, 2025
53
+ **Type**: Minor Release (ESLint 9.x Compatibility & Enhanced Error Handling)
54
+
55
+ ---
56
+
57
+ ## 🚀 **Key Improvements**
58
+
59
+ ### 🔧 **ESLint 9.x Full Compatibility**
60
+ - **Fixed**: `context.getSource is not a function` error with React Hooks plugin
61
+ - **Enhanced**: Robust plugin compatibility detection and fallback mechanisms
62
+ - **Improved**: Legacy config to flat config conversion for ESLint 9.x projects
63
+ - **Added**: Graceful degradation when plugins fail to load
64
+
65
+ ### 🛡️ **Enhanced Error Handling**
66
+ - **Smart**: Plugin version detection with upgrade guidance
67
+ - **Robust**: Fallback to minimal ESLint configuration when plugins fail
68
+ - **Clear**: Detailed error messages for troubleshooting plugin issues
69
+ - **Stable**: Continue analysis even with incompatible plugins
70
+
71
+ ### ✅ **Real-World Validation**
72
+ - **Tested**: Successfully validated on 3 production projects (NestJS, Next.js)
73
+ - **Verified**: 820+ files analyzed without crashes
74
+ - **Proven**: Handles ESLint 8.x, 9.x, and mixed configurations
75
+
76
+ ### 🎯 **Plugin Compatibility**
77
+ - **React Hooks**: Fixed compatibility issues with outdated versions
78
+ - **TypeScript ESLint**: Enhanced support for v5.x and v8.x
79
+ - **Security Plugins**: Graceful handling of missing security rules
80
+ - **Custom Plugins**: Better error recovery for third-party plugins
81
+
82
+ ---
83
+
1
84
  # 🎉 SunLint v1.1.7 Release Notes
2
85
 
3
86
  **Release Date**: July 24, 2025
package/README.md CHANGED
@@ -7,15 +7,42 @@
7
7
  Sun Lint is a universal coding standards checker providing comprehensive code quality and security analysis. Built by Sun* Engineering Team with integrated security rules from OWASP and industry best practices.
8
8
 
9
9
  ### **✨ Key Features**
10
- - ✅ **97+ Coding Rules**: Quality (30), Security (47), TypeScript-specific
10
+ - ✅ **256+ Coding Rules**: Quality (161), Security (70), Performance (25)
11
+ - ✅ **Unified Architecture**: Same adapter pattern for CLI and VSCode extension
12
+ - ✅ **Multi-Engine Support**: Heuristic (244 rules) + ESLint (17 rules) + AI (256 rules)
11
13
  - ✅ **Built-in AST Analysis**: JavaScript/TypeScript parsing out of the box
12
- - ✅ **Multi-Engine Architecture**: Heuristic + ESLint + OpenAI integration
13
14
  - ✅ **Git Integration**: `--changed-files`, `--staged-files`, `--pr-mode`
14
15
  - ✅ **TypeScript Support**: Native TypeScript 5.8+ analysis
15
16
  - ✅ **Zero Config**: Works immediately after `npm install`
16
17
  - ✅ **CI/CD Ready**: Baseline comparison, fail-on-new-violations
17
18
  - ✅ **Advanced File Targeting**: Include/exclude patterns, language filtering
18
19
 
20
+ ### **🏗️ Architecture**
21
+
22
+ SunLint uses a unified adapter pattern ensuring consistency between CLI and VSCode extension:
23
+
24
+ ```
25
+ ┌─────────────────┬─────────────────┐
26
+ │ CLI Tools │ VSCode Extension│
27
+ ├─────────────────┼─────────────────┤
28
+ │ SunlintRule │ RuleReader │
29
+ │ Adapter │ Service │
30
+ ├─────────────────┴─────────────────┤
31
+ │ Rule Sources & Engines │
32
+ │ • Registry (auto-generated) │
33
+ │ • Origin Rules (markdown) │
34
+ │ • Heuristic Engine (244 rules) │
35
+ │ • ESLint Engine (17 rules) │
36
+ │ • AI Engine (256 rules) │
37
+ └───────────────────────────────────┘
38
+ ```
39
+
40
+ **Benefits:**
41
+ - **No Rule Model Duplication**: Single source of truth
42
+ - **Extensible**: Easy to add new engines or rule sources
43
+ - **Performance**: 0.07ms average per rule query
44
+ - **AI Integration**: Consistent OpenAI context from origin-rules
45
+
19
46
  ### **🚀 Quick Start**
20
47
  ```bash
21
48
  # Install
@@ -113,8 +140,27 @@ npm install --save-dev @sun-asterisk/sunlint eslint @typescript-eslint/parser @t
113
140
  }
114
141
  ```
115
142
 
116
- ## 🔗 **ESLint Integration**
143
+ ## 🔗 **Multi-Engine Architecture**
144
+
145
+ SunLint automatically selects the best engine for each rule, providing comprehensive coverage:
146
+
147
+ ### **Engine Coverage & Performance**
148
+ ```bash
149
+ # Show engine compatibility for specific rules
150
+ sunlint --show-engines --rules=C010,R001,S005
117
151
 
152
+ # Use specific engine
153
+ sunlint --engine=heuristic --rules=C010,C020 --input=src
154
+ sunlint --engine=eslint --rules=R001,R006 --input=src
155
+ sunlint --engine=ai --rules=C010,S001 --input=src
156
+ ```
157
+
158
+ **Engine Stats:**
159
+ - **Heuristic Engine**: 244/256 rules (95.3%) - Fast, universal
160
+ - **ESLint Engine**: 17/256 rules (6.6%) - JavaScript/TypeScript focused
161
+ - **AI Engine**: 256/256 rules (100%) - Context-aware analysis
162
+
163
+ ### **ESLint Integration**
118
164
  Seamlessly integrate with existing ESLint configurations:
119
165
 
120
166
  ```bash
@@ -129,7 +175,7 @@ sunlint --rules=C010,C006 --eslint-integration --input=src
129
175
  - ✅ **Multi-engine orchestration**: Rules automatically routed to optimal engine
130
176
  - ✅ **ESLint v8/v9 compatibility**: Production-ready with both major versions
131
177
  - ✅ **TypeScript support**: Full TS/TSX parsing with custom rule implementation
132
- - ✅ **Custom rule integration**: 27+ SunLint custom rules via ESLint engine
178
+ - ✅ **Custom rule integration**: 17+ SunLint custom rules via ESLint engine
133
179
  - ✅ **Smart fallback**: Automatic engine fallback for maximum rule coverage
134
180
  - ✅ **Production tested**: Successfully processes real projects with mixed violations
135
181
 
@@ -137,6 +183,7 @@ sunlint --rules=C010,C006 --eslint-integration --input=src
137
183
  - ✅ **No workflow disruption**: Existing ESLint continues working
138
184
  - ✅ **Engine flexibility**: Automatic best-engine selection per rule
139
185
  - ✅ **Combined reporting**: Unified violation tracking from multiple engines
186
+ - ✅ **Adapter Pattern**: Same rule access layer as VSCode extension
140
187
 
141
188
  ## 🔀 **Git Integration**
142
189
 
@@ -298,6 +345,21 @@ sunlint --all --changed-files --fail-on-new-violations
298
345
  sunlint --all --staged-files --format=summary
299
346
  ```
300
347
 
348
+ ### **Testing & Debugging**
349
+ ```bash
350
+ # Test adapter performance and coverage
351
+ sunlint --test-adapter
352
+
353
+ # Show detailed engine information
354
+ sunlint --show-engines --verbose
355
+
356
+ # Debug rule selection process
357
+ sunlint --rules=C010,R001 --verbose --debug
358
+
359
+ # Validate configuration
360
+ sunlint --validate-config .sunlint.json
361
+ ```
362
+
301
363
  ## 📚 **Documentation**
302
364
 
303
365
  - **[Configuration Guide](./docs/CONFIGURATION.md)** - Complete config options with examples
@@ -0,0 +1,125 @@
1
+ {
2
+ "name": "@sun/sunlint/all",
3
+ "description": "Comprehensive configuration with all available activated rules (v1.0+)",
4
+ "rules": {
5
+ "C003": "warn",
6
+ "C006": "warn",
7
+ "C013": "warn",
8
+ "C014": "warn",
9
+ "C017": "warn",
10
+ "C018": "warn",
11
+ "C019": "warn",
12
+ "C023": "warn",
13
+ "C024": "warn",
14
+ "C029": "warn",
15
+ "C030": "warn",
16
+ "C031": "warn",
17
+ "C033": "warn",
18
+ "C035": "warn",
19
+ "C040": "warn",
20
+ "C041": "warn",
21
+ "C042": "warn",
22
+ "C043": "warn",
23
+ "C047": "warn",
24
+ "C048": "warn",
25
+ "C052": "warn",
26
+ "C056": "warn",
27
+ "C060": "warn",
28
+ "C061": "warn",
29
+ "C065": "warn",
30
+ "C067": "warn",
31
+ "C070": "warn",
32
+ "C072": "warn",
33
+ "C073": "warn",
34
+ "C075": "warn",
35
+ "C076": "warn",
36
+ "S001": "error",
37
+ "S002": "error",
38
+ "S003": "warn",
39
+ "S004": "warn",
40
+ "S005": "warn",
41
+ "S006": "warn",
42
+ "S007": "warn",
43
+ "S008": "warn",
44
+ "S009": "warn",
45
+ "S010": "error",
46
+ "S011": "error",
47
+ "S012": "warn",
48
+ "S013": "error",
49
+ "S014": "warn",
50
+ "S015": "warn",
51
+ "S016": "error",
52
+ "S017": "error",
53
+ "S018": "error",
54
+ "S019": "error",
55
+ "S020": "error",
56
+ "S021": "error",
57
+ "S022": "error",
58
+ "S023": "error",
59
+ "S024": "error",
60
+ "S025": "error",
61
+ "S026": "warn",
62
+ "S027": "error",
63
+ "S028": "error",
64
+ "S029": "error",
65
+ "S030": "error",
66
+ "S031": "error",
67
+ "S032": "error",
68
+ "S033": "error",
69
+ "S034": "error",
70
+ "S035": "error",
71
+ "S036": "error",
72
+ "S037": "error",
73
+ "S038": "error",
74
+ "S039": "error",
75
+ "S040": "error",
76
+ "S041": "error",
77
+ "S042": "error",
78
+ "S043": "error",
79
+ "S044": "warn",
80
+ "S045": "error",
81
+ "S046": "error",
82
+ "S047": "error",
83
+ "S048": "error",
84
+ "S049": "error",
85
+ "S050": "error",
86
+ "S051": "error",
87
+ "S052": "error",
88
+ "S053": "error",
89
+ "S054": "error",
90
+ "S055": "error",
91
+ "S056": "error",
92
+ "S057": "error",
93
+ "S058": "error",
94
+ "S059": "error"
95
+ },
96
+ "categories": {
97
+ "quality": "warn",
98
+ "security": "error",
99
+ "performance": "warn",
100
+ "maintainability": "warn",
101
+ "testability": "warn",
102
+ "documentation": "warn"
103
+ },
104
+ "languages": [
105
+ "typescript",
106
+ "javascript",
107
+ "dart",
108
+ "java",
109
+ "kotlin",
110
+ "swift"
111
+ ],
112
+ "exclude": [
113
+ "**/node_modules/**",
114
+ "**/build/**",
115
+ "**/dist/**",
116
+ "**/*.generated.*",
117
+ "**/*.min.*"
118
+ ],
119
+ "metadata": {
120
+ "totalRules": 90,
121
+ "removedRules": 0,
122
+ "lastUpdated": "2025-07-30T08:59:10.118Z",
123
+ "source": "origin-rules"
124
+ }
125
+ }
@@ -2,18 +2,20 @@
2
2
  "name": "@sun/sunlint/beginner",
3
3
  "description": "Beginner-friendly configuration with warnings only",
4
4
  "rules": {
5
- "C019": "warning",
6
- "C029": "warning",
5
+ "C019": "warn",
6
+ "C029": "warn",
7
7
  "C006": "info"
8
8
  },
9
9
  "categories": {
10
- "quality": "warning",
11
- "security": "warning",
12
- "logging": "warning",
10
+ "quality": "warn",
11
+ "security": "warn",
12
+ "logging": "warn",
13
13
  "naming": "info",
14
- "validation": "warning"
14
+ "validation": "warn"
15
15
  },
16
- "languages": ["typescript"],
16
+ "languages": [
17
+ "typescript"
18
+ ],
17
19
  "exclude": [
18
20
  "**/node_modules/**",
19
21
  "**/build/**",
@@ -32,5 +34,11 @@
32
34
  "showProgress": true,
33
35
  "includeContext": true,
34
36
  "showFixSuggestions": true
37
+ },
38
+ "metadata": {
39
+ "totalRules": 3,
40
+ "removedRules": 0,
41
+ "lastUpdated": "2025-07-30T08:59:10.119Z",
42
+ "source": "origin-rules"
35
43
  }
36
- }
44
+ }
@@ -8,13 +8,15 @@
8
8
  },
9
9
  "categories": {
10
10
  "quality": "error",
11
- "security": "error",
11
+ "security": "error",
12
12
  "logging": "error",
13
13
  "naming": "off",
14
14
  "validation": "error"
15
15
  },
16
- },
17
- "languages": ["typescript", "dart"],
16
+ "languages": [
17
+ "typescript",
18
+ "dart"
19
+ ],
18
20
  "exclude": [
19
21
  "**/node_modules/**",
20
22
  "**/build/**",
@@ -43,5 +45,11 @@
43
45
  "showProgress": false,
44
46
  "includeContext": false,
45
47
  "showFixSuggestions": false
48
+ },
49
+ "metadata": {
50
+ "totalRules": 3,
51
+ "removedRules": 0,
52
+ "lastUpdated": "2025-07-30T08:59:10.120Z",
53
+ "source": "origin-rules"
46
54
  }
47
- }
55
+ }
@@ -0,0 +1,38 @@
1
+ {
2
+ "name": "@sun/sunlint/maintainability",
3
+ "description": "Maintainability and clean code focused configuration",
4
+ "rules": {
5
+ "C024": "warn",
6
+ "C031": "warn",
7
+ "C048": "warn",
8
+ "C052": "warn",
9
+ "C061": "warn",
10
+ "C067": "warn",
11
+ "C076": "warn",
12
+ "S008": "warn"
13
+ },
14
+ "categories": {
15
+ "maintainability": "warn"
16
+ },
17
+ "languages": [
18
+ "typescript",
19
+ "javascript",
20
+ "dart",
21
+ "java",
22
+ "kotlin",
23
+ "swift"
24
+ ],
25
+ "exclude": [
26
+ "**/node_modules/**",
27
+ "**/build/**",
28
+ "**/dist/**",
29
+ "**/*.generated.*",
30
+ "**/*.min.*"
31
+ ],
32
+ "metadata": {
33
+ "totalRules": 8,
34
+ "removedRules": 0,
35
+ "lastUpdated": "2025-07-30T08:59:10.120Z",
36
+ "source": "origin-rules"
37
+ }
38
+ }
@@ -0,0 +1,32 @@
1
+ {
2
+ "name": "@sun/sunlint/performance",
3
+ "description": "Performance-focused configuration for optimization",
4
+ "rules": {
5
+ "C043": "warn",
6
+ "C056": "warn"
7
+ },
8
+ "categories": {
9
+ "performance": "warn"
10
+ },
11
+ "languages": [
12
+ "typescript",
13
+ "javascript",
14
+ "dart",
15
+ "java",
16
+ "kotlin",
17
+ "swift"
18
+ ],
19
+ "exclude": [
20
+ "**/node_modules/**",
21
+ "**/build/**",
22
+ "**/dist/**",
23
+ "**/*.generated.*",
24
+ "**/*.min.*"
25
+ ],
26
+ "metadata": {
27
+ "totalRules": 2,
28
+ "removedRules": 0,
29
+ "lastUpdated": "2025-07-30T08:59:10.120Z",
30
+ "source": "origin-rules"
31
+ }
32
+ }
@@ -0,0 +1,103 @@
1
+ {
2
+ "name": "@sun/sunlint/quality",
3
+ "description": "Code quality and best practices focused configuration",
4
+ "rules": {
5
+ "C003": "warn",
6
+ "C006": "warn",
7
+ "C013": "warn",
8
+ "C014": "warn",
9
+ "C017": "warn",
10
+ "C018": "warn",
11
+ "C019": "warn",
12
+ "C023": "warn",
13
+ "C024": "warn",
14
+ "C029": "warn",
15
+ "C030": "warn",
16
+ "C031": "warn",
17
+ "C033": "warn",
18
+ "C035": "warn",
19
+ "C040": "warn",
20
+ "C042": "warn",
21
+ "C043": "warn",
22
+ "C047": "warn",
23
+ "C052": "warn",
24
+ "C060": "warn",
25
+ "C061": "warn",
26
+ "C065": "warn",
27
+ "C067": "warn",
28
+ "C070": "warn",
29
+ "C072": "warn",
30
+ "C073": "warn",
31
+ "C075": "warn",
32
+ "C076": "warn",
33
+ "S001": "error",
34
+ "S002": "error",
35
+ "S004": "warn",
36
+ "S005": "warn",
37
+ "S006": "warn",
38
+ "S007": "warn",
39
+ "S008": "warn",
40
+ "S009": "warn",
41
+ "S010": "error",
42
+ "S011": "error",
43
+ "S013": "error",
44
+ "S014": "warn",
45
+ "S017": "error",
46
+ "S021": "warn",
47
+ "S022": "warn",
48
+ "S023": "error",
49
+ "S025": "warn",
50
+ "S026": "warn",
51
+ "S027": "warn",
52
+ "S028": "warn",
53
+ "S029": "error",
54
+ "S030": "warn",
55
+ "S033": "warn",
56
+ "S034": "warn",
57
+ "S035": "warn",
58
+ "S036": "error",
59
+ "S041": "warn",
60
+ "S042": "warn",
61
+ "S043": "warn",
62
+ "S044": "warn",
63
+ "S045": "warn",
64
+ "S046": "warn",
65
+ "S047": "error",
66
+ "S048": "warn",
67
+ "S049": "warn",
68
+ "S050": "warn",
69
+ "S051": "warn",
70
+ "S052": "warn",
71
+ "S053": "warn",
72
+ "S054": "error",
73
+ "S055": "warn",
74
+ "S057": "warn",
75
+ "S058": "warn",
76
+ "S059": "warn"
77
+ },
78
+ "categories": {
79
+ "quality": "warn",
80
+ "security": "error"
81
+ },
82
+ "languages": [
83
+ "typescript",
84
+ "javascript",
85
+ "dart",
86
+ "java",
87
+ "kotlin",
88
+ "swift"
89
+ ],
90
+ "exclude": [
91
+ "**/node_modules/**",
92
+ "**/build/**",
93
+ "**/dist/**",
94
+ "**/*.generated.*",
95
+ "**/*.min.*"
96
+ ],
97
+ "metadata": {
98
+ "totalRules": 72,
99
+ "removedRules": 0,
100
+ "lastUpdated": "2025-07-30T08:59:10.121Z",
101
+ "source": "origin-rules"
102
+ }
103
+ }
@@ -1,24 +1,48 @@
1
1
  {
2
2
  "name": "@sun/sunlint/recommended",
3
- "description": "Sun* Engineering recommended configuration",
3
+ "description": "Sun* Engineering recommended configuration - essential rules from core files (common-en.md + security-en.md)",
4
4
  "rules": {
5
- "C019": "warning",
6
- "C029": "error",
7
- "C006": "off"
5
+ "C003": "warn",
6
+ "C006": "warn",
7
+ "C010": "warn",
8
+ "C019": "warn",
9
+ "C029": "warn",
10
+ "C031": "warn",
11
+ "C032": "warn",
12
+ "C041": "error",
13
+ "S001": "error",
14
+ "S002": "error",
15
+ "S003": "warn",
16
+ "S005": "error",
17
+ "S007": "error",
18
+ "S012": "error",
19
+ "S013": "error"
8
20
  },
9
21
  "categories": {
10
- "quality": "warning",
11
- "security": "error",
12
- "logging": "warning",
13
- "naming": "off",
14
- "validation": "error"
22
+ "quality": "warn",
23
+ "security": "error"
15
24
  },
16
- "languages": ["typescript", "dart"],
25
+ "languages": [
26
+ "typescript",
27
+ "javascript",
28
+ "dart",
29
+ "java",
30
+ "kotlin",
31
+ "swift"
32
+ ],
17
33
  "exclude": [
18
34
  "**/node_modules/**",
19
35
  "**/build/**",
20
36
  "**/dist/**",
21
37
  "**/*.generated.*",
22
38
  "**/*.min.*"
23
- ]
24
- }
39
+ ],
40
+ "metadata": {
41
+ "totalRules": 15,
42
+ "coreRules": 15,
43
+ "approach": "core-files-only",
44
+ "source": "common-en.md + security-en.md",
45
+ "lastUpdated": "2025-07-30T09:30:00.000Z",
46
+ "version": "2.0.0"
47
+ }
48
+ }