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

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

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

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

[Javaのソースで見つけた CHECKSTYLE:OFF って何？から知るCheckstyle](https://qiita.com/ponsuke0531/items/effcdbf890f850030ba3)なんて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:.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)
...省略...
```

```xml: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 &#x2013; Release Notes](https://checkstyle.org/releasenotes.html#Release_8.25)

### 対応 : `allowMissingPropertyJavadoc`を削除して`MissingJavadocMethodCheck`を追加する
> (ざっくり訳)
> このプロパティーは、8.20でMissingJavadocMethodCheckに移行したため、8.25で削除されました。前と同じ動作を継続するには、MissingJavadocMethodCheckを追加することをお勧めします。
> [checkstyle - Gradle checkstyleTest fails &quot;CheckstyleException: Property &#39;allowMissingPropertyJavadoc&#39; does not exist&quot; - Stack Overflow](https://stackoverflow.com/questions/58214442/gradle-checkstyletest-fails-checkstyleexception-property-allowmissingproperty)

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

```xml: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:.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)
...省略...
```

```xml: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 &#x2013; Release Notes](https://checkstyle.sourceforge.io/releasenotes.html)を`suppressLoadErrors`で検索しても削除された的な記述はない。
が、[checkstyle &#x2013; Javadoc Comments](https://checkstyle.sourceforge.io/config_javadoc.html#JavadocMethod)の`JavadocMethod`に`suppressLoadErrors`はない・・・なんだろう・・・きっと削除されたんだろう・・・8.26あたりで。

> (雑な訳)
> プロパティー`logLoadErrors`と`suppressLoadErrors`を廃止し、これらの機能を削除したようです。
> [upgrade to checkstyle 8.26 · Issue #246 · checkstyle/sonar-checkstyle](https://github.com/checkstyle/sonar-checkstyle/issues/246)

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

```xml: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

```text
!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)
...省略...
```

```xml: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 &#x2013; Release Notes](https://checkstyle.sourceforge.io/releasenotes.html#Release_8.24)

### 対応 : `LineLength`を`Checker`直下に移動する

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

# CheckStyleのチェック項目で関わったのぐらいは調べてみた
- 参考
    - [checkstyle &#x2013; Javadoc Comments - checkstyle.sourceforge.io](https://checkstyle.sourceforge.io/config_javadoc.html#JavadocMethod)
    - [Javadoc Comments - Checkstyle - sites.google.com](https://sites.google.com/site/checkstyle5/standard-checks/javadoc-comments)

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