문제
모든 프로젝트에는 무엇이 잘못됐는지 알려 주는 도구가 이미 들어 있습니다 —
tsc, dart analyze, ESLint, Clippy, go vet, Ruff. 하지만 방금 찍힌 마흔 개의
경고를 내 diff가 만들었는지는 어느 도구도 알려 주지 않습니다. Gitcito는 어떤
파일이 더러운지 알고 있으므로, 같은 목록이 그 질문에 토글 하나로 답합니다.

상태 표시줄이 개수를 답니다 — 오류, 경고, 정보. VS Code가 모두에게 읽는 법을 가르친 세 숫자입니다. 클릭하면(또는 명령 팔레트의 문제) 아래쪽에 독이 열리고, 파일별로 묶여 나옵니다. 한 줄을 클릭하면 그 위치에서 파일이 열립니다. 첫 훑기 전에는 0이 아니라 대시를 보여 줍니다. 아직 아무도 보지 않았을 뿐인데, 0 세 개는 그와 다른 주장을 하니까요.
무엇을 실행하는가
| 저장소에 있는 것 | Gitcito가 실행하는 것 |
|---|---|
pubspec.yaml |
dart analyze --format=machine |
tsconfig.json |
tsc --noEmit |
| ESLint 설정 | eslint -f json |
Cargo.toml |
cargo clippy --message-format=short |
go.mod |
go vet ./... |
pyproject.toml 또는 ruff.toml |
ruff check --output-format=json |
Flutter는 Dart 행에 포함됩니다. Flutter 앱은 Dart 프로젝트이고,
flutter analyze가 부르는 것도 dart analyze와 같은 분석기입니다.
프로젝트가 루트에 있을 필요는 없습니다. 이 표시 파일들은 몇 단계 아래까지도
찾으므로 mobile/ 아래의 Flutter 앱이나 apps/web 아래의 패키지도 발견되고, 각
분석기는 자기 프로젝트 디렉터리에서 실행됩니다. 같은 종류의 중첩 프로젝트는 조상이
이미 덮고 있으면 건너뜁니다 — 루트의 tsconfig.json이 말하는 바가 정확히 그것입니다
— 그리고 한 번의 훑기는 열두 프로젝트에서 멈춥니다. 모노레포가 컴파일러 쉰 개를
띄울 일은 아니니까요.
node_modules/.bin의 실행 파일이 PATH의 것을 이깁니다 — 프로젝트 자체 스크립트가
푸는 방식 그대로입니다. 모두 병렬로 돌고, 각 도구의 출력은 하나의 형태로 정리되어
중복이 제거되고 정렬됩니다. 두 분석기가 같은 줄을 보고해도 한 줄입니다.
스스로 돌지 않습니다. 큰 저장소에서 tsc --noEmit은 수십 초이고, 이 명령들은
Gitcito가 아니라 저장소의 툴체인입니다. 독을 열거나 새로 고침을 누를 때 시작하며,
결코 알아서 돌지 않습니다. 목록이 스냅숏인 이유도 그것입니다. 파일을 고치면 다시
실행하기 전까지는 낡은 목록입니다.
설정 → 일반 → 코드 분석기가 얼마나 적극적일지 정합니다. 독을 열 때 훑기(기본), 새로 고침을 누를 때만, 또는 끔 — 끄면 독의 분석기 절반과 상태 표시줄 카운터, 명령이 모두 사라집니다.
생성된 산출물은 버립니다. 프로젝트 루트를 향한 도구는 찾은 것을 모두 검사하고,
거기에는 .next/build/chunks, 번들된 dist, 벤더링된 사본도 들어갑니다 — 기계가 쓴
코드에 대한 수백 건의 불평이 당신 코드에 대한 몇 건을 묻어 버립니다. Gitcito는 git에
어떤 파일이 무시되는지 물어 그것들을 버리되, 추적 중인 파일은 절대 버리지 않습니다.
산출물을 커밋하는 것은 선택이고 git check-ignore는 그 선택을 존중합니다.
node_modules는 어차피 빠집니다.
내가 바꾼 것만
머리글의 토글은 손대지 않은 파일의 문제를 모두 걷어냅니다. 열어 둘 가치가 있는 화면이 이것입니다. 코드베이스의 모든 경고를 평평하게 늘어놓은 목록은 일주일이면 벽지가 되지만, "이 diff가 더한 건가"는 커밋 전에 답할 가치가 있는 질문입니다.
심각도 칩도 걸러 냅니다. 꺼져 있으면 전부 표시, 하나를 켜면 그것만 남습니다.
한계
- 언어 서버가 없습니다. 이것은 한 번의 훑기이지 데몬이 아닙니다. 타이핑 중 물결선도 없고, 요청하기 전 결과도 없습니다.
- 설치되지 않은 도구는 감추지 않고 이름을 밝힙니다. 무엇을 실행하지 못했는지 바닥글이 말합니다. 설명 없는 빈 목록이 이유 있는 짧은 목록보다 나쁘니까요.
- 기계가 읽는 출력만 이해합니다. 각 분석기는 문서화된 기계 형식에서 읽습니다. 다른 것을 출력하도록 설정된 도구는 여기서 보이지 않습니다.
- 상한은 문제 5천 개입니다. 그 이상이면 독이 그렇게 말하고 멈춥니다 — 그 상태의 저장소에는 스크롤바보다 큰 문제가 있습니다.