Существуют ли инструменты статического анализа, которые проверяют Правило 3 (или Правило 5 C ++ 11)

В настоящее время я работаю над базой кода, которая построена на основе песка.

В предположительно проверенных библиотеках существует множество классов, которые нарушают «Правило 3». Большинство объявляет нетривиальный деструктор, но в нем отсутствует либо конструктор копирования, либо оператор присваивания.

Существуют ли какие-либо флаги компилятора (gcc) или инструменты статического анализа, которые предупреждают, когда класс нарушает правило 3?

В настоящее время мы используем Coverity с GCC версии 4.4.

4

Решение

Прикрытие имеет. Мы используем версию 6.5. Есть проверка MISSING_COPY_OR_ASSIGN.

0

Другие решения

Тест C ++ от Parasoft (коммерческий инструмент) имеет правило (MRM-40), которое охватывает «последовательно копировать и уничтожать», которое выглядит так, как будто оно вам поможет. По сути, в нем говорится, что если вы определяете какой-либо из конструктора копирования, оператора копирования или деструктора, вам может потребоваться определить один или оба других.

Больше информации на http://www.parasoft.com/jsp/products/cpptest.jsp

0

По вопросам рекламы [email protected]