Я разрабатываю веб-приложение, которое загружает код с сервера и запускает на нем cppcheck. Я использую PHP для того же.
Я пытался с помощью exec($command,$output,$status);
команда
и команда "cppcheck ". $filename;
Возвращаемый массив $ output содержит только первую строку, т.е.
Проверка file.cpp ..
Линия
msgstr «(ошибка) Массив ‘a [10]’ доступен по индексу 10, который находится за пределами.»
отображается в файле error.log http-сервера. На самом деле это не ошибка командной строки или php, а ошибка, созданная cppcheck. Это потому, что строка содержит «error», она входит в error.log? Как это исправить?
Как правильно заметил @arkascha, вывод из cppcheck должен быть перенаправляется из потока stderr в стандартный вывод.
В соответствии с руководство, глава 2.7:
Много раз вы захотите сохранить результаты в файл. Вы можете использовать нормальное перенаправление оболочки для трубопроводов
вывод ошибок в файл.
cppcheck file1.c 2> err.txt
Ваш звонок будет тогда
exec($command.' 2>&1', $output, $status);
Других решений пока нет …