Lines 98-138javascript
99 category: 'type_safety',
100 message: ': any 타입 사용 — 타입 안전성 부재',
101 pattern: /:\s*any\b(?!\[)/,
102 languages: ['typescript'],
103 excludeIf: (line, fp) => isTestPath(fp) || /eslint-disable/.test(line) || /\/\//.test(line.split(':')[0] ?? '') ||
104 /function\s+normalize|parsed:\s*any|JSON\.parse|response\.\w+\.map/.test(line), // JSON 파싱 결과 접근 패턴
106 // non-null assertion
109 category: 'type_safety',
110 message: 'non-null assertion (!) — null 체크 없이 단언',
112 languages: ['typescript'],
113 excludeIf: (_line, fp) => isTestPath(fp),
118 category: 'security',
119 message: 'eval() 사용 — 코드 인젝션 위험',
120 pattern: /\beval\s*\(/,
LowEval
Package source references a known benign dynamic code generation pattern.
dist/registry/bsDetector.jsView on unpkg · L118 121 excludeIf: (_line, fp) => isTestPath(fp),
123 // fake API / example.com
126 category: 'fake_data',
127 message: 'example.com 등 가짜 URL — 실 운영 불가',
128 pattern: /(?:example\.com|localhost:\d{4}|127\.0\.0\.1:\d{4})/,
129 excludeIf: (line, fp) => isTestPath(fp) || /\/\//.test(line.split('http')[0] ?? '') || /config|env|default|Html\.ts|linear|github/i.test(fp) || /config|env
131 // ============ MINOR ============
135 category: 'magic_number',
136 message: '매직 넘버 — 의미 불명확한 하드코딩 숫자',
137 pattern: /(?:=|return|>|<|===|!==)\s*(?:(?!0\b|1\b|2\b|-1\b|100\b|1000\b|60\b|24\b|365\b)\d{3,})\b/,
138 excludeIf: (line, fp) => isTestPath(fp) || /const|timeout|limit|max|min|port|size|width|height|delay|interval|ms|sec/i.test(line),