코드의 TODO
TODO는 누군가 스스로에게 한 약속이고, 곧 잃어버린 약속입니다. 문제가 있는 자리에 적히는데, 그 자리는 아무도 다시 보지 않는 자리입니다. 정작 중요해질 무렵이면 그것을 쓴 사람은 이미 다른 팀에 있습니다. grep으로 찾을 수는 있지만, grep 출력이 천 줄이면 못 찾은 것과 같습니다.
분석 독의 TODO 탭은 그것들을 전부 읽고, grep이 못 하는 일을 합니다. 묶는 것이죠.
상태 표시줄이나 명령 팔레트(코드의 TODO)에서 독을 열고 두 번째 탭으로 옮기세요.
상태 표시줄은 분석기의 오류·경고 옆에 표시 개수를 셉니다. 그 계수기를 클릭하면 이 탭이 열립니다.

무엇이 표시로 인정되나
Git이 추적하거나 추적하게 될 파일의 주석 안에 있는 태그입니다.
| 이렇게 쓰면 | 이렇게 읽습니다 |
|---|---|
// TODO: 배포하기 |
태그 TODO, 담당 없음 |
//todo 배포하기 |
같습니다 — 콜론과 공백은 선택입니다 |
# todo 배포하기 |
같습니다 — 대소문자도 언어도 상관없습니다 |
/* TODO(cgm): 배포하기 */ |
태그 TODO, 담당 cgm |
-- TODO (CGM) 배포하기 |
같은 담당: cgm, (CGM), [cgm]은 한 사람입니다 |
<!-- TODO: @cgm 배포하기 --> |
역시 같습니다 |
태그는 TODO, FIXME, BUG, HACK, XXX, NOTE, OPTIMIZE, REVIEW,
REFACTOR, DEPRECATED, QUESTION, IDEA, WIP, TEMP입니다. 앞의 넷에 색이
붙는 이유는, "이건 고장났다"와 "이건 그냥 떠오른 생각"이 한 목록에서 똑같이 보이면
안 되기 때문입니다.
태그는 주석 시작 기호 — //, #, --, ;, %, /*, *, <!--, """ — 뒤에
와야 합니다. 그 밖의 것은 세지 않습니다. todo = [l for l in lines]는 코드이고, 변수
대입을 부채로 적어 두는 패널은 두 번 다시 신뢰받지 못합니다. 같은 규칙이
reviewNotes라는 이름의 함수도 목록에서 걸러 냅니다.
묶는 것이 곧 기능
축은 넷, 각각 한 번의 클릭입니다.
| 그룹 기준 | 답하는 질문 |
|---|---|
| 태그 | 이 저장소는 어떤 종류의 부채를 지고 있나? |
| 담당 | 각자 무엇을 남겼나 — 그리고 담당 없는 더미에는 무엇이 있나? |
| 폴더 | 트리의 어느 구석이 썩고 있나? |
| 파일 | 갈 곳을 이미 아는 경우의 평범한 목록. |
담당 없음은 찌꺼기가 아니라 진짜 그룹입니다. 아무도 이름을 적지 않은 표시가 곧 아무도 집어가지 않는 표시이고, 그것이 몇 개인지 보이는 것 자체가 요점입니다.
위쪽 태그 칩이 목록을 거릅니다. 행의 담당 배지를 눌러도 마찬가지이고, 검색 상자는
메시지·파일·태그·담당을 모두 훑습니다. 변경한 파일만은 편집했지만 아직 커밋하지
않은 파일로 좁힙니다 — 푸시 직전의 마지막 점검이며, 한 시간 전에 남긴 // FIXME가
영구히 굳기 직전입니다.
행을 클릭하면 해당 줄에서 파일이 열립니다.
하지 않는 일
- 읽기만 하고 절대 쓰지 않습니다. "완료 표시"는 없습니다. TODO를 닫는 방법은 그 줄을 지우고 커밋하는 것입니다. Gitcito가 대신 보관해 주는 체크리스트는 Todos이고, 완전히 다른 물건입니다 — 소스가 아니라 앱 안에 사는 개인 메모입니다.
- 무시된 파일은 건너뜁니다.
node_modules도 마찬가지이며, 그 안의 태그가 무엇이든 상관없습니다. 추적되지 않는 파일은 포함합니다. 5분 전에 쓴 표시가 가장 볼 값어치가 있으니까요. - 주석과 문자열을 구분하지 못합니다.
const banner = "// TODO"한 줄도 스캔에는 표시입니다. 마흔 개 언어의 파서는 없고, 있는 척도 하지 않습니다. - 스캔은 한 시점의 사진입니다. 파일을 고쳐도 다시 스캔하기 전까지 패널은 이전 숫자를 유지합니다. 새로 고침 버튼이 전부입니다.
- 5,000개에서 멈춥니다. 그 선을 넘은 저장소의 부채는 패널로 풀 문제가 아닙니다.
어디서 실행되나
작업 트리에 대한 git grep 한 번입니다. 문제 탭이 몇 초 걸리는 자리
에서 밀리초로 끝나는 이유가 그것입니다. 아무것도 컴파일하지 않고, 툴체인이 끼어들지
않으며, 이진 파일과 무시된 경로는 Git이 이미 알고 있으니 건너뜁니다.