1.clang diagnostic 的概念 clang diagnostic 是基于 LLVM 编译器框架的 Clang 工具,它可以接收编译器生成的警告和诊断信息,并将这些信息以更友好的方式呈现给开发者。通过使用 clang diagnostic,开发者可以更容易地识别和修复代码中的潜在问题。 2.clang diagnostic 的作用 clang diagnostic 可以帮助开发者处理编译器产...
如果只是想在某几行关闭某个警告的话,可以通过临时改变诊断编译标记来抑制指定类型的警告,具体如下: #pragmaclang diagnostic push#pragmaclang diagnostic ignored "-Wunused-variable"inta;#pragmaclang diagnostic pop 如果a之后没有被使用,也不会出现未使用变量的警告了。对于想要抑制的警告类型的标识名,可以在build...
1. 方法弃用告警 #pragmaclang diagnostic push#pragmaclang diagnostic ignored "-Wincompatible-pointer-types"//#pragmaclang diagnostic pop 2. 不兼容指针类型 #pragmaclang diagnostic push#pragmaclang diagnostic ignored "-Wincompatible-pointer-types"//#pragmaclang diagnostic pop 3. 循环引用 //completionBlock...
栗子1:忽略弃用的警告️ //方法弃用告警 #pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated-declarations" UIAlertView *alertViewTmp = [[UIAlertView alloc]initWithTitle:@"" message:@"" delegate:nil cancelButtonTitle:@"" otherButtonTitles:@"", nil]; [alertViewTmp show]...
下面的例子中将-Warc-performSelector-leaks 标记为错误,clang在编译时就会报错。clang会将push和pop范围内的-Warc-performSelector-leaks 都会标记为错误。设置忽略某种类型的警告,比如下面忽略-Warc-performSelector-leaks的警告:结合上面的 #pragma clang diagnostic进行使用 ...
Clang静态分析诊断的检查器名称以clang-diagnostic-开头。对应每一个告警选项的分析诊断,其名称格式为are named clang-diagnostic-<warning-option>。例如,被编译选项-Wliteral-conversion控制的Clang告警,会被名为clang-diagnostic-literal-conversion的检查器来分析并报告。
Clang中的诊断Diagnostic等级有六类,如下枚举: enumLevel { Ignored=DiagnosticIDs::Ignored, Note=DiagnosticIDs::Note, Remark=DiagnosticIDs::Remark, Warning=DiagnosticIDs::Warning, Error=DiagnosticIDs::Error, Fatal=DiagnosticIDs::Fatal }; (2-4)ShouldOwnClient ...
这些诊断信息的ID可以参考:clang/DiagnosticParseKinds.td at e72003e211c5541371e6ea378da8d8a4ef2a2e...
这些诊断信息的ID可以参考:clang/DiagnosticParseKinds.td at e72003e211c5541371e6ea378da8d8a4ef2a2e...
#pragma clang diagnostic push #pragma clang diagnostic ignored "-Wdeprecated-declarations" 1. 2. 3. 4. 这里写出现警告的代码 #pragma clang diagnostic pop 1. 这样就消除了方法弃用的警告! 同理, 大家可以在下边搜索到对应的警告, 这样 就可以把前边的字串填入上边的ignored的后边, 然后包住你的代码, ...