Wybór narzędzia analizy kodu statycznych

głosy
54

Pracuję nad projektem, gdzie mam kodowania w C w środowisku UNIX. Używam funkcji niestrzępiącą się sprawdzić mój kod źródłowy. Lint już od dłuższego czasu (od 1979 roku), może ktoś zaproponować nowszą narzędzie do analizy kodu mogę użyć? Korzystnie stosuje się narzędzie, które jest wolne.

Utwórz 05/08/2008 o 22:19
źródło użytkownik
W innych językach...                            


15 odpowiedzi

głosy
30

Nie wychodzą samego kompilatora.

Czytaj dokumentacji kompilatora i znaleźć wszystkie ostrzeżenia i błędy można go dostarczyć, a następnie włączyć aż sensu dla Ciebie.

Upewnij się także, aby poinformować kompilator traktować ostrzeżenia jak błędy więc jesteś zmuszony naprawić je od razu. ( "-Werror" na gcc)

Także: „-Wall” na gcc czy nie włączyć wszystkie ostrzeżenia, nie daj się nabrać.

także też: sprawdzić valgrind - to „automatycznie wykryć [S] wiele zarządzania pamięcią i gwintowania błędy i profile [s] swoje programy w szczegółach.” (za darmo!)

Valgrind nie jest statyczny kontroler, ale jest to wspaniałe narzędzie! http://valgrind.org

Odpowiedział 05/08/2008 o 23:17
źródło użytkownik

głosy
14

Dla kodu C, na pewno zdecydowanie powinni wykorzystać Flexelint . Używałem go przez prawie 15 lat i przysięgać na to. Jeden z naprawdę wspaniałych funkcji, jakie ma to, że ostrzeżenia mogą być selektywnie włączać i wyłączać poprzez komentarze w kodzie ( „/ * szarpie -e123 * /”). Okazało się, że to potężne narzędzie dokumentacji gdy chciał coś niezwykłego. „Jestem wyłączenie ostrzegania X, zatem istnieje jakiś dobry powód robię X.”

Dla nikogo do interesujących pytań C / C ++, spojrzeć na niektóre ich przykłady na ich stronie i sprawdzić, czy można dowiedzieć się błędy, nie patrząc na podpowiedzi.

Odpowiedział 05/08/2008 o 22:42
źródło użytkownik

głosy
12

Słyszałem wiele dobrych rzeczy o dzyń statycznych analizatora , który IIRC używa LLVM jak to backend. Jeśli to jest realizowane na platformie, która może być dobrym wyborem.

Z tego co rozumiem, to jednak nieco więcej niż tylko analizy składni. „Automatyczne Znalezienie Bug”, na przykład.

Odpowiedział 06/08/2008 o 01:40
źródło użytkownik

głosy
5

Niedawno opracowano listę wszystkich statycznych narzędzi analizy miałem do mojej dyspozycji, nadal jestem w trakcie oceny ich wszystkich. Uwaga, są to głównie narzędzia analizy zabezpieczeń.

Odpowiedział 03/09/2008 o 23:11
źródło użytkownik

głosy
5

Używaliśmy coverity zapobiegania sprawdzić kod źródłowy C ++.

Nie jest to darmowe narzędzie (chociaż uważam, że oferują darmowe skanowanie projektów Open Source), ale jest to jedno z najlepszych narzędzi do analizy statycznej znajdziesz. Słyszałem, że to jeszcze większe wrażenie niż na C na C ++, ale to pomogło nam uniknąć sporo błędów tak daleko.

Odpowiedział 15/08/2008 o 18:47
źródło użytkownik

głosy
4

Można użyć cppcheck . Jest to łatwe w użyciu narzędzie do analizy statycznej kodu.
Na przykład:
cppcheck --enable=all .
sprawdzi wszystkie pliki / C ++ pod C bieżącym folderze.

Odpowiedział 25/06/2015 o 15:54
źródło użytkownik

głosy
1

Można spróbować CppDepend , całkiem kompletny statyczny analizator dostępny na Windows i Linux, bezpo¶rednio VS wtyczki IDE lub wiersz poleceń, i to za darmo dla autorów open source

Odpowiedział 26/06/2015 o 12:01
źródło użytkownik

głosy
1

PC-szarpie / Flexelint są bardzo wydajne i użyteczne narzędzia do analizy statycznej i wysoce konfigurowalny, choć niestety nie za darmo.

Przy pierwszym użyciu narzędzia takiego, mogą one produkować ogromne ilości ostrzeżeń, które mogą sprawić, że trudno odróżnić tych większych i mniejszych. Dlatego najlepiej jest rozpocząć korzystanie z funkcji w kodzie już w projekcie, jak to możliwe, a następnie uruchomić go na kodzie tak często, jak to możliwe, tak, że można radzić sobie z nowymi ostrzeżeniami jak wymyślą.

Z ciągłego użytkowania jak ta, wkrótce dowiedzieć się, jak napisać kod w taki sposób, który potwierdza z zasadami stosowanymi przez narzędzie.

Z tego powodu, wolę narzędzi jak Lint, które poruszają się stosunkowo szybko, a więc zachęcanie ciągłego użytkowania, aniżeli bardziej uciążliwych narzędzi, które może skończyć się za pomocą mniej często, jeśli w ogóle.

Odpowiedział 20/12/2008 o 00:29
źródło użytkownik

głosy
1

narzędzia Lint-jak zwykle cierpią na „fałszywy alarm” problem: oni zgłosić wiele więcej problemów niż naprawdę istnieją. Jeśli proporcja autentycznie-użytecznych ostrzeżeń jest zbyt niska, użytkownik dowiaduje się po prostu zignorować narzędzia. Bardziej nowoczesne narzędzia wydać trochę wysiłku, aby skoncentrować się na najbardziej prawdopodobnych / ciekawe ostrzeżeń.

Odpowiedział 23/08/2008 o 15:29
źródło użytkownik

głosy
1

Można znaleźć narzędzie Uno użyteczne. To jedna z niewielu wolnych opcji non-zabawki. Różni się on od strzępkami Flexelint itp w koncentrując się na niewielkiej liczbie „semantyczne” błędów (derefs zerowy wskaźnik, indeksów out-of-granice tablicy i używania niezainicjowanych zmiennych). Pozwala ona również kontrole zdefiniowane przez użytkownika, jak dyscypliny lock-unlock.

Pracuję w kierunku publicznego wydania następcy narzędzia, Orion ( TREŚCI już niedostępny )

Odpowiedział 15/08/2008 o 23:39
źródło użytkownik

głosy
0

Rzadki to oprogramowanie komputerowe, już dostępna na Linuksa, zaprojektowany, aby znaleźć ewentualne błędy kodowania w jądrze Linux.

Istnieją dwa aktywne projekty Linux weryfikacji Centrum zmierzające do poprawy jakości ładowalnych modułów jądra.

  1. Linux Driver Verification (LDV) - kompleksowy zestaw narzędzi do weryfikacji kodu źródłowego statycznych sterowników urządzeń Linux.
  2. KEDR Framework - rozszerzalny ramy dla analizy dynamicznej i weryfikacji modułów jądra.
  3. Kolejny projekt realizowany jest Linux weryfikacyjny plik systemowy, który ma na celu stworzenie dedykowanego zestawu narzędzi do weryfikacji implementacji systemu plików Linux.
Odpowiedział 20/12/2012 o 08:36
źródło użytkownik

głosy
0

Odkryłem, że to ogólnie najlepiej korzystać z wielu narzędzi do analizy statycznej, aby znaleźć błędy. Każde narzędzie jest zaprojektowany inaczej, a oni mogą znaleźć bardzo różne rzeczy od siebie.

Istnieje kilka dobrych dyskusji w niektórych rozmowach tutaj . To z konferencji zorganizowanej przez US Department of Homeland Security na analizie statycznej.

Odpowiedział 15/06/2011 o 07:53
źródło użytkownik

głosy
0

g'day,

I całkowicie zgadzam się z sugestiami, aby przeczytać i strawić to, co kompilator mówi ci po ustawieniu -Wall.

Dobrym narzędziem do analizy statycznej dla bezpieczeństwa jest FlawFinder napisany przez Davida Wheelera. To ma dobrą pracę szuka różnych exploitów bezpieczeństwa,

Jednak to nie zastępuje mający poinformowany ktoś przeczytać kodzie. David mówi na swojej stronie internetowej: „Głupiec z narzędziem jest nadal głupcem!”

Twoje zdrowie,

Obrabować

Odpowiedział 26/08/2008 o 16:21
źródło użytkownik

głosy
0

szarpie jest stale aktualizowana ... więc dlaczego chcesz nowszą jeden.

BTW flexelint to szarpie

Odpowiedział 23/08/2008 o 12:42
źródło użytkownik

głosy
0

Istnieje „-Weffc ++” opcja dla gcc, który według strony Mac OS X człowiek będzie:

Ostrzegają o naruszeniach z następujących wytycznych styl z książki Scott Meyers' Efektywne C ++:

[fantastyczna okazja]

Wiem, że poprosił o C, ale to jest najbliższy znam ..

Odpowiedział 15/08/2008 o 23:03
źródło użytkownik

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more