LoginSignup
7
14

More than 3 years have passed since last update.

EclipseのCheckStyleでCheckstyle execution failed due to an internal error.となった時の取あえずの対応方法

Last updated at Posted at 2020-03-16

※. このページには、根本的な解決方法は書いていません。解決方法のわかる方は教えてください。

EclipseのProblemビューにエラーが出た。
何年も続いているプロジェクトをインポートするとちょくちょく出る。

Discription ...省略...
Checkstyle execution failed due to an internal error. Please check the error log for details Checkstyle 問題

Javaのソースで見つけた CHECKSTYLE:OFF って何?から知るCheckstyleなんてQiitaに投稿しちゃうぐらいCheckStyleがわかっていない。
このエラーが出ていても動く・・・がプロジェクトに赤×印が出ているのは嫌。

このエラーが出たら取あえず{ワークスペースのディレクトリ}/.metadata/.logを見てみます。

事象 : Property 'allowMissingPropertyJavadoc' does not exist

  • 環境
    • Eclipse IDE for Enterprise Java Developers.Version: 2018-12 (4.10.0)
    • Eclipse Checkstyle 8.28.0.202001092018
.log
!ENTRY net.sf.eclipsecs.core 4 0 2020-03-16 10:17:02.345
!MESSAGE Checkstyle-Plugin: cannot initialize module TreeWalker - cannot initialize module JavadocMethod - Property 'allowMissingPropertyJavadoc' does not exist, please check the documentation
!STACK 0
com.puppycrawl.tools.checkstyle.api.CheckstyleException: cannot initialize module TreeWalker - cannot initialize module JavadocMethod - Property 'allowMissingPropertyJavadoc' does not exist, please check the documentation
at com.puppycrawl.tools.checkstyle.Checker.setupChild(Checker.java:473)
...省略...
checkstye.xml
<module name="Checker">
  <property name="severity" value="warning"/>
  <module name="TreeWalker">
...省略...
    <module name="JavadocMethod">
      <!-- ↓これがエラー -->
      <property name="allowMissingPropertyJavadoc" value="true"/>
      <property name="suppressLoadErrors" value="true"/>
    </module>

原因 : allowMissingPropertyJavadocがバージョン8.25で削除されたから

Release 8.25
JavadocMethodCheck: remove deprecated properties ignoreMethodNamesRegex, minLineCount, allowMissingJavadoc, allowMissingPropertyJavadoc. Author: rnveach #7096
checkstyle – Release Notes

対応 : allowMissingPropertyJavadocを削除してMissingJavadocMethodCheckを追加する

(ざっくり訳)
このプロパティーは、8.20でMissingJavadocMethodCheckに移行したため、8.25で削除されました。前と同じ動作を継続するには、MissingJavadocMethodCheckを追加することをお勧めします。
checkstyle - Gradle checkstyleTest fails "CheckstyleException: Property 'allowMissingPropertyJavadoc' does not exist" - Stack Overflow

書き方これで本当にあっているのだろうか・・・・

checkstye.xml
<module name="Checker">
  <property name="severity" value="warning"/>
  <module name="TreeWalker">
...省略...
    <module name="JavadocMethod">
      <property name="suppressLoadErrors" value="true"/>
    </module>
    <!-- ↓追加してみた -->
    <module name="MissingJavadocMethodCheck">
      <property name="allowMissingPropertyJavadoc" value="true"/>
    </module>

事象 : Property 'suppressLoadErrors' does not exist

  • 環境
    • Eclipse IDE for Enterprise Java Developers.Version: 2018-12 (4.10.0)
    • Eclipse Checkstyle 8.28.0.202001092018
.log
!ENTRY net.sf.eclipsecs.core 4 0 2020-03-16 10:53:47.566
!MESSAGE Checkstyle-Plugin: cannot initialize module TreeWalker - cannot initialize module JavadocMethod - Property 'suppressLoadErrors' does not exist, please check the documentation
!STACK 0
com.puppycrawl.tools.checkstyle.api.CheckstyleException: cannot initialize module TreeWalker - cannot initialize module JavadocMethod - Property 'suppressLoadErrors' does not exist, please check the documentation
at com.puppycrawl.tools.checkstyle.Checker.setupChild(Checker.java:473)
...省略...
checkstye.xml
<module name="Checker">
  <property name="severity" value="warning"/>
  <module name="TreeWalker">
...省略...
    <module name="JavadocMethod">
      <!-- ↓これがエラー -->
      <property name="suppressLoadErrors" value="true"/>
    </module>
    <module name="MissingJavadocMethodCheck">
      <property name="allowMissingPropertyJavadoc" value="true"/>
    </module>

原因 : suppressLoadErrorsは削除された、かもしれないから

checkstyle – Release NotessuppressLoadErrorsで検索しても削除された的な記述はない。
が、checkstyle – Javadoc CommentsJavadocMethodsuppressLoadErrorsはない・・・なんだろう・・・きっと削除されたんだろう・・・8.26あたりで。

(雑な訳)
プロパティーlogLoadErrorssuppressLoadErrorsを廃止し、これらの機能を削除したようです。
upgrade to checkstyle 8.26 · Issue #246 · checkstyle/sonar-checkstyle

対応 : 取あえずsuppressLoadErrorsを削除する

代わりに何かを定義したほうがいい気がするが、どうすればいいのかわからないので取あえず削除しておく

checkstye.xml
<module name="Checker">
  <property name="severity" value="warning"/>
  <module name="TreeWalker">
...省略...
    <module name="JavadocMethod" />
    <module name="MissingJavadocMethodCheck">
      <property name="allowMissingPropertyJavadoc" value="true"/>
    </module>

事象 : TreeWalker is not allowed as a parent of LineLength

  • 環境
    • Eclipse IDE for Enterprise Java Developers.Version: 2018-12 (4.10.0)
    • Eclipse Checkstyle 8.28.0.202001092018
!ENTRY net.sf.eclipsecs.core 4 0 2020-03-16 12:25:10.250
!MESSAGE Checkstyle-Plugin: cannot initialize module TreeWalker - TreeWalker is not allowed as a parent of LineLength Please review 'Parent Module' section for this Check in web documentation if Check is standard.
!STACK 0
com.puppycrawl.tools.checkstyle.api.CheckstyleException: cannot initialize module TreeWalker - TreeWalker is not allowed as a parent of LineLength Please review 'Parent Module' section for this Check in web documentation if Check is standard.
at com.puppycrawl.tools.checkstyle.Checker.setupChild(Checker.java:473)
...省略...
checkstye.xml
<module name="Checker">
  <property name="severity" value="warning"/>
  <module name="TreeWalker">
...省略...
    <module name="LineLength">
      <property name="max" value="120"/>
    </module>
...省略...

原因 : 8.24からLineLengthの親モジュールがTreeWalkerからCheckerになったから

Release 8.24
Change LineLength Check parent from TreeWalker to Checker. Author: rnveach, Roman Ivanov #2116
checkstyle – Release Notes

対応 : LineLengthChecker直下に移動する

checkstye.xml
<module name="Checker">
  <property name="severity" value="warning"/>
  <module name="LineLength">
    <property name="max" value="120"/>
  </module>
  <module name="TreeWalker">
...省略...

CheckStyleのチェック項目で関わったのぐらいは調べてみた

module property 説明 削除と追加情報
JavadocMethod - メソッドまたはコンストラクタのJavadocをチェックする 3.0追加
JavadocMethod allowMissingPropertyJavadoc プロパティメソッドのJavadocそのものが存在しない事を許可するかどうかを設定します。
プロパティメソッドとは、いわゆるGetter/Setterメソッドの事を指します。
8.25削除
JavadocMethod logLoadErrors 英語が難しくてよくわからない・・・ 8.26削除?
JavadocMethod suppressLoadErrors logLoadErrorsがtrueに設定されている場合、
logLoadErrorsがtrueに設定されたときに生成された違反は、
チェックスタイルレポートで違反として報告されなくなる。
8.26削除?
MissingJavadocMethod - メソッドまたはコンストラクタの欠落したJavadocコメントをチェックします。 8.21追加
MissingJavadocMethod allowMissingPropertyJavadoc プロパティ(セッターとゲッター)の
アクセサー・メソッドで欠落しているJavadocを許可するかどうかを制御します。
8.21追加
7
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
14