Inne niż - Jakie inne ostrzeżenia okazały się przydatne?
http://gcc.gnu.org/onlinedocs/gcc-4.3.2/gcc/Warning-Options.html
c
gcc
compiler-errors
Sard
źródło
źródło
-Wdeclaration-after-statement
”, aby wykryć kod, którego MSVC (który nadal jest w zasadzie kompilatorem C89) nie będzie obsługiwać. To utrapienie. Dodanie „-Wextra
” może również wykryć inne problemy.-O3
lub coś podobnego; istnieją ostrzeżenia, które są generowane tylko wtedy, gdy kod jest zoptymalizowany.-m32
i-m64
(oczywiście w oddzielnych przebiegach) zapewnia lepszą ochronę przed różnymi błędami w sposobie używaniaprintf()
iscaf()
specyfikacjach konwersji.Od 2011-09-01, z wersją gcc 4.6.1
Mój obecny alias „deweloperski”
Alias „zwolnienia”
Od 2009-11-03
alias „deweloperski”
alias „release”
źródło
-Wfloat-equal
dodany do mojego aliasu. Dziękuję Mark-Wstrict-aliasing=2
faktycznie obniża poziom ostrzeżenia-Wstrict-aliasing=3
implikowanego przez-Wall
, przynajmniej w najnowszej wersji gcc.Lubię -Werror. Utrzymuje kod ostrzeżenia za darmo.
źródło
#warning
się dobrego efektu ubocznego stosowania-Werror
.-Werror
domyślnie w swoich kompilacjach, denerwuje to pakerów, którzy używają różnych wersji kompilatora od Ciebie, ponieważ ostrzeżenia zmieniają się wraz z wersją kompilatora, czasami kod, który jest ostrzegawczy, będzie dla Ciebie ostrzeżenie dla kogoś innego i następnie muszą zagłębić się w system kompilacji, aby go wyłączyć.Zacząłem od C ++, więc kiedy przestawiłem się na naukę CI, upewniłem się, że jestem ekstra-analityczny:
źródło
Pobierz instrukcję dla używanej wersji GCC, znajdź wszystkie dostępne opcje ostrzeżeń , a następnie dezaktywuj tylko te, dla których masz do tego ważny powód. (Na przykład niemodyfikowalne nagłówki innych firm, które w przeciwnym razie dawałyby wiele ostrzeżeń). Udokumentuj te powody. (W Makefile lub gdziekolwiek ustawisz te opcje.) Przeglądaj ustawienia przy regularnych interwałach i za każdym razem, gdy aktualizujesz swój kompilator.
Kompilator to twój przyjaciel. Ostrzeżenia są twoim przyjacielem. Daj kompilatorowi jak największą szansę na poinformowanie Cię o potencjalnych problemach.
źródło
Używam również:
Aby wyłapać te okropne błędy, które mogą wystąpić, gdy napiszę kod, który opiera się na zachowaniu przepełnienia liczb całkowitych.
I:
Co daje pewne opcje, które są również przyjemne. Jednak większość z nich jest przeznaczona dla C ++.
źródło
Zwykle kompiluję z "-W -Wall -ansi -pedantic", co pomaga zapewnić maksymalną jakość i przenośność kodu.
źródło
-pedantic -Wall -Wextra -Wno-write-strings -Wno-unused-parameter
W trybie „Zranić mnie dużo” zostawiam -Wnie ...
Lubię, gdy mój kod jest wolny od ostrzeżeń, szczególnie w C ++. Podczas gdy ostrzeżenia kompilatora C często można zignorować, wiele ostrzeżeń C ++ pokazuje podstawowe defekty w kodzie źródłowym.
źródło
Foo(int dndu, int dndv) : dndu_(dndu), dndv_(dndu) {}
-> stosunkowo trudne do wykrycia. Jeśli denerwuje Cię to ostrzeżenie, powinieneś po prostu odkomentować parametrfoo (int /*q*/)
, co również zwiększy czytelność twojego kodu.-pedantyczne-błędy
źródło
clang
(kompilator C projektu LLVM), a następnie skompiluj z nim,-Weverything
a zobaczysz, jak przyjemna kompilacja może się stać (niektóre ostrzeżenia są całkowicie szalone, ale technicznie poprawne).-Wfloat-equal, -Wshadow, -Wmissing-prototypes,
źródło
-Wredundant-decls -Wnested-externs -Wstrict-prototypes -Wextra -Werror-implicit-function -laration -Wunused -Wno-unused-value -Wreturn-type
źródło
Obecnie używam:
-Wall -W -Wextra -Wconversion -Wshadow -Wcast-qual -Wwrite-strings -Werror
Listę tę zaczerpnąłem głównie z książki „Wprowadzenie do gcc”, a następnie z rekomendacji Ulricha Dreppera na temat programowania obronnego ( http://people.redhat.com/drepper/Defensive-slides.pdf ).
Ale nie mam żadnej nauki za moją listą, po prostu czułem się jak dobra lista.
/ Johan
Uwaga: nie lubię jednak tych pedantycznych flag ...
Uwaga: Myślę, że -W i -Wextra to mniej więcej to samo.
źródło
Generalnie po prostu używam
źródło
Ostrzeżenie o niezainicjowanych zmiennych nie działa, chyba że określisz
-O
, więc umieszczam to na mojej liście:-g -O -Wall -Werror -Wextra -pedantic -std=c99
źródło
-Wfatal-errors
źródło