작업 공간 도구

코드의 TODO

TODO는 누군가 스스로에게 한 약속이고, 곧 잃어버린 약속입니다. 문제가 있는 자리에 적히는데, 그 자리는 아무도 다시 보지 않는 자리입니다. 정작 중요해질 무렵이면 그것을 쓴 사람은 이미 다른 팀에 있습니다. grep으로 찾을 수는 있지만, grep 출력이 천 줄이면 못 찾은 것과 같습니다.

분석 독의 TODO 탭은 그것들을 전부 읽고, grep이 못 하는 일을 합니다. 묶는 것이죠. 상태 표시줄이나 명령 팔레트(코드의 TODO)에서 독을 열고 두 번째 탭으로 옮기세요.

상태 표시줄은 분석기의 오류·경고 옆에 표시 개수를 셉니다. 그 계수기를 클릭하면 이 탭이 열립니다.

담당별로 묶은 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이 이미 알고 있으니 건너뜁니다.

GitHub에서 이 번역 개선하기