Проблема с запуском Cppcheck с помощью команды exec() в PHP

Я разрабатываю веб-приложение, которое загружает код с сервера и запускает на нем cppcheck. Я использую PHP для того же. Я попытался использовать команду exec($command,$output,$status);, а команда "cppcheck ". $filename;

Возвращаемый массив $output содержит только первую строку, т.е.:

Проверка файла.cpp..

Линия

"(ошибка) Массив 'a[10]' доступен по индексу 10, который выходит за пределы."

отображается в файле error.log https-сервера. На самом деле это не ошибка командной строки или ошибка php, а ошибка, созданная cppcheck. Это потому, что строка содержит «ошибку», она попадает в error.log? Как это исправить?


person Ruchi Tengse    schedule 21.03.2015    source источник
comment
Скорее всего, команда cppcheck выводит сообщение об ошибке в поток stderr. Тогда вы должны перенаправить его на стандартный вывод. Примерно так: exec('cppcheck somefile 2>&1',$output,$status);.   -  person arkascha    schedule 21.03.2015


Ответы (1)


Как правильно указал @arkascha, вывод cppcheck должен быть перенаправлен из потока stderr в stdout.

Согласно руководству, глава 2.7:

Много раз вы захотите сохранить результаты в файл. Вы можете использовать обычное перенаправление оболочки для передачи вывода ошибок в файл.

cppcheck file1.c 2> err.txt

Тогда ваш звонок будет

exec($command.' 2>&1', $output, $status);
person x29a    schedule 18.01.2016