2013-03-03 18 views
33

Cppcheck umożliwia tworzenie własnych plików reguł, ale nie wiem, ile funkcji cppcheck jest ujawnionych.Zestawy reguł dla cppcheck

Czy ktoś pracuje na planie, który wymusza zasady JSF lub MISRA?

+2

Czy chcesz sprawdzić numer __error__ lub __style__ w kodzie? –

+1

Na przykład [MISRA] (http://en.wikipedia.org/wiki/MISRA_C) jest silnym podzbiorem języka C, zabrania niebezpiecznych konstrukcji. Jak mówi wiki: "Większość wytycznych można sprawdzić za pomocą narzędzi wykonujących statyczną analizę kodu". ale wymienione tam narzędzia są komercyjne. MISRA nie spowoduje, że kod będzie wolny od błędów, ale nieco trudniej jest napisać kilka błędów w kodzie potwierdzającym MISRA. Sprawdzanie MISRA to głównie sprawdzanie stylu, ale nadal przydatne. – osgx

Odpowiedz

9

Nie będzie można wdrożyć wszystkich reguł i dyrektyw MISRA/JSF jako reguł cppcheck, głównie tylko prostych, ograniczających pewne cechy i konstrukcje języka C lub powiązanych ze stylem (niektóre z nich przychodzą na myśl: spacje przed/after ./->, # argumentów w jednej linii, użycie związków w celu zapewnienia różnych metod dostępu do pamięci, obecności unsigned/signed przed char, etc).

Użytkownik Ira Baxter prawie przybił go w comment w innym pytaniu dotykającym cppcheck: nie wszystko można przedstawić/uprościć jako wzór. Opieranie się na wzorach dla reguł niestandardowych utrudnia obsługę i wykrywanie problemów o wyższym poziomie, związanych na przykład z typów(np. Sizeof() na typach, należałoby parsować i zbierać tokeny (typedefs, enums) używane jako reprezentacja typu), dziedziczenie(np. klasy, w tym pochodne, używane zarówno jako wirtualne, jak i nie-wirtualne) i zakres. Te muszą być zakodowane na stałe w cppcheck (zawsze można było zobaczyć fork cppcheck ...)

W każdym przypadku, czy dotknąłeś zasad MISRA (lub JSF)? Czy jest to wymagane w przypadku projektu? Jeśli nie, możesz pobrać kopię wytycznych MISRA (masz już te JSF) i sprawdzić te, które możesz zaimplementować przy użyciu szablonów PCRE. Jeśli jest to wymagane, sugeruję "zainwestować" w produkt komercyjny, który sprawdza wytyczne MISRA/JSF i korzysta z obu narzędzi.

Ostatnia uwaga: nie potrzebujesz wszystkich reguł MISRA/JSF, a wiele narzędzi pozostawia niewielki procent z nich.

+0

W przypadku reguł wykraczających poza dopasowanie do wzorca, można użyć frameworka w [clang-tidy] (http: //clang.llvm .org/extra/clang-tidy.html). – legalize

+0

@johnwait określony zestaw reguł nie był wymagany, ale posiadanie formalnego zestawu reguł było (!) I jeśli masz mieć reguły, możesz równie dobrze mieć automatyczny sposób sprawdzania ich. W końcu napisaliśmy własną listę i wykonujemy recenzje kodu –