UNPKG

@sun-asterisk/sunlint

Version:

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

122 lines (121 loc) 3.09 kB
{ "ruleId": "C019", "name": "Log Level Usage", "description": "Không sử dụng log mức error cho lỗi không nghiêm trọng", "category": "logging", "severity": "warning", "languages": ["typescript", "dart", "kotlin"], "version": "1.0.0", "status": "stable", "tags": ["logging", "error-handling", "severity"], "config": { "errorKeywords": [ "not found", "invalid", "unauthorized", "forbidden", "validation failed", "bad request", "cache miss", "retry", "fallback", "user error", "input error", "validation", "invalid input", "missing parameter" ], "legitimateErrorKeywords": [ "exception", "crash", "fatal", "critical", "emergency", "database", "connection", "timeout", "security breach", "system error", "memory", "disk space", "internal server error", "unhandled exception", "stack overflow" ], "languageSpecific": { "typescript": { "loggerPatterns": [ "console.error(", "logger.error(", "log.error(", ".error(", "Logger.error(", "winston.error(", "bunyan.error(" ] }, "dart": { "loggerPatterns": [ "log.error(", "logger.error(", "Logger.error(", "_logger.error(", "print(" ] }, "kotlin": { "loggerPatterns": [ "Log.e(", "logger.error(", "log.error(", "Timber.e(" ] } } }, "examples": { "violations": [ { "language": "typescript", "code": "logger.error('User not found');", "reason": "User not found is a business logic issue, not a system error" }, { "language": "typescript", "code": "console.error('Invalid input provided');", "reason": "Input validation should use warn level" }, { "language": "dart", "code": "logger.error('Validation failed for user input');", "reason": "Validation failures are expected business logic" } ], "valid": [ { "language": "typescript", "code": "logger.error('Database connection failed');", "reason": "Database issues are legitimate system errors" }, { "language": "typescript", "code": "logger.warn('User not found');", "reason": "Appropriate warning level for business logic" }, { "language": "dart", "code": "logger.error('Unhandled exception in payment processing');", "reason": "Unhandled exceptions are legitimate errors" } ] }, "fixes": { "autoFixable": false, "suggestions": [ "Use logger.warn() for business logic issues", "Use logger.info() for informational messages", "Reserve logger.error() for system-level problems", "Add specific error context to help determine appropriate level" ] } }