2016-04-14 337 views
0

我们希望使用sonarqube进行XML文件的代码质量评论。使用sonarqube报告XML解析问题

我们已经安装了sonarqube服务器,添加了xml插件并在示例XML文件上运行声纳亚军。

版本: sonarqube-5.4 XML插件版本1.4.1

添加标签到示例XML文件结果(有效“标签规则”)的警告,可以在sonarqube网站上看到。

当我损坏XML文件,通过

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

结果在声纳转轮日志的一个错误消息移除所述结束标记:

INFO:无法anayle文件C:/构建自动化/ sonar-examples-master/projects/l anguages/xml/xml-sonar-runner/src/sonar_backup.xml 信息:原因:org.xml.sax.SAXParseException; lineNumber:233; columnNumber:24; ML文档结构必须在同一实体内开始和结束。 INFO:Sensor XmlSensor(done)| time = 250ms INFO:Sensor XmlFileSensor INFO:1要分析的源文件 错误:无法解析xml文件:C:\ Build automation \ sonar-examples-master \ proje cts \ languages \ xml \ xml-sonar- runner \ src \ sonar_backup.xml

因此,在声纳网页界面中不会报告添加的Tab和缺失的关闭语句,只会在没有通知的情况下跳过损坏的xml。

任何人都可以给我支持吗? 我们需要声纳在Web界面中报告损坏的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 ErrorRSPEC-2260)的通用规则,但显然XML插件没有实现它。

坦率地说,有一个损坏的XML文件是非常糟糕的,你甚至不应该进行SonarQube分析,如果是这样的话。为什么?因为即使Parsing Error规则可用于XML,它也会搞砸你的指标和相关历史(XML文件有x问题,那么突然只有一个,因为它不能被解析,然后x问题再次出现一旦你修复它)。

Fail-fast:之前,以xmllint为例验证您的XML文件(请参阅this question)。如果有腐败的话,没有什么意义了。