私は 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];
この警告を消すためのアイデアはありますか。私はそれをGoogleに蹴りましたが、彼らはそれを修正しませんでした. プロセス中に実際の警告を失う可能性があるため、警告を元に戻したくありません。
私の解決策は、ローカルで修正することだと思います。例えば:
NSString *streamType = [NSString stringWithFormat:
@"multipart/related; boundary=\"%@\"",
partBoundary];
しかし、フォーマット文字列をコピーして貼り付けたり、ステートメントを削除したりする必要のないものを歓迎します。さらに、Google リポジトリは外部リポジトリであるため、後でコードに触れるとマージが複雑になる可能性があります。
その価値のために、「クリーン コンパイル」はセキュリティ ゲートです。私は開発者に、警告を処理したくないので、警告を撤回してもよいと教えたくありません。それは恐ろしい前例を設定し、反例を導きます。
ジェフ