簡體   English   中英

ANT checkstyle 任務:找不到/訪問 AST 節點

[英]ANT checkstyle task: Can't find/access AST Node

在嘗試設置 Hudson 以使用 ANT 構建我們的項目時,我偶然發現了一個與此類似的問題。 但是,那里建議的解決方案對我不起作用。

我通過設置它自己的類路徑的 ANT 任務調用 checkstyle。

<target name="checkstyle" depends="init, staticAnalysisInit">
    <mkdir dir="${checkstyle.dir}"/>
    <path id="checkstyle.classpath">
        <fileset dir="${env.CHECKSTYLE_HOME}">
            <include name="*.jar"/>
            <exclude name="*all.jar"/>
            <!-- already bundled with ANT distributions and causes problems -->
            <exclude name="antlr*.jar"/> 
        </fileset>
    </path>
    <property name="chkstyl.cp" refid="checkstyle.classpath"/>
    <echo>Checkstyle classpath: ${chkstyl.cp}</echo>
    <taskdef name="checkstyle" 
             classpathref="checkstyle.classpath" 
             classname="com.puppycrawl.tools.checkstyle.CheckStyleTask"/>
    <checkstyle config="${env.CHECKSTYLE_HOME}/sun_checks.xml"
                failOnViolation="false">
        <formatter type="xml" toFile="${checkstyle.dir}/checkstyle.xml"/>
        <fileset dir="${src.dir}">
            <include name="**/*.java"/>
        </fileset>
    </checkstyle>
</target>

它給了我以下 output:

init:

staticAnalysisInit:

checkstyle:
     [echo] Checkstyle classpath: C:\Program Files (x86)\Checkstyle\checkstyle-5.6\checkstyle-5.6.jar;C:\Program Files (x86)\Checkstyle\checkstyle-5.6\commons-beanutils-core-1.8.3.jar;C:\Program Files (x86)\Checkstyle\checkstyle-5.6\commons-cli-1.2.jar;C:\Program Files (x86)\Checkstyle\checkstyle-5.6\commons-logging-1.1.1.jar;C:\Program Files (x86)\Checkstyle\checkstyle-5.6\google-collections-1.0.jar
[checkstyle] Running Checkstyle 5.6 on 1025 files
[checkstyle] Can't find/access AST Node typecom.puppycrawl.tools.checkstyle.api.DetailAST
[checkstyle] Can't find/access AST Node typecom.puppycrawl.tools.checkstyle.api.DetailAST
[checkstyle] Can't find/access AST Node typecom.puppycrawl.tools.checkstyle.api.DetailAST
...

相同的 output 在我的 IDE 中生成(自己的 ANT 實例具有相同的 antlr.jar 手動添加到它的類路徑),命令行和哈德遜(后兩者使用 1.8.3 ANT 的通常分布,存在於$ANT_HOME/lib$ANT_HOME/lib )。

到目前為止,我設法讓它工作的唯一方法是在 IDE 內部(刪除了手動添加的 antlr.jar 類路徑條目,並將 checkstyle-5.6-all.jar 用於任務類路徑)。

ant 和 checkstyle 發行版中都包含相同版本的 antlr。 事實上,如果將它們中的任何一個包含在 ant 庫類路徑中(並且不使用 checkstyle-5.6-all.jar),它在我的 IDE 中不起作用。

我究竟做錯了什么?

我放棄了試圖解決這個問題。 checkstyle.classpath更改為

<path id="checkstyle.classpath">
    <fileset dir="${env.CHECKSTYLE_HOME}">
        <include name="*all.jar"/>
    </fileset>
</path>

並刪除$ANT_HOME/lib的antlr.jar,可能會破壞東西。

仍在尋找潛在的答案。

有關更多信息,請參閱此GitHub線程: https//github.com/kframework/k/issues/659

我嘗試使用 checkstyle-10.5.0-all.jar 並且它有效

對於 jdk 11,使用 checkstyle 版本 > 10 對於 jdk 8,使用 checkstyle 版本 checkstyle-9.1-all.jar

checkstyle-*-all.jar 將所有 jars 放在 1 個位置並添加到類路徑中,否則我們需要一一添加個人 jars

這樣做,我們不需要從類路徑中刪除 antlr

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM