2015-08-15 33 views
0

我使用的是Gradle 2.3,项目有Groovy代码。对于静态代码分析,我使用Codenarc(即项目文件夹具有“config/codenarc/codenarc.xml”文件)。Groovy Codenarc.xml org.xml.sax.SAXParseException xsi:schemaLocation与元素类型规则集没有关联没有绑定

在的build.gradle/GRADLE_HOME/init.d /的顶级level.gradle文件,我有:

apply plugin: 'codenarc' 

    codenarc { 
    ignoreFailures = true 
    configFile = file("config/codenarc/codenarc.xml") 
    } 

但是在编译这个项目,我发现了以下错误。

13:49:00 :codenarcAcceptanceTest UP-TO-DATE 
13:49:01 :codenarcIntegrationTest FAILED 
13:49:01 
13:49:01 FAILURE: Build failed with an exception. 
13:49:01 
13:49:01 * What went wrong: 
13:49:01 Execution failed for task ':codenarcIntegrationTest'. 
13:49:01 > org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 173; The prefix "xsi" for attribute "xsi:schemaLocation" associated with an element type "ruleset" is not bound. 
13:49:01 
13:49:01 * Try: 
13:49:01 Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. 
13:49:01 
13:49:01 BUILD FAILED 

在codenarc.xml文件的文件内容是:

<ruleset xsi:schemaLocation="http://codenarc.org/ruleset/1.0 http://codenarc.org/ruleset-schema.xsd" xsi:noNamespaceSchemaLocation="http://codenarc.org/ruleset-schema.xsd"> 
    <description>Sample rule set</description> 
    <ruleset-ref path="rulesets/basic.xml"/> 
    <ruleset-ref path="rulesets/braces.xml"> 
     <rule-config name="IfStatementBraces"> 
     <property name="priority" value="3"/> 
     </rule-config> 
    </ruleset-ref> 
    <ruleset-ref path="rulesets/concurrency.xml"/> 
    <ruleset-ref path="rulesets/convention.xml"/> 
    <ruleset-ref path="rulesets/design.xml"/> 
    <ruleset-ref path="rulesets/dry.xml"> 
     <rule-config name="DuplicateStringLiteral"> 
     <property name="doNotApplyToClassNames" value="*Spec"/> 
     </rule-config> 
     <rule-config name="DuplicateNumberLiteral"> 
     <property name="doNotApplyToClassNames" value="*Spec"/> 
     </rule-config> 
     <rule-config name="DuplicateMapLiteral"> 
     <property name="doNotApplyToClassNames" value="*Spec"/> 
     </rule-config> 
     <rule-config name="DuplicateListLiteral"> 
     <property name="doNotApplyToClassNames" value="*Spec"/> 
     </rule-config> 
    </ruleset-ref> 
    <ruleset-ref path="rulesets/exceptions.xml"/> 
    <ruleset-ref path="rulesets/formatting.xml"/> 
    <ruleset-ref path="rulesets/generic.xml"/> 
    <ruleset-ref path="rulesets/grails.xml"/> 
    <ruleset-ref path="rulesets/groovyism.xml"/> 
    <ruleset-ref path="rulesets/imports.xml"> 
     <exclude name="MisorderedStaticImports"/> 
    </ruleset-ref> 
    <ruleset-ref path="rulesets/jdbc.xml"/> 
    <ruleset-ref path="rulesets/junit.xml"/> 
    <ruleset-ref path="rulesets/logging.xml"/> 
    <ruleset-ref path="rulesets/naming.xml"> 
     <rule-config name="FieldName"> 
     <property name="ignoreFieldNames" value="log"/> 
     </rule-config> 
     <rule-config name="MethodName"> 
     <property name="doNotApplyToClassNames" value="*Spec"/> 
     </rule-config> 
     <exclude name="FactoryMethodName"/> 
    </ruleset-ref> 
    <ruleset-ref path="rulesets/security.xml"> 
     <exclude name="JavaIoPackageAccess"/> 
    </ruleset-ref> 
    <ruleset-ref path="rulesets/serialization.xml"/> 
    <ruleset-ref path="rulesets/size.xml"/> 
    <ruleset-ref path="rulesets/unnecessary.xml"> 
     <exclude name="UnnecessaryPackageReference"/> 
    </ruleset-ref> 
    <ruleset-ref path="rulesets/unused.xml"/> 
</ruleset> 

回答

1

的XML不知道什么xsi是你必须将其添加为从正确的命名空间URL前缀。尝试以下标题:

<ruleset xmlns="http://codenarc.org/ruleset/1.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://codenarc.org/ruleset/1.0 http://codenarc.org/ruleset-schema.xsd" 
    xsi:noNamespaceSchemaLocation="http://codenarc.org/ruleset-schema.xsd"> 
+0

同意,做同样的修复它。这是我得到这个问题的原因。我“意外地”使用了一些美化 –

相关问题