это
cppcheck --enable=style --inconclusive --check-config --xml --xml-version=2 -v -I.. -I../mocks -I../gmock -I../gtest -DUNIT_TEST ../src
результаты в этом
<?xml version="1.0" encoding="UTF-8"?>
<results version="2">
<cppcheck version="1.52"/>
<errors>
Checking ../src/AppMain.cpp...
</errors>
</results>
Очевидно, я делаю что-то не так — но что?
Кстати, я уверен, что код имеет проблемы, но просто чтобы быть уверенным, я вставил эти две строки в него
char a[10];
a[10] = 0;
И не было никакого сообщения о ссылке за пределы
Без минимального рабочего примера, чтобы воспроизвести проблему, трудно помочь.
Прежде всего, удалите параметр check-config, так как он делает следующее:
—check-config Проверьте конфигурацию cppcheck. Нормальный код
анализ отключен этим флагом.
Важно знать исходный код, потому что если вы определяете UNIT_TEST, и этот конкретный фрагмент не активен из-за этого, он не будет показывать никаких проблем.
Кроме того, вы должны указать «—enable = all», если хотите видеть ошибки, потому что выход за границы классифицируется как ошибка, а не как стиль. Неиспользуемая переменная (как указано в вашем примере) — это проблема стиля.
Запуск cppcheck (v1.72)
cppcheck --enable=all --inconclusive --xml-version=2 -v foo.cpp
на этом
void main()
{
char a[10];
a[10] = 0;
}
приводит к следующему выводу для меня
<?xml version="1.0" encoding="UTF-8"?>
<results version="2">
<cppcheck version="1.72"/>
<errors>
<error id="unreadVariable" severity="style" msg="Variable 'a' is assigned a value that is never used." verbose="Variable 'a' is assigned a value that is never used.">
<location file="foo.cpp" line="5"/>
</error>
<error id="arrayIndexOutOfBounds" severity="error" msg="Array 'a[10]' accessed at index 10, which is out of bounds." verbose="Array 'a[10]' accessed at index 10, which is out of bounds.">
<location file="foo.cpp" line="5"/>
</error>
</errors>
</results>
Других решений пока нет …