@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
JSON
{
"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"
]
}
}