Cppcheck позволяет создавать свои собственные файлы правил, но я не знаю, сколько из функций cppcheck выставлено.Инструкции для cppcheck
Кто-нибудь работает над комплектом, который будет применять правила JSF или MISRA?
Cppcheck позволяет создавать свои собственные файлы правил, но я не знаю, сколько из функций cppcheck выставлено.Инструкции для cppcheck
Кто-нибудь работает над комплектом, который будет применять правила JSF или MISRA?
Вы не сможете внедрять все правила и директивы MISRA/JSF в качестве правил cppcheck, в основном только простые, ограничивающие некоторые функции и конструкции языка C или связанные с стилем (некоторые из них приходят на ум: пробелы перед/after ./->, # аргументов в одной строке, использование объединений для предоставления различных методов доступа к памяти, наличие unsigned/signed перед char и т. д.).
Пользователь Ira Baxter довольно много прибил его в comment по другому вопросу, касаясь cppcheck: не все может быть представлено/упрощено как шаблон. Опираясь на шаблоны для пользовательских правил затрудняет обработку и обнаружение проблем более высокого уровня, связанных, например, с типами(например, sizeof() для типов, вам придется анализировать и собирать токены (typedefs, enums), используемые как представление типа), Наследование(например, классы, включая производные, используемые как виртуальные, так и не виртуальные) и сфера. Они должны быть жестко закодированы в cppcheck (вы всегда можете использовать fork cppcheck ...)
В любом случае, вы коснулись правил MISRA (или JSF)? Это требование для проекта? Если нет, вы можете получить копию рекомендаций MISRA (у вас уже есть JSF) и проверить те, которые вы можете реализовать, используя шаблоны PCRE. Если это требование, я предлагаю вам «инвестировать» в коммерческий продукт, который проверяет руководство MISRA/JSF и использует оба инструмента.
Последнее замечание: вам не нужны все правила MISRA/JSF, и многие инструменты оставляют небольшой процент от них.
Для правил, не соответствующих шаблону, вы можете использовать фреймворк в [clang-tidy] (http: //clang.llvm .org/дополнительные/лязг-tidy.html). – legalize
@johnwait определенный набор правил не был требованием, но формальный набор правил был (!), И если у вас будут правила, у вас также может быть автоматизированный способ их проверки. В итоге мы написали собственный список и просмотрели код –
Из того, что я могу сказать, просматривая документацию, он выглядит довольно обнаженным. http://cppcheck.sourceforge.net/manual.pdf.
DTSCode, спасибо, но руководство не имеет предопределенного набора правил «MISRA» или «JSF» ... – osgx
Вы хотите проверить проблему __error__ или __style__ в коде? –
Например, [MISRA] (http://en.wikipedia.org/wiki/MISRA_C) является сильным подмножеством языка C, он запрещает создавать небезопасные конструкции. Как говорится в wiki: «Большинство рекомендаций можно проверить с помощью инструментов, которые выполняют статический анализ кода». но перечисленные там инструменты являются коммерческими. MISRA не сделает код безошибочным, но немного сложнее записать некоторые ошибки в MISRA-подтверждающем коде. Проверка MISRA в основном проверяет стиль, но все же полезна. – osgx