Как заставить cpplint работать с плагином предупреждений Jenkins

Я добавил шаг сборки Execute shell в Jenkins для запуска cpplint.py.

python /var/lib/jenkins/scripts/cpplint.py --counting=detailed `find path -name *.cpp

Я также добавил 'Сканировать предупреждения компилятора' и добавил CppLint.

Однако он всегда получает 0 предупреждений, даже если в консоли отображаются некоторые предупреждения, такие как

filename.cpp:18:  Missing space after ,  [whitespace/comma] [3]

person rv2rx    schedule 05.01.2013    source источник
comment
Устраните проблему, создав собственный парсер, используя код из здесь   -  person rv2rx    schedule 22.01.2013


Ответы (2)


Если вы запустите cpplint.py с --output=vs7, он создаст формат, ожидаемый плагином предупреждений Jenkins.

person jsiverskog    schedule 12.06.2013

Я использую плагин Cppcheck и cpplint_to_cppcheckxml.py для преобразования выходных данных cpplint.py в ожидаемый формат XML с помощью плагина Cppcheck. Это работает очень хорошо. Я могу щелкнуть проблемный вопрос в результатах Cppcheck, отображаемых на странице вакансий Jenkins, и он отобразит исходный код с выделенной строкой нарушения. Очень круто.

Вы должны указать cpplint абсолютный путь к каталогу исходного кода. чтобы генерация гиперссылок работала на странице результатов Cppcheck. Единственный недостаток, который я вижу, это то, что ваши результаты Cppcheck и cpplint объединяются, а не разделяются.

Если вы используете bash-скрипты Linux, вот как я превращаю относительный путь в абсолютный, чтобы cpplint генерировал абсолютные пути в своем выводе:

# Build cpplint reports and transform to cppcheck compatible XML format
# Convert relative path to absolute path so that Jenkins job can easily display the source code errors
srcPathAbsolute=${PWD}/../dicegame/src/main
srcPathAbsolute=$(readlink -f ${srcPathAbsolute})
cpplint.py --counting=detailed ${srcPathAbsolute}/*.cpp  2>&1| cpplint_to_cppcheckxml.py &> cpplint-cppcheck-result.xml 

В моей конфигурации задания Jenkins найти файлы ccplint-cppcheck-result.xml и мой обычный файл cppcheck-result.xml.

Publish cppcheck results
Cppcheck report XMLs  **/*cppcheck-result.xml

Спасибо gerkey на Bitbucket за cpplint_to_cppcheckxml.py. Его cpplint_to_cppcheckxml.py служит примером того, как подключить выходные данные других инструментов к существующим плагинам Jenkins. Очень хорошо!

person Ed of the Mountain    schedule 20.12.2013