【问题标题】:Maven checkstyle plugin: Caused by: com.puppycrawl.tools.checkstyle.api.CheckstyleExceptionMaven checkstyle插件:引起:com.puppycrawl.tools.checkstyle.api.CheckstyleException
【发布时间】:2019-07-15 10:10:06
【问题描述】:

我正在尝试使用 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:无法 解析配置流 - 文档无效:没有语法 找到.:3:13 在 com.puppycrawl.tools.checkstyle.ConfigurationLoader.loadConfiguration(ConfigurationLoader.java: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;文档无效:没有语法 找到了。

有解决这个问题的建议吗?

【问题讨论】:

    标签: java gradle checkstyle maven-checkstyle-plugin


    【解决方案1】:

    我的 checkstyle.xml 如下:
    &lt;code_scheme name="CustomStyle" version="1"&gt;

    这不是 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 不兼容。

    【讨论】:

      【解决方案2】:

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

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

      应该是these .dtd files 之一。

      【讨论】:

      • 我的似乎不适合链接中提到的任何 dtds ... IntelliJ 将其识别为有效的检查样式
      • 我检查了 google checkstyle 也遵循相同的语法...这是什么意思。为了使用 maven 检查风格必须坚持特定的语法?
      猜你喜欢
      • 2011-04-28
      • 2016-04-29
      • 1970-01-01
      • 1970-01-01
      • 2013-09-12
      • 2011-09-18
      • 2011-03-17
      • 2012-09-29
      • 2011-01-22
      相关资源
      最近更新 更多