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.
- C++ Check http://sf.net/projects/cppcheck /
- Oink http://danielwilkerson.com/oink/index.html
- Licznik kodu C i C++ http://sourceforge.net/projects/cccc /
- Splint (z odpowiedzi) [[18]}wieprzowina Mozilli (od odpowiedzi) (Teraz jest częścią Oink)
- Dehydra Mozilli (z odpowiedzi)
- użyj opcji
-Weffc++
dla GNU G++ (z odpowiedzi)
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.
- https://stackoverflow.com/questions/97454/c-static-code-analysis-tool-on-windows
- http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis
- http://www.chris-lott.org/resources/cmetrics/
- darmowe narzędzie do sprawdzania kodu źródłowego C / C++ pod kątem zestawu standardów kodowania?
- http://spinroot.com/static/
- wybór statycznej analizy kodu narzędzie
14 answers
Oink jest narzędziem zbudowanym na bazie front-endu Elsa C++. Mozilla ' s Pork to widelec Elsa/Oink.
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
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 ",".
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
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.
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".
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
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.
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
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?
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ę
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
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ę.
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.
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