1

我正在尝试使用 gradle(在 java 11 中)项目配置 checkstyle 插件,如下所示:

checkstyle {
    toolVersion = '8.2'
    configFile = rootProject.file('config/checkstyle/checkstyle.xml')
    configProperties = [
            'checkstyle.cache.file': "${buildDir}/checkstyle.cache",
    ]
    ignoreFailures = true
    showViolations = true
}

我的 checkstyle.xml 如下:

<?xml version="1.0"?>

<code_scheme name="CustomStyle" version="1">
  <AndroidXmlCodeStyleSettings>
    <option name="USE_CUSTOM_SETTINGS" value="true"/>
    <option name="LAYOUT_SETTINGS">
      <value>
        <option name="INSERT_BLANK_LINE_BEFORE_TAG" value="false"/>
      </value>
    </option>

……

我得到了以下异常

原因:com.puppycrawl.tools.checkstyle.api.CheckstyleException:无法解析配置流 - 文档无效:找不到语法。com.puppycrawl.tools.checkstyle.ConfigurationLoader.loadConfiguration(ConfigurationLoader.java:3:13: 441) 在 com.puppycrawl.tools.checkstyle.ConfigurationLoader.loadConfiguration(ConfigurationLoader.java:386) 在 com.puppycrawl.tools.checkstyle.ant.CheckstyleAntTask.createRootModule(CheckstyleAntTask.java:407) ... 106 更多原因: org.xml.sax.SAXParseException;systemId:文件:/home/workspace/service/config/checkstyle/checkstyle.xml;行号:3;列号:13;文档无效:未找到语法。

任何解决此问题的指示?

4

2 回答 2

2

我的 checkstyle.xml 如下:
<code_scheme name="CustomStyle" version="1">

这不是 checkstyle 的正确标记。Checkstyle 配置如下:

<?xml version="1.0"?>
<!DOCTYPE module PUBLIC
          "-//Puppy Crawl//DTD Check Configuration 1.3//EN"
          "https://checkstyle.org/dtds/configuration_1_3.dtd">

<module name="Checker">
    <property name="charset" value="UTF-8"/>

    <module name="TreeWalker">
    </module>
</module>

您可以阅读https://checkstyle.sourceforge.io/config.html了解更多信息。

看起来你给它的是一个 IntelliJ 配置文件。无论哪种方式,它都与 checkstyle 不兼容。

于 2019-07-20T20:11:39.990 回答
0

您需要定义要检查的内容;例如:

<!DOCTYPE module PUBLIC
    "-//Checkstyle//DTD Checkstyle Configuration 1.3//EN"
    "https://checkstyle.org/dtds/configuration_1_3.dtd">

这应该是这些 .dtd 文件之一。

于 2019-07-15T10:14:44.287 回答