Jakie narzędzia do analizy statycznej C++ typu open source są dostępne? [zamknięte]

Java ma kilka bardzo dobrych narzędzi do analizy statycznej open source, takich jak FindBugs, Checkstyle i PMD. Narzędzia te są łatwe w użyciu, bardzo pomocne, działają na wielu systemach operacyjnych i darmowe .

Komercyjne produkty do analizy statycznej C++ są dostępne. Chociaż posiadanie takich produktów jest świetne, koszt jest po prostu zbyt duży dla studentów i zwykle trudno jest uzyskać wersję próbną.

Alternatywą jest znalezienie statycznego C++ o otwartym kodzie źródłowym narzędzia analityczne, które będą działać na wielu platformach (Windows i Unix). Za pomocą narzędzia open source można go zmodyfikować do określonych potrzeb. Znalezienie narzędzi nie było łatwym zadaniem.

Poniżej znajduje się krótka lista narzędzi do analizy statycznej C++, które zostały znalezione lub zasugerowane przez innych.

Jakie są Inne przenośne narzędzia do analizy statycznej C++, które zna ktoś i które można polecić?

Niektóre pokrewne linki.

Author: jnancheta, 2008-09-26

14 answers

Oink jest narzędziem zbudowanym na bazie front-endu Elsa C++. Mozilla ' s Pork to widelec Elsa/Oink.

Zobacz: http://danielwilkerson.com/oink/index.html

 19
Author: 3 revs, 3 users 40%Daniel S Wilkerson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-13 01:28:08

CppCheck jest open source i cross-platform.

Mac OSX:

brew install cppcheck
 69
Author: Soo Wei Tan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-22 08:46:57

Jeśli chodzi o kompilator GNU, gcc ma już wbudowaną opcję, która umożliwia dodatkowe Ostrzeżenie do tych z-Wall. Opcją jest - weffc++ i chodzi o naruszenie niektórych wytycznych Scotta Meyersa opublikowanych w jego książkach " efektywny i bardziej efektywny C++".

W szczególności opcja wykrywa następujące elementy:

  • Definiowanie konstruktora kopiującego i operatora przypisania dla klas z dynamicznie przydzielanymi pamięć.
  • preferuje inicjalizację niż przypisanie w konstruktorach.
  • uczynić destruktory wirtualnymi w klasach bazowych.
  • Have "operator=" return a reference to * this.
  • nie próbuj zwracać referencji, gdy musisz zwrócić obiekt.
  • rozróżnić formy prefiksu i postfiksu operatorów przyrostu i dekrementacji.
  • Never overload "&&", "||", lub ",".
 52
Author: Nicola Bonelli,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-27 20:36:07

Na razie w fazie rozwoju, ale clang zajmuje się analizą C i jest ukierunkowany na obsługę c++ w czasie. Jest częścią projektu LLVM .

Update: podczas gdy strona docelowa mówi "analizator jest ciągłą pracą w toku", mimo to jest teraz udokumentowany jako analizator statyczny zarówno dla C, jak i C++.

Pytanie: Jak mogę uruchomić GCC/Clang do analizy statycznej? (tylko ostrzeżenia)

Opcja kompilatora: - fsyntax-only

 26
Author: Don Wakefield,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:10:54

Ktoś jeszcze wspomniał -weffc++, ale to jest właściwie jedno z niewielu ostrzeżeń GCC, których domyślnie nie włączam. Jednak zestaw ostrzeżeń, które włączam, jest najważniejszym narzędziem analizy statycznej w moim zestawie. Możesz zobaczyć pełną listę zalecanych ostrzeżeń .

W podsumowaniu:

- pedantic-Wall-Wextra-Wcast-align-Wcast-qual-Wctor-dtor-privacy-Wdisabled-optimization-Wformat=2-Winit-self-WLL-op-Wmissing-deklaracje -Wmissing-include-dirs-Wnoexcept-Wold-style-cast-Woverloaded-virtual-Wredundant-decls-Wshadow-Wsign-conversion-Wsign-promo-Wstrict-null-sentinel-Wstrict-overflow=5-Wswitch-default-wundef-Werror-wno-unused

Zauważ, że niektóre z nich wymagają nowej wersji gcc, więc może być konieczne wyeliminowanie ich z listy, jeśli utkniesz z powrotem na 4.5 lub coś takiego.

 15
Author: David Stone,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:55:19

John Carmack wspomina również PVS-Studio w tym ciekawym poście na blogu "statyczna Analiza kodu".

 14
Author: Alex Zakharenko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-05 22:22:23

Jeśli przez Open Source, naprawdę miałeś na myśli "wolny", to analiza prefast Microsoftu jest dobra. Okna-tylko oczywiście. Jest w pełni zintegrowany z Visual Studio i kompilatorem. np.:

Cl / analizuj próbkę.cpp

 7
Author: user15071,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-27 07:59:33

Praca Mozilli w zakresie analizy statycznej jest prawdopodobnie warta obejrzenia.

 6
Author: Daniel James,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-27 08:24:30

Splint wydaje się wypełniać rachunek za C.

Jeśli nie podałeś open source, powiedziałbym, że oprogramowanie Gimpel S PCLint jest prawdopodobnie jednym z najlepszych dostępnych narzędzi do statycznego sprawdzania kodu w C++. Ale oczywiście nie jest to open source.

Mac OSX:

brew install splint
 4
Author: Onorio Catenacci,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-26 02:47:19

Microsoft PREFast {[2] } jest również dostępny w Windows Driver Kit. Wersja 7.0 jest do pobrania tutaj .

Dokumenty Microsoft stwierdzają, że powinien być uruchamiany tylko z kodem sterownika, ale ten (stary) post na blogu określa kroki, aby go uruchomić. Być może można go zintegrować z normalnym procesem budowania?

 3
Author: tmitchell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-01-19 20:18:32

Pracowaliśmy nad Wtyczką Eclipse CDT o nazwie metriculator. Jest nadal w fazie rozwoju, ale niektóre główne wskaźniki (np. LSLOC, McCabe, EfferentCoupling) są już wdrożone.

Zobacz http://sinv-56013.edu.hsr.ch/redmine/projects/metricular/wiki/Documentation Aby uzyskać więcej szczegółów, takich jak demonstracja wideo i dokumentacja.

Najnowsza wersja nightly build jest dostępna do instalacji poprzez stronę aktualizacji pod adresem: http://sinv-56013.edu.hsr.ch/metriculator/updatesite-nightly/site/

Dalszy Opis

Metriculator statycznie analizuje kod źródłowy C++ i generuje metryki oprogramowania. Metryki są zaimplementowane jako Codan checkers. Wyniki analizy można zbadać w osobnym widoku. Każdy metric ma konfigurowalne właściwości (np. próg dla " max linijek kodu na function"). Przekroczenie tego progu zgłosi problem i utworzy znacznik w kodzie źródłowym redaktor.

Z metriculator możesz:

  • analiza plików / folderów / projektów C++
  • definiowanie progów metrycznych i włączanie / wyłączanie metryki za pomocą strony preferencji Codans
  • mają znaczniki problemów w edytorach kodu źródłowego
  • przeglądaj wyniki metryczne
  • Eksportuj wyniki metryk jako chmurę tagów (dostępna jako Opcjonalna funkcja za pośrednictwem witryny aktualizacji)

Obecnie metriculator posiada następujące metryki:

    McCabe(Cyclomatic Złożoność)
  • EfferentCoupling na typ
  • logiczne linie źródłowe kodu
  • liczba członków na typ
  • Liczba parametrów na funkcję
 2
Author: jules,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-19 08:18:54

Powinieneś spróbować oo-przeglądarka ma niesamowitą integrację z xemacs

 1
Author: Jude,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-05-09 16:55:02

Można również kodować rozszerzenia GCC w MELT (Język specyficzny dla domeny przeznaczony do rozszerzania GCC) lub wtyczki GCC w C (znacznie trudniejsze), aby wykonać niestandardową analizę.

 1
Author: Basile Starynkevitch,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-22 05:55:05

Doxygen wykonuje analizę przepływu sterowania i generuje wykresy. Może to nie jest to, czego szukasz, ale mam nadzieję, że będą przydatne.

 0
Author: Paul Nathan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-12 22:24:25