如何在 Xcode 中找到构建日志中不存在的 Clang 警告标志

How to find a Clang warning flag in Xcode that's not present in build logs

我在 Xcode 中收到了一条警告,但我似乎找不到警告的名称。我启用了 -fdiagnostics-show-category=name 并且日志显示这是一个语义问题。查看 Clang 的来源,我 认为 我找到了一个 test for this scenario 但似乎无法找到它的名称。

目前,构建日志显示如下:

m:89:29: warning: assigning to 'id<AProtocol>' from incompatible type 'AViewController *' [Semantic Issue]
self.tableView.delegate = self.aController;

警告的 ID 也是 2 - 但无论我如何尝试,我似乎都无法消除它:

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-WNO-CLUE-WHAT-THE-WARNING-FLAG-IS"
    self.tableView.delegate = self.aController;
#pragma clang diagnostic pop

当然,我知道总是修复警告是首选,我可以通过协议转换来做到这一点。但在这一点上,我一直在努力寻找警告,感觉就像是未完成的事情,我很想知道答案。我也搜索了 "freakingclangwarnings.com",据我所知,它也不存在。

搜索源代码,我猜它是 warn_incompatible_qualified_id,在 DiagnosticSemaKinds.td 中定义,这是添加时 existing warnings that currently have no associated -W flag Possibly, more information in the revision log 之一。