我们希望使用sonarqube对XML文件进行代码质量审核。
我们已经设置了一个sonarqube服务器,添加了xml插件并在示例XML文件上运行了sonar runner。
版本: sonarqube-5.4 XML插件v 1.4.1
在示例xml文件中添加一个选项卡(带有活动" Tab规则"),可以在sonarqube网站上看到警告。
当我破坏XML文件时,删除结束标记
<!---</sonar-config>-->.
导致声纳跑步者日志的错误消息:
信息:无法分析文件C:/ Build automation / sonar-examples-master / projects / l anguages / XML / XML的声纳浇道/ SRC / sonar_backup.xml 信息:原因:org.xml.sax.SAXParseException; lineNumber:233; columnNumber:24; X ML文档结构必须在同一实体内开始和结束。 信息:传感器XmlSensor(完成)|时间= 250ms的 信息:传感器XmlFileSensor 信息:1个要分析的源文件 错误:无法解析xml文件:C:\ Build automation \ sonar-examples-master \ proje CTS \语言\ XML \ XML-声纳浇道\ SRC \ sonar_backup.xml
因此,在声纳Web界面中没有报告添加的Tab和缺少的结束语句,只是在通知中跳过了损坏的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 :(得分:0)
SonarQube有Parsing Error
(RSPEC-2260)的通用规则,但显然XML插件没有实现它。
坦率地说,拥有一个损坏的XML文件非常糟糕,如果是这样的话,你甚至不应该进行SonarQube分析。为什么?因为即使Parsing Error
规则可用于XML,它也会搞砸你的指标和相关历史记录(XML文件有 x 问题,然后所有突然只有一个,因为它不能解析,然后 x 一旦修复它再次发出)。
Fail-fast:在此之前,请使用xmllint
验证您的XML文件(请参阅this question)。如果有一个腐败的,那就没有什么意义了。