-Wall 以外に、人々が有用だと感じた警告は他にありませんか?
http://gcc.gnu.org/onlinedocs/gcc-4.3.2/gcc/Warning-Options.html
-Wall 以外に、人々が有用だと感じた警告は他にありませんか?
http://gcc.gnu.org/onlinedocs/gcc-4.3.2/gcc/Warning-Options.html
私は日常的に使用します:
gcc -m64 -std=c99 -pedantic -Wall -Wshadow -Wpointer-arith -Wcast-qual \
-Wstrict-prototypes -Wmissing-prototypes
このセットは、これに慣れていない人(私が初めてこれらのフラグを使用してコードをコンパイルする人)に多くのことをキャッチします。それが私に問題を与えることはめったにありません(ただし、-Wcast-qualは時々厄介です)。
2011 年 9 月 1 日現在、gcc バージョン 4.6.1 を使用
私の現在の「開発」エイリアス
gcc -std=c89 -pedantic -Wall \ -Wno-missing-braces -Wextra -Wno-missing-field-initializers -Wformat=2 \ -Wswitch-default -Wswitch-enum -Wcast-align -Wpointer-arith \ -Wbad-function-cast -Wstrict-overflow=5 -Wstrict-prototypes -Winline \ -Wundef -Wnested-externs -Wcast-qual -Wshadow -Wunreachable-code \ -Wlogical-op -Wfloat-equal -Wstrict-aliasing=2 -Wredundant-decls \ -Wold-style-definition -Werror \ -ggdb3 \ -O0 \ -fno-omit-frame-pointer -float-store -fno-common -fstrict-aliasing \ -lm
「リリース」エイリアス
gcc -std=c89 -pedantic -O3 -DNDEBUG -flto -lm
2009 年 11 月 3 日現在
「開発」別名
gcc -Wall -Wextra -Wformat=2 -Wswitch-default -Wcast-align -Wpointer-arith \ -Wbad-function-cast -Wstrict-prototypes -Winline -Wundef -Wnested-externs \ -Wcast-qual -Wshadow -Wwrite-strings -Wconversion -Wunreachable-code \ -Wstrict-aliasing=2 -float-store -fno-common -fstrict-aliasing \ -lm -std=c89 -pedantic -O0 -ggdb3 -pg --coverage
「リリース」別名
gcc -lm -std=c89 -pedantic -O3 -DNDEBUG --combine -fwhole-program -funroll-loops
私はC++から始めたので、CIの学習に切り替えたときは、肛門外であることを確認しました。
-fmessage-length = 0 -ansi -pedantic -std = c99 -エラー -壁 -Wextra -Wwrite-strings -Winit-self -Wcast-align -Wcast-qual -Wpointer-算術 -Wstrict-エイリアシング -Wformat = 2 -欠落-宣言 -Wmissing-include-dirs -Wno-unused-parameter -初期化されていません -Wold-style-definition -Wstrict-プロトタイプ -欠落-プロトタイプ
-Werror が好きです。コードの警告を無料に保ちます。
使用している GCC バージョンのマニュアルを入手し、利用可能なすべての警告オプションを見つけてから、やむを得ない理由があるものだけを無効にします。(たとえば、そうでなければ多くの警告を表示する変更不可能なサードパーティのヘッダー。)これらの理由を文書化します。(Makefile またはこれらのオプションを設定する場所。) 定期的に設定を確認し、コンパイラをアップグレードするたびに確認します。
コンパイラはあなたの友達です。警告はあなたの友達です。コンパイラーが潜在的な問題を知らせる機会をできる限り与えてください。
私も使用します:
-Wstrict-overflow=5
整数のオーバーフロー動作に依存するコードを記述した場合に発生する可能性のある厄介なバグをキャッチするため。
と:
-ウェクストラ
これにより、あると便利ないくつかのオプションも有効になります。ただし、ほとんどは C++ 用です。
今私は使用します:
-Wall -W -Wextra -Wconversion -Wshadow -Wcast-qual -Wwrite-strings -Werror
私はそのリストのほとんどを「An Introduction to gcc」という本から、いくつかは防御的プログラミングに関するUlrich Drepperの推奨事項 ( http://people.redhat.com/drepper/Defensive-slides.pdf ) から引用しました。
しかし、リストの背後に科学はありません。ただ、良いリストのように感じました.
/ヨハン
注:私はそれらのペダンティックなフラグが好きではありません....
注: -W と -Wextra はほぼ同じものだと思います。
-pedantic -Wall -Wextra -Wno-write-strings -Wno-unused-parameter
「私をたくさん傷つける」モードでは、-Wno... を省略します。
特に C++ では、コードの警告を無料にしたいと思っています。多くの場合、C コンパイラの警告は無視できますが、多くの C++ 警告はソース コードの根本的な欠陥を示しています。
私は通常、「-W -Wall -ansi -pedantic」でコンパイルします。これにより、コードの品質と移植性を最大限に高めることができます。
-Wredundant-decls -Wnested-externs -Wstrict-prototypes -Wextra -Werror-implicit-function-declaration -Wunused -Wno-unused-value -Wreturn-type
-Wfloat-equal、-Wshadow、-Wmissing-prototypes、
私は一般的にちょうど使用します
gcc -Wall -W -Wunused-parameter -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -Wsign-compare -Wconversion -Wshadow -Wcast-align -Wparentheses -Wsequence-point -Wdeclaration-after-statement -Wundef -Wpointer-arith -Wnested-externs -Wredundant-decls -Werror -Wdisabled-optimization -pedantic -funit-at-a-time -o
-ペダンティックエラー
を指定しない限り、初期化されていない変数に関する警告は機能しない-O
ため、それをリストに含めます。
-g -O -Wall -Werror -Wextra -pedantic -std=c99
-Wfatal-errors