2016-04-14 3 views
0

Мы хотим использовать sonarqube для проверки качества кода на файлах XML.Сообщить о проблемах синтаксического анализа XML с помощью sonarqube

У нас установлен сервер sonarqube, добавлен плагин xml и запущен сонар для примера XML-файла.

Версии: sonarqube-5,4 XML плагин V 1.4.1

Добавление вкладки в результаты выборки XML-файл (с активным «правилом Tab») в предупреждении, которое можно увидеть на веб-сайте sonarqube ,

Когда я развращают XML-файл, удалив закрывающий тег

<!---</sonar-config>-->. 

Результаты в сообщении об ошибке журнала эхолота бегуна:

INFO: Невозможно anayle файл C:/автоматизации сборки/sonar-examples-master/projects/l anguages ​​/ xml/xml-sonar-runner/src/sonar_backup.xml INFO: Причина: org.xml.sax.SAXParseException; lineNumber: 233; columnNumber: 24; X Структуры документов ML должны начинаться и заканчиваться внутри одного и того же объекта. INFO: Датчик XmlSensor (сделано) | time = 250ms INFO: Sensor XmlFileSensor INFO: 1 исходный файл, подлежащий анализу ОШИБКА: невозможно разобрать XML-файл: C: \ автоматизация сборки \ sonar-examples-master \ proje cts \ languages ​​\ xml \ xml-sonar- runner \ src \ sonar_backup.xml

В результате добавленная вкладка и отсутствующий оператор закрытия не сообщаются в веб-интерфейсе сонара, поврежденный xml просто пропущен без уведомления.

Может ли кто-нибудь поддержать меня? Нам нужны поврежденные файлы XML, сообщаемые сонаром в веб-интерфейсе.

До сих пор я не мог найти информацию по этой проблеме на форуме.

Спасибо и наилучшими пожеланиями Мартин

Вот копия corrpted файла XML:

<?xml version="1.0" encoding="UTF-8"?> 
<sonar-config> 
    <version><![CDATA[321]]></version> 
    <date><![CDATA[2012-08-08]]></date> 
    <metrics/> 
    <properties> 
    <property> 
     <key><![CDATA[java.vm.version]]></key> 
     <value><![CDATA[20.0-b12]]></value> 
    </property> 
    <property> 
     <key><![CDATA[wrapper.jvm.port.max]]></key> 
     <value><![CDATA[31999]]></value> 
    </property> 
    <property> 
     <key><![CDATA[java.vendor.url]]></key> 
     <value><![CDATA[http://java.sun.com/]]></value> 
    </property> 
    <property> 
     <key><![CDATA[JAVA_HOME]]></key> 
     <value><![CDATA[C:\Program Files\Java\jdk1.6.0_27]]></value> 
    </property> 
    </properties> 
    <profiles> 
    <profile> 
     <name><![CDATA[Sonar way]]></name> 
     <version><![CDATA[1]]></version> 
     <default-profile><![CDATA[true]]></default-profile> 
     <provided><![CDATA[true]]></provided> 
     <enabled><![CDATA[true]]></enabled> 
     <used><![CDATA[false]]></used> 
     <language><![CDATA[web]]></language> 
     <active-rules> 
     <active-rule> 
      <key><![CDATA[AvoidHtmlCommentCheck]]></key> 
      <plugin><![CDATA[Web]]></plugin> 
      <level><![CDATA[MINOR]]></level> 
     </active-rule> 
     <active-rule> 
      <key><![CDATA[DynamicJspIncludeCheck]]></key> 
      <plugin><![CDATA[Web]]></plugin> 
      <level><![CDATA[CRITICAL]]></level> 
     </active-rule> 
     <active-rule> 
      <key><![CDATA[IllegalTagLibsCheck]]></key> 
      <plugin><![CDATA[Web]]></plugin> 
      <level><![CDATA[CRITICAL]]></level> 
      <params> 
      <param> 
       <key><![CDATA[tagLibs]]></key> 
       <value><![CDATA[http://java.sun.com/jstl/sql]]></value> 
      </param> 
      </params> 
     </active-rule> 
     <active-rule> 
      <key><![CDATA[InlineStyleCheck]]></key> 
      <plugin><![CDATA[Web]]></plugin> 
      <level><![CDATA[MINOR]]></level> 
     </active-rule> 
     <active-rule> 
      <key><![CDATA[InternationalizationCheck]]></key> 
      <plugin><![CDATA[Web]]></plugin> 
      <level><![CDATA[MINOR]]></level> 
      <params> 
      <param> 
       <key><![CDATA[attributes]]></key> 
       <value><![CDATA[outputLabel.value, outputText.value]]></value> 
      </param> 
      </params> 
     </active-rule> 
     <active-rule> 
      <key><![CDATA[JspScriptletCheck]]></key> 
      <plugin><![CDATA[Web]]></plugin> 
      <level><![CDATA[CRITICAL]]></level> 
     </active-rule> 
     <active-rule> 
      <key><![CDATA[LibraryDependencyCheck]]></key> 
      <plugin><![CDATA[Web]]></plugin> 
      <level><![CDATA[CRITICAL]]></level> 
      <params> 
      <param> 
       <key><![CDATA[libraries]]></key> 
       <value><![CDATA[java.sql,javax.sql]]></value> 
      </param> 
      </params> 
     </active-rule> 
     <active-rule> 
      <key><![CDATA[LongJavaScriptCheck]]></key> 
      <plugin><![CDATA[Web]]></plugin> 
      <level><![CDATA[CRITICAL]]></level> 
      <params> 
      <param> 
       <key><![CDATA[maxLines]]></key> 
       <value><![CDATA[5]]></value> 
      </param> 
      </params> 
     </active-rule> 
     <active-rule> 
      <key><![CDATA[MultiplePageDirectivesCheck]]></key> 
      <plugin><![CDATA[Web]]></plugin> 
      <level><![CDATA[MINOR]]></level> 
     </active-rule> 
     <active-rule> 
      <key><![CDATA[WhiteSpaceAroundCheck]]></key> 
      <plugin><![CDATA[Web]]></plugin> 
      <level><![CDATA[MINOR]]></level> 
     </active-rule> 
     <active-rule> 
      <key><![CDATA[FileLengthCheck]]></key> 
      <plugin><![CDATA[Web]]></plugin> 
      <level><![CDATA[MINOR]]></level> 
      <params> 
      <param> 
       <key><![CDATA[maxLength]]></key> 
       <value><![CDATA[500]]></value> 
      </param> 
      </params> 
     </active-rule> 
     <active-rule> 
      <key><![CDATA[ComplexityCheck]]></key> 
      <plugin><![CDATA[Web]]></plugin> 
      <level><![CDATA[MINOR]]></level> 
      <params> 
      <param> 
       <key><![CDATA[tags]]></key> 
       <value><![CDATA[catch, choose, if, forEach, forTokens,when]]></value> 
      </param> 
      <param> 
       <key><![CDATA[operators]]></key> 
       <value><![CDATA[&&, ||, and,or]]></value> 
      </param> 
      <param> 
       <key><![CDATA[max]]></key> 
       <value><![CDATA[12]]></value> 
      </param> 
      </params> 
     </active-rule> 
     <active-rule> 
      <key><![CDATA[DocTypeCheck]]></key> 
      <plugin><![CDATA[Web]]></plugin> 
      <level><![CDATA[MINOR]]></level> 
      <params> 
      <param> 
       <key><![CDATA[dtd]]></key> 
       <value><![CDATA[http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd]]></value> 
      </param> 
      </params> 
     </active-rule> 
     <active-rule> 
      <key><![CDATA[DoubleQuotesCheck]]></key> 
      <plugin><![CDATA[Web]]></plugin> 
      <level><![CDATA[MINOR]]></level> 
     </active-rule> 
     <active-rule> 
      <key><![CDATA[IllegalAttributeCheck]]></key> 
      <plugin><![CDATA[Web]]></plugin> 
      <level><![CDATA[MAJOR]]></level> 
      <params> 
      <param> 
       <key><![CDATA[attributes]]></key> 
       <value><![CDATA[CAPTION.align, IFRAME.align, IMG.align, INPUT.align, OBJECT.align, 
      LEGEND.align, TABLE.align, HR.align, 
      DIV.align, H1.align, H2.align, H3.align, H4.align, H5.align, H6.align, P.align, 
      alink, background, bgcolor, 
      IMG.border, OBJECT.border, clear, color, compact, face, hspace, TD.height, TH.height, 
      language, link, 
      noshade, nowrap, HR.size, FONT.size, start, text, LI.type, OL.type, UL.type, LI.value, 
      version, 
      HR.width, 
      PRE.width, TD.width, TH.width]]></value> 
      </param> 
      </params> 
     </active-rule> 
     <active-rule> 
      <key><![CDATA[IllegalElementCheck]]></key> 
      <plugin><![CDATA[Web]]></plugin> 
      <level><![CDATA[MAJOR]]></level> 
      <params> 
      <param> 
       <key><![CDATA[elements]]></key> 
       <value><![CDATA[applet, basefont, center, dir, font, isindex, menu, s, strike, u]]></value> 
      </param> 
      </params> 
     </active-rule> 
     <active-rule> 
      <key><![CDATA[IllegalTabCheck]]></key> 
      <plugin><![CDATA[Web]]></plugin> 
      <level><![CDATA[MINOR]]></level> 
     </active-rule> 
     <active-rule> 
      <key><![CDATA[MaxLineLengthCheck]]></key> 
      <plugin><![CDATA[Web]]></plugin> 
      <level><![CDATA[MINOR]]></level> 
      <params> 
      <param> 
       <key><![CDATA[maxLength]]></key> 
       <value><![CDATA[120]]></value> 
      </param> 
      </params> 
     </active-rule> 
     <active-rule> 
      <key><![CDATA[RequiredAttributeCheck]]></key> 
      <plugin><![CDATA[Web]]></plugin> 
      <level><![CDATA[MAJOR]]></level> 
      <params> 
      <param> 
       <key><![CDATA[attributes]]></key> 
       <value><![CDATA[img.alt,script.type]]></value> 
      </param> 
      </params> 
     </active-rule> 
     <active-rule> 
      <key><![CDATA[UnclosedTagCheck]]></key> 
      <plugin><![CDATA[Web]]></plugin> 
      <level><![CDATA[MINOR]]></level> 
      <params> 
      <param> 
       <key><![CDATA[ignoreTags]]></key> 
       <value><![CDATA[verbatim]]></value> 
      </param> 
      </params> 
     </active-rule> 
     <active-rule> 
      <key><![CDATA[AvoidCommentedOutCodeCheck]]></key> 
      <plugin><![CDATA[Web]]></plugin> 
      <level><![CDATA[MAJOR]]></level> 
     </active-rule> 
     </active-rules> 
     <alerts/> 
    </profile> 
    </profiles> 
    <rules/> 
<!---</sonar-config>--> 

ответ

0

SonarQube имеет общие правила для Parsing Error (RSPEC-2260), но по-видимому, XML плагин не реализует его ,

Откровенно говоря, наличие поврежденного файла XML настолько плохо, что вы даже не должны анализировать SonarQube, если это так. Зачем ? Потому что, даже если для XML были доступны правила Parsing Error, это испортило бы вашу метрику и связанную с ней историю (в файле XML есть x вопросов, затем все внезапно только одно, потому что оно не может быть проанализировано, затем x снова проблемы как только вы его исправите).

Fail-fast: прежде чем что-либо, проверьте свои XML-файлы с помощью xmllint (см. this question). Если есть коррумпированный, то больше нечего делать.

Смежные вопросы