Groovy Codenarc.xml org.xml.sax.SAXParseException xsi:schemaLocation 未关联元素类型规则集未绑定
Groovy Codenarc.xml org.xml.sax.SAXParseException xsi:schemaLocation not associated with element type ruleset not bound
我正在使用 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>
xml 不知道 xsi
是什么,您已从正确的命名空间 url 添加此作为前缀。尝试以下 header:
<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">
我正在使用 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>
xml 不知道 xsi
是什么,您已从正确的命名空间 url 添加此作为前缀。尝试以下 header:
<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">