UNPKG

@sun-asterisk/sunlint

Version:

☀️ SunLint - Multi-language static analysis tool for code quality and security | Sun* Engineering Standards

97 lines 3.1 kB
{ "ruleId": "C021", "name": "Import Organization", "description": "T\u1ed5 ch\u1ee9c v\u00e0 s\u1eafp x\u1ebfp imports theo nh\u00f3m v\u00e0 th\u1ee9 t\u1ef1 alphabet", "category": "code-quality", "severity": "info", "languages": [ "typescript", "javascript", "dart" ], "version": "1.0.0", "status": "stable", "tags": [ "imports", "organization", "readability" ], "config": { "groups": [ { "name": "builtin", "description": "Built-in Node.js modules", "patterns": [ "^(assert|buffer|child_process|cluster|crypto|dgram|dns|domain|events|fs|http|https|net|os|path|punycode|querystring|readline|repl|stream|string_decoder|tls|tty|url|util|v8|vm|zlib)$" ] }, { "name": "internal", "description": "Internal project modules", "patterns": [ "^\\.", "^@/", "^~/" ] }, { "name": "external", "description": "External dependencies from node_modules", "patterns": [ "^[^.~@]" ] } ], "sortOrder": { "groupOrder": [ "builtin", "external", "internal" ], "withinGroup": "alphabetical" }, "spacing": { "requireBlankLineBetweenGroups": true, "maxBlankLinesBetweenGroups": 1 }, "typeImports": { "separateTypeImports": false, "typeImportPosition": "together" } }, "examples": { "violations": [ { "language": "typescript", "code": "import { User } from './models/User';\nimport express from 'express';\nimport fs from 'fs';\n\n// Wrong order: internal, external, builtin", "reason": "Imports are not in correct group order" }, { "language": "typescript", "code": "import express from 'express';\nimport axios from 'axios';\nimport { User } from './models/User';\nimport { Order } from './models/Order';\n\n// No blank line between groups", "reason": "Missing blank line between external and internal groups" }, { "language": "typescript", "code": "import { Order } from './models/Order';\nimport { User } from './models/User';\nimport { Customer } from './models/Customer';\n\n// Not sorted alphabetically: Order, User, Customer", "reason": "Internal imports not sorted alphabetically" } ], "valid": [ { "language": "typescript", "code": "import fs from 'fs';\nimport path from 'path';\n\nimport axios from 'axios';\nimport express from 'express';\n\nimport { Customer } from './models/Customer';\nimport { Order } from './models/Order';\nimport { User } from './models/User';", "reason": "Correct grouping, sorting, and spacing" } ] }, "fixes": { "autoFixable": true, "suggestions": [ "Group imports: builtin \u2192 external \u2192 internal", "Sort imports alphabetically within each group", "Add blank lines between groups", "Use consistent import style (named vs default)" ] } }