Cześć, szukam jakiegoś narzędzia, koniecznie darmowego do statycznej analizy kodu C/C++. Najlepiej jakby sprawdzało jeszcze standard MISRA, ale to nie jest konieczne.
Co polecacie?
clang-static anlyzer
edit:
hmm on chyba jest włączony do clang-tidy teraz
Z otwartymi źródłami, w zasadzie można polecić 2 narzędzia:
- splint - http://splint.org/ tu będzie trzeba dopisać własne reguły (nie ma predefiniowanych do MISRA). Kiedyś pisałem do tego zestaw reguł i sprawdziło się w projekcie. Niestety projekt komercyjny więc reguł nie mogę upubliczniać. Zresztą to było i tak wyłącznie do C.
- cppcheck - ma dodatek sprawdzający reguły MISRA. Tu masz go na github wraz z całym repo projektu: https://github.com/danmar/cppcheck/blob/master/addons/misra.py ...
... tu masz status implementacji http://cppcheck.net/misra.php
... samo użycie proste:
cppcheck --dump file.cpp
python misra.py file.cpp.dump
Na ten moment niestety żadne z tych otwartych rozwiązań nie dostarcza pełnego wsparcia do wszystkich reguł.
Dodatkowo zerknij do tego zestawu narzędzi. Nie wszystkie są na otwartych licencjach ale być może uzupełnią zestaw narzędzi: https://wiki.sei.cmu.edu/confluence/display/cplusplus/CC.+Analyzers
PS. Jeśli mam brać Twój nick poważnie, to polecam cppcheck. Podłączysz go w tej chwili w zasadzie do dowolnego IDE i to powinno Ci na początku wystarczyć.
Ok, sprawdziłem cpp check i na początek działa fajnie.
Hej, to znowu ja.
Nie wiem jak to fachowo się nazywa(chyba branche), ale poszukuję narzędzia które sprawdza ile branchy dana funkcja posiada.