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