0

私はGradle 2.3を使用しており、プロジェクトにはGroovyコードがあります。静的コード分析には、Codenarc を使用しています (つまり、プロジェクト フォルダーには "config/codenarc/codenarc.xml" ファイルがあります)。

build.gradle / GRADLE_HOME/init.d/top-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>
4

1 に答える 1

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">
于 2015-08-15T22:26:31.740 に答える