2015-08-15 1 views
0

J'utilise Gradle 2.3 et projet a le code Groovy. Pour une analyse statique de code, j'utilise Codenarc (ce dossier du projet a fichier « config/codenarc/de codenarc.xml »).Groovy Codenarc.xml org.xml.sax.SAXParseException xsi: schemaLocation non associé au type d'élément lié ruleset non

Dans le build.gradle/GRADLE_HOME/init.d/fichier top-level.gradle, j'ai:

apply plugin: 'codenarc' 

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

Mais lors de la compilation de ce projet, je reçois l'erreur suivante.

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 

Contenu du fichier dans un fichier codenarc.xml sont:

<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> 

Répondre

1

Le xml ne savait pas ce que xsi est que vous avez ajouter ce préfixe de l'URL d'espace de nom correct. Essayez l'en-tête suivant:

<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

d'accord, a fait de même pour le réparer. Voici la raison pour laquelle je suis arrivé cette question. I « accidentellement » utilisé quelques beautification –