컴파일러 경고 추적 도구

컴파일러 경고 추적 도구는 개발자가 기여한 코드로 인해 새로 발생한 컴파일러 경고를 개발자에게 알리기 위한 것입니다. 이 도구는 다음 GitHub 워크플로에서 실행되는 Python 스크립트로 구성됩니다:

Tools/build/check_warnings.py 도구의 문서는 다음을 실행하여 확인할 수 있습니다:

python Tools/build/check_warnings.py --help

컴파일러 출력 파일(출력이 저장된 파일)과 컴파일러 출력 유형(gcc 또는 clang)을 지정하여 스크립트를 로컬에서 실행하면 고유한 경고 목록을 볼 수 있습니다:

python Tools/build/check_warnings.py --compiler-output-file-path=compiler_output.txt --compiler-output-type=gcc

경고 검사가 GitHub CI에서 실패할 때 해야 할 일

컴파일러가 특정 소스 파일에 대해 플랫폼별 경고 무시 파일에 정의된 예상 개수보다 많거나 적은 경고를 생성하면 Tools/build/check_warnings.py 도구가 실패합니다. 경고 무시 파일은 플랫폼에 따라 Tools/build/.warningignore_ubuntu 또는 Tools/build/.warningignore_macos입니다.

경고 검사가 다음 사유로 실패한 경우:

  • 예상치 못한 경고

    • 경고가 발생하지 않도록 코드를 리팩터링해 보십시오.

    • 경고를 피할 수 없다면 해당 경고를 무시해도 되는 이유를 PR에 문서화하고, 그 경고를 플랫폼별 경고 무시 파일에 추가하십시오. 해당 파일이 경고 무시 파일에 이미 있다면 새로 발생한 경고 수만큼 개수를 늘리십시오.

  • 예상치 못한 개선(경고 감소)

    • 변경으로 컴파일러 경고 수가 줄었다는 사실을 PR에 문서화하십시오. 플랫폼별 경고 무시 파일에서 개수를 줄이거나, 개수가 0이 되었다면 해당 파일 항목을 제거하십시오.

경고 무시 파일 갱신하기

경고 무시 파일은 Tools/build/ 디렉터리에 있습니다. 무시 파일에는 파일과 디렉터리를 모두 추가할 수 있습니다. 파일에는 명시적인 경고 개수나 와일드카드 개수를 지정할 수 있습니다. 디렉터리 뒤에는 반드시 와일드카드 개수를 지정해야 합니다. 와일드카드는 0개 이상의 경고를 무시한다는 뜻입니다. 다음은 경고 무시 파일 형식의 예입니다:

Modules/_ctypes/_ctypes_test_generated.c.h *
Objects/longobject.c 46
Objects/methodobject.c 1
Objects/mimalloc/ *

와일드카드는 CPython이 유지 관리하지 않는 코드나 테스트용 코드에만 사용합니다. 경고 무시 파일의 줄은 사전순으로 정렬된 상태로 유지하십시오.