development

LLVM / Clang을 사용하여 특정 파일의 모든 경고 무시

big-blog 2020. 11. 6. 21:03
반응형

LLVM / Clang을 사용하여 특정 파일의 모든 경고 무시


내 iOS 프로젝트에 몇 가지 경고가있는 파일이 있으며 이러한 경고를 무시하고 싶습니다. 전체 프로젝트 (그 방법을 알고 있음)에서 경고를 비활성화하지 않고 특정 파일 만 비활성화하고 싶습니다. 그렇다면 특정 파일의 모든 경고를 완전히 무시하는 방법이 있습니까?

Xcode 4.2에서 LLVM 3.0과 Clang을 사용하고 있습니다.


clang 만 사용하는 경우 유지 관리하는 소스에 pragma 구문을 사용해야합니다 (프로그램을 적절하게 변경하여 경고를 제거 할 수 없다고 가정).

구문은 다음과 같습니다.

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wmultichar"

char b = 'df'; // no warning.

#pragma clang diagnostic pop

이러한 프로그램이 변경할 수없고 유지 관리 할 수없는 경우 전체가 아닌 파일에 대해 비활성화 할 경고를 지정해야합니다. 모두 비활성화하려면 파일 당 인수를 추가 할 수 있습니다 -w. 소스가 변경되고 일부 경고는 다른 빌드 설정에 적용되거나 적용되지 않습니다. clang의 메시지는 생성 된 경고와 동일한 플래그를 알려줄 수 있습니다.

Xcode를 사용하여 파일의 빌드 플래그를 변경하려면 :

  • 대상을 선택
  • 빌드 단계 선택
  • "소스 컴파일"단계에서 인수를 수정할 파일을 찾습니다.
  • 편집 할 "컴파일러 플래그"셀을 두 번 클릭합니다.

저는 320 개의 코드를 많이 포함하는 프로젝트를 물려 받았고, 그 코드베이스는 가까운 장래에 프로젝트에서 해당 코드를 제거 할 것이기 때문에 수정에 관심이 없다는 몇 가지 경고와 정적 분석기 오류를 저에게 던졌습니다.

다음 컴파일러 플래그를 포함하여 특정 파일에 대한 정적 분석기 경고를 비활성화 할 수 있습니다.

-Xanalyzer -analyzer-disable-all-checks

이 파일을 -w와 결합하여 해당 파일에 대한 경고도 비활성화 할 수 있습니다. 이를 통해 해당 코드 기반에서 생성 된 30 개 정도의 경고로 인해 괴롭힘을 당할 필요없이 새로운 개발을 진행할 수있었습니다.

위의 지침 사용 : Xcode를 사용하여 파일의 빌드 플래그를 변경하려면 :

  1. 대상을 선택
  2. 빌드 단계 선택
  3. "소스 컴파일"단계에서 인수를 수정할 파일을 찾습니다.
  4. 편집 할 "컴파일러 플래그"셀을 두 번 클릭합니다.
  5. 경고 및 clang 경고를 억제하려면 "-w -Xanalyzer -analyzer-disable-all-checks"를 추가하십시오.

저스틴의 대답의 도움으로 이것은 당신이하는 방법입니다

1. 경고 이름을 찾습니다.

제 경우에는 conversion

여기에 이미지 설명 입력

2. 파일 별 컴파일러 플래그 빌드 단계 추가

필터를 사용하여 컴파일 소스에서 파일 이름을 찾으십시오. -Wno-[error name]예를 들면 다음과 같습니다.-Wno-conversion

여기에 이미지 설명 입력


특정 대상-> 빌드 설정을 선택하고 모든 경고 금지를 검색하고 YES로 설정할 수 있습니다. 이 대상에 대한 경고를 비활성화합니다. cocoapods와 함께 JSONKit과 같은 일부 코드를 사용하고 컴파일러가 경고에 대해 어떻게 울고 있는지보고 싶지 않은 경우 유용 할 수 있습니다. :)

참고 URL : https://stackoverflow.com/questions/7897429/ignore-all-warnings-in-a-specific-file-using-llvm-clang

반응형