提问人:jww 提问时间:12/10/2012 最后编辑:jww 更新时间:12/10/2012 访问量:122
iOS 编译、警告和格式字符串
iOS compilation, warnings, and format strings
问:
我在 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
我从 Google 图书馆中得到了一些噪音。警告是“格式字符串不是字符串文本”。例如,在包含 streamType 的语句中:
NSString *streamTypeTemplate = @"multipart/related; boundary=\"%@\"";
NSString *streamType = [NSString stringWithFormat:streamTypeTemplate,
partBoundary];
有没有人有任何想法来消除这个警告。我把它踢给了谷歌,但他们没有修复它。我不想放弃警告,因为在此过程中我可能会失去真正的警告。
我认为我的解决方案是在本地修复它。例如:
NSString *streamType = [NSString stringWithFormat:
@"multipart/related; boundary=\"%@\"",
partBoundary];
但我欢迎不需要我复制/粘贴格式字符串和删除语句的东西。此外,Google 存储库是一个外部存储库,如果稍后接触代码,可能会使合并变得复杂。
就其价值而言,“干净编译”是一个安全门。我不想教开发人员放弃警告是可以的,因为我们不想处理它们。它开创了一个可怕的先例,并以反例为导向。
杰夫
答: 暂无答案
评论