mirror of
https://github.com/catlog22/Claude-Code-Workflow.git
synced 2026-02-11 02:33:51 +08:00
- Introduced architecture rules to detect circular dependencies, god classes, layer violations, and mixed concerns. - Added correctness rules focusing on null checks, empty catch blocks, unreachable code, and type coercion. - Implemented performance rules addressing nested loops, synchronous I/O, memory leaks, and unnecessary re-renders in React. - Created readability rules to improve function length, variable naming, deep nesting, magic numbers, and commented code. - Established security rules to identify XSS risks, hardcoded secrets, SQL injection vulnerabilities, and insecure random generation. - Developed testing rules to enhance test quality, coverage, and maintainability, including missing assertions and error path testing. - Documented the structure and schema for rule files in the index.md for better understanding and usage.
61 lines
3.6 KiB
JSON
61 lines
3.6 KiB
JSON
{
|
|
"dimension": "readability",
|
|
"prefix": "READ",
|
|
"description": "Rules for detecting code readability issues including naming, complexity, and documentation",
|
|
"rules": [
|
|
{
|
|
"id": "long-function",
|
|
"category": "function-length",
|
|
"severity": "medium",
|
|
"pattern": "function\\s+\\w+\\s*\\([^)]*\\)\\s*\\{|=>\\s*\\{",
|
|
"patternType": "regex",
|
|
"lineThreshold": 50,
|
|
"description": "Functions longer than 50 lines are difficult to understand and maintain",
|
|
"recommendation": "Break down into smaller, focused functions. Each function should do one thing well",
|
|
"fixExample": "// Before - 100 line function\nfunction processData(data) {\n // validation\n // transformation\n // calculation\n // formatting\n // output\n}\n\n// After - composed functions\nfunction processData(data) {\n const validated = validateData(data);\n const transformed = transformData(validated);\n return formatOutput(calculateResults(transformed));\n}"
|
|
},
|
|
{
|
|
"id": "single-letter-variable",
|
|
"category": "naming",
|
|
"severity": "low",
|
|
"pattern": "(?:const|let|var)\\s+[a-z]\\s*=",
|
|
"patternType": "regex",
|
|
"negativePatterns": ["for\\s*\\(", "\\[\\w,\\s*\\w\\]", "catch\\s*\\(e\\)"],
|
|
"description": "Single letter variable names reduce code readability except in specific contexts (loop counters, catch)",
|
|
"recommendation": "Use descriptive names that convey the variable's purpose",
|
|
"fixExample": "// Before\nconst d = getData();\nconst r = d.map(x => x.value);\n\n// After\nconst userData = getData();\nconst userValues = userData.map(user => user.value);"
|
|
},
|
|
{
|
|
"id": "deep-nesting",
|
|
"category": "complexity",
|
|
"severity": "high",
|
|
"pattern": "\\{[^}]*\\{[^}]*\\{[^}]*\\{",
|
|
"patternType": "regex",
|
|
"description": "Deeply nested code (4+ levels) is hard to follow and maintain",
|
|
"recommendation": "Use early returns, extract functions, or flatten conditionals",
|
|
"fixExample": "// Before\nif (user) {\n if (user.permissions) {\n if (user.permissions.canEdit) {\n if (document.isEditable) {\n // do work\n }\n }\n }\n}\n\n// After\nif (!user?.permissions?.canEdit) return;\nif (!document.isEditable) return;\n// do work"
|
|
},
|
|
{
|
|
"id": "magic-number",
|
|
"category": "magic-value",
|
|
"severity": "low",
|
|
"pattern": "[^\\d]\\d{2,}[^\\d]|setTimeout\\s*\\([^,]+,\\s*\\d{4,}\\)",
|
|
"patternType": "regex",
|
|
"negativePatterns": ["const", "let", "enum", "0x", "100", "1000"],
|
|
"description": "Magic numbers without explanation make code hard to understand",
|
|
"recommendation": "Extract magic numbers into named constants with descriptive names",
|
|
"fixExample": "// Before\nif (status === 403) { ... }\nsetTimeout(callback, 86400000);\n\n// After\nconst HTTP_FORBIDDEN = 403;\nconst ONE_DAY_MS = 24 * 60 * 60 * 1000;\nif (status === HTTP_FORBIDDEN) { ... }\nsetTimeout(callback, ONE_DAY_MS);"
|
|
},
|
|
{
|
|
"id": "commented-code",
|
|
"category": "dead-code",
|
|
"severity": "low",
|
|
"pattern": "//\\s*(const|let|var|function|if|for|while|return)\\s+",
|
|
"patternType": "regex",
|
|
"description": "Commented-out code adds noise and should be removed. Use version control for history",
|
|
"recommendation": "Remove commented code. If needed for reference, add a comment explaining why with a link to relevant commit/issue",
|
|
"fixExample": "// Before\n// function oldImplementation() { ... }\n// const legacyConfig = {...};\n\n// After\n// See PR #123 for previous implementation\n// removed 2024-01-01"
|
|
}
|
|
]
|
|
}
|