# 린터 패턴 주기적 유지보수 프로세스

> 작성일: 2026-04-04 | 버전: 1.0

## 목적

모듈화 린터(`modularity-lint.sh`)가 감지하는 하드코딩 패턴을 주기적으로 업데이트하여, 새로운 종류의 하드코딩이 코드베이스에 유입되는 것을 방지한다.

## 프로세스

### 1. 월간 패턴 발견 스캔 (매월 1일)

```bash
python3 tools/modularity-check.py discover --min-occurrences 3 --json > /tmp/discover-result.json
```

- `discover` 커맨드는 기존 등록된 패턴 외에, 3곳 이상 반복 등장하는 값을 자동 식별
- 발견 카테고리: API URL, 포트번호, 매직넘버, 색상코드, 이메일/도메인

### 2. 결과 검토 및 패턴 추가

1. `discover` 결과에서 실제 하드코딩으로 판단되는 후보를 선별
2. `config/lint-patterns.json`에 새 패턴 추가:

```json
{
  "name": "new_pattern_name",
  "regex": "감지할 정규식",
  "severity": "FAIL 또는 WARN",
  "message": "권장 수정 방법",
  "file_types": ["all"] 또는 ["py", "sh"] 등
}
```

3. 선택적 필드:
   - `skip_if_import`: 특정 모듈 import가 있으면 해당 파일에서 패턴 스킵

### 3. 검증

```bash
# lint.sh가 새 패턴을 정상 로딩하는지 확인
bash hooks/modularity-lint.sh

# 기존 scan이 여전히 정상 동작하는지 확인
python3 tools/modularity-check.py scan
```

### 4. 커밋 및 배포

- `lint-patterns.json` 변경만으로 lint 동작이 자동 반영됨
- `modularity-lint.sh` 수정 불필요

## 파일 구조

- `config/lint-patterns.json` - 패턴 정의 (단일 소스)
- `hooks/modularity-lint.sh` - Pre-commit hook (JSON 로딩)
- `tools/modularity-check.py` - scan/verify/discover 도구

## 패턴 추가 기준

- 동일 값이 3곳 이상에서 하드코딩된 경우
- 설정/상수로 분리하여 중앙 관리할 수 있는 값
- 변경 시 여러 파일을 동시 수정해야 하는 값

## 패턴 제외 기준 (오탐 방지)

- `config/`, `hooks/`, `memory/` 하위 파일
- `.md`, `.json`, `.yaml` 등 설정/문서 파일
- `# noqa: modularity` 주석이 있는 라인
- docstring, 주석 내부의 값
- `os.environ.get()` fallback 패턴
