1

我在 Xcode 4 下,并使用激进的警告来识别代码中的潜在问题。该代码具有 C、C++ 和 Objective C 元素。有效的警告标志是:

-Wall -Wextra -Wconversion -Wstrict-overflow -Wformat=2 -Wformat-security -Woverloaded-virtual -Wreorder -Wsign-promo -Wnon-virtual-dtor -Wstrict-selector-match -Wundeclared-selector -Wno-unused-parameter

我从谷歌图书馆里得到了一些噪音。警告是“格式字符串不是字符串文字”。例如在包含 streamType 的语句中:

NSString *streamTypeTemplate = @"multipart/related; boundary=\"%@\"";
NSString *streamType = [NSString stringWithFormat:streamTypeTemplate,
  partBoundary];

有没有人有任何想法来消除这个警告。我把它踢给了谷歌,但他们没有修复它。我不想取消警告,因为我可能会在此过程中失去真正的警告。

我认为我的解决方案是在本地修复它。例如:

NSString *streamType = [NSString stringWithFormat:
  @"multipart/related; boundary=\"%@\"",
  partBoundary];

但我会欢迎不需要我复制/粘贴格式字符串和删除语句的东西。此外,Google 存储库是一个外部存储库,如果他们稍后接触代码,可能会使合并变得复杂。

就其价值而言,“干净编译”是一道安全门。我不想教开发人员可以取消警告,因为我们不想处理它们。它树立了一个可怕的先例,并以反例为先。

杰夫

4

0 回答 0