Как вызвать предупреждение статического анализатора по определенному пути кода? - PullRequest
0 голосов
/ 20 декабря 2018

Я ищу способ вызвать предупреждение статического анализатора на конкретном пути кода, который обычно не возникает или указывает на необработанное состояние ошибки.

Например, я хотел бы написать что-то вроде этого:

int err = some_internal_call(arg1, arg2);
if (err == errInternalError) {
    analyzer_assert(); 
}

Затем, когда я запускаю анализатор и он анализирует весь путь кода, он предупреждает меня, что analyzer_assert () был вызван.

Специально заглядывая в анализатор clang, но мне также любопытно, есть ли у других анализаторов эта функция.

Похоже, я мог бы добавить эту функцию в clang, написав специальную проверку, но я бы предпочел не делать это сам.

1 Ответ

0 голосов
/ 21 декабря 2018

Многие анализаторы имеют диагностику, предупреждающую, что условия всегда ложные или истинные.Чтобы найти такие ситуации, вы можете использовать множество различных инструментов.Но, видимо, вам нужна другая вещь.Вы хотите найти всегда истинные / ложные условия, из-за которых функция с определенным именем всегда / никогда не вызывается, не так ли?

Если да, скорее всего, готового решения не существует.Вам нужно либо внедрить такой функционал самостоятельно с помощью Clang, либо вы можете обратиться к кому-то, кто может сделать такую ​​специальную услугу для вас.Например, наша команда реализует аналогичные специфичные для клиента правила в анализаторе PVS-Studio.Такая диагностика включена в отдельную группу и по умолчанию отключена.Тем не менее, вы всегда можете включить и начать использовать такую ​​диагностику.

...