Arhn - архитектура программирования

Использование Jenkins и PHP Code Sniffer в скрипте сборки ANT

Я использую плагины PHP Code Sniffer в Jenkins. Он генерирует файл checkstyle.xml, но сервер jenkins не может проанализировать файл.

Я получаю следующее в выводе консоли сборки.

phpdox:
...
[exec]     Parsing checkstyle logfile failed: loading file 'logs/checkstyle.xml' failed.
[exec] [/var/lib/jenkins/jobs/AtomFrontEnd-Master/workspace/build/logs/checkstyle.xml] [Line: 345 - Column: 1] Fatal Error 5: Extra content at the end of the document
...

build:

Total time: 3 minutes 32 seconds
[CHECKSTYLE] Collecting checkstyle analysis files...
[CHECKSTYLE] Finding all files that match the pattern build/logs/checkstyle.xml
[CHECKSTYLE] Parsing 1 files in /var/lib/jenkins/jobs/AtomFrontEnd-Master/workspace
[CHECKSTYLE] Parsing of file /var/lib/jenkins/jobs/AtomFrontEnd-Master/workspace/build/logs/checkstyle.xml failed due to an exception:

org.xml.sax.SAXParseException; lineNumber: 345; columnNumber: 2; The markup in the document following the root element must be well-formed.
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1239)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:649)
at org.apache.commons.digester3.Digester.parse(Digester.java:1642)
at org.apache.commons.digester3.Digester.parse(Digester.java:1745)
at hudson.plugins.checkstyle.parser.CheckStyleParser.parse(CheckStyleParser.java:67)
at hudson.plugins.analysis.core.AbstractAnnotationParser.parse(AbstractAnnotationParser.java:53)
at hudson.plugins.analysis.core.FilesParser.parseFile(FilesParser.java:300)
at hudson.plugins.analysis.core.FilesParser.parseFiles(FilesParser.java:258)
at hudson.plugins.analysis.core.FilesParser.parserCollectionOfFiles(FilesParser.java:209)
at hudson.plugins.analysis.core.FilesParser.invoke(FilesParser.java:178)
at hudson.plugins.analysis.core.FilesParser.invoke(FilesParser.java:31)
at hudson.FilePath.act(FilePath.java:920)
at hudson.FilePath.act(FilePath.java:893)
at hudson.plugins.checkstyle.CheckStylePublisher.perform(CheckStylePublisher.java:143)
at hudson.plugins.analysis.core.HealthAwarePublisher.perform(HealthAwarePublisher.java:144)
at hudson.plugins.analysis.core.HealthAwareRecorder.perform(HealthAwareRecorder.java:333)
at hudson.tasks.BuildStepMonitor$2.perform(BuildStepMonitor.java:32)
at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:772)
at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:736)
at hudson.model.Build$BuildExecution.post2(Build.java:183)
at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:685)
at hudson.model.Run.execute(Run.java:1757)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
at hudson.model.ResourceController.execute(ResourceController.java:88)
at hudson.model.Executor.run(Executor.java:234)


...
ERROR: Publisher hudson.plugins.violations.ViolationsPublisher aborted due to exception
java.io.IOException: Expecting tag checkstyle
at hudson.plugins.violations.parse.AbstractParser.expectNextTag(AbstractParser.java:268)
at hudson.plugins.violations.types.checkstyle.CheckstyleParser.execute(CheckstyleParser.java:39)
at hudson.plugins.violations.parse.AbstractTypeParser.parse(AbstractTypeParser.java:57)
at hudson.plugins.violations.ViolationsCollector.doType(ViolationsCollector.java:187)
at hudson.plugins.violations.ViolationsCollector.invoke(ViolationsCollector.java:114)
at hudson.plugins.violations.ViolationsCollector.invoke(ViolationsCollector.java:25)
at hudson.FilePath.act(FilePath.java:920)
at hudson.FilePath.act(FilePath.java:893)
at hudson.plugins.violations.ViolationsPublisher.perform(ViolationsPublisher.java:74)
at hudson.tasks.BuildStepMonitor$3.perform(BuildStepMonitor.java:45)
at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:772)
at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:736)
at hudson.model.Build$BuildExecution.post2(Build.java:183)
at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:685)
at hudson.model.Run.execute(Run.java:1757)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
at hudson.model.ResourceController.execute(ResourceController.java:88)
at hudson.model.Executor.run(Executor.java:234)

Этот сервер работает под управлением CentOS 6.5 Версия PHP: 5.4.29 Apache Ant версии 1.9.4

Файл checkstyle.xml начинается с тега

<file ... >
    ...
</file>

Когда я запускаю тот же скрипт сборки Ant из Ubuntu с той же версией Ant, мой файл checkstyle.xml выглядит так:

<?xml version="1.0" encoding="UTF-8"?>
   <checkstyle version="2.0.0a2">
      <file ... >
         ...
      </file>
   </checkstyle>

  • В сообщении об ошибке указано Expecting tag checkstyle, и вы уже заметили, что в XML отсутствует элемент checkstyle. Так что мне кажется, что вам просто нужно добавить недостающий элемент вокруг вашего XML. 20.06.2014
  • Та же проблема в Windows 2k8 Enterprise :( Где именно должен находиться этот файл? Это фиктивный файл? 28.01.2015

Ответы:


1

У меня была та же проблема, и когда я включил вывод в Ant, я обнаружил, что у phpcs закончилась память. После того, как я увеличил memory_limit в php.ini, он сгенерировал правильный файл XML.

15.12.2016
Новые материалы

Коллекции публикаций по глубокому обучению
Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

Представляем: Pepita
Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

Советы по коду Laravel #2
1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

3 способа решить квадратное уравнение (3-й мой любимый) -
1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

Создание VR-миров с A-Frame
Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

Демистификация рекурсии
КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..