From 5e0f2e933381eefe6d12829101ae7ab15e1b52bd Mon Sep 17 00:00:00 2001 From: tsh-hashimoto Date: Tue, 21 Jul 2026 01:58:21 +0000 Subject: [PATCH 1/7] Fix javadoc CI to actually fail on warnings The workflow ran `./gradlew javadoc` twice: the first run marked the task up-to-date, so the second (tee'd to javadoc.log) was skipped and produced no output. The warning grep then matched nothing and the job always passed. Run javadoc only once, capturing its output to the log. Co-Authored-By: Claude Opus 4.8 (1M context) --- .github/workflows/javadoc.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/javadoc.yml b/.github/workflows/javadoc.yml index e14611f5..624ab340 100644 --- a/.github/workflows/javadoc.yml +++ b/.github/workflows/javadoc.yml @@ -21,6 +21,5 @@ jobs: - name: Run javadoc working-directory: libcobj run: | - ./gradlew javadoc ./gradlew javadoc | tee javadoc.log test "$(grep '[1-9][0-9]* warning' javadoc.log)" = "" \ No newline at end of file From d6a532d6063e16ab46ec43c2b0439456583c23f5 Mon Sep 17 00:00:00 2001 From: tsh-hashimoto Date: Tue, 21 Jul 2026 02:03:43 +0000 Subject: [PATCH 2/7] Capture javadoc stderr so CI fails on warnings Javadoc writes its warnings (including the "N warnings" summary) to stderr, but the pipeline only tee'd stdout to javadoc.log, so the warning grep never matched and the job always passed. Redirect stderr into the log with 2>&1. Co-Authored-By: Claude Opus 4.8 (1M context) --- .github/workflows/javadoc.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/javadoc.yml b/.github/workflows/javadoc.yml index 624ab340..159e9f94 100644 --- a/.github/workflows/javadoc.yml +++ b/.github/workflows/javadoc.yml @@ -21,5 +21,5 @@ jobs: - name: Run javadoc working-directory: libcobj run: | - ./gradlew javadoc | tee javadoc.log + ./gradlew javadoc 2>&1 | tee javadoc.log test "$(grep '[1-9][0-9]* warning' javadoc.log)" = "" \ No newline at end of file From 028647b12eb0cf08d3f7d5f68f9cec47e22e4c78 Mon Sep 17 00:00:00 2001 From: tsh-hashimoto Date: Tue, 21 Jul 2026 02:13:50 +0000 Subject: [PATCH 3/7] Add private constructors to static utility classes for javadoc These classes expose only static members and are never instantiated. Adding a documented private constructor silences the "use of default constructor, which does not provide a comment" javadoc warning and also prevents accidental instantiation. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../main/java/jp/osscons/opensourcecobol/libcobj/Const.java | 3 +++ .../jp/osscons/opensourcecobol/libcobj/call/CobolResolve.java | 3 +++ .../opensourcecobol/libcobj/call/CobolSystemRoutine.java | 3 +++ .../opensourcecobol/libcobj/common/CobolCallParams.java | 3 +++ .../jp/osscons/opensourcecobol/libcobj/common/CobolCheck.java | 3 +++ .../osscons/opensourcecobol/libcobj/common/CobolConstant.java | 3 +++ .../osscons/opensourcecobol/libcobj/common/CobolInspect.java | 3 +++ .../osscons/opensourcecobol/libcobj/common/CobolIntrinsic.java | 3 +++ .../jp/osscons/opensourcecobol/libcobj/common/CobolString.java | 3 +++ .../jp/osscons/opensourcecobol/libcobj/common/CobolUtil.java | 3 +++ .../opensourcecobol/libcobj/data/CobolFieldFactory.java | 3 +++ .../opensourcecobol/libcobj/exceptions/CobolExceptionId.java | 3 +++ .../opensourcecobol/libcobj/exceptions/CobolExceptionInfo.java | 3 +++ .../libcobj/exceptions/CobolExceptionTabCode.java | 3 +++ .../osscons/opensourcecobol/libcobj/file/CobolFileFactory.java | 3 +++ .../jp/osscons/opensourcecobol/libcobj/file/CobolFileSort.java | 3 +++ .../osscons/opensourcecobol/libcobj/termio/CobolTerminal.java | 3 +++ 17 files changed, 51 insertions(+) diff --git a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/Const.java b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/Const.java index 04963ab9..6c4ad94a 100644 --- a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/Const.java +++ b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/Const.java @@ -22,6 +22,9 @@ /** TODO: 準備中 */ public class Const { + /** このクラスはインスタンス化しない。 */ + private Const() {} + /** TODO: 準備中 */ public static final String version = "2.0.0"; } diff --git a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/call/CobolResolve.java b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/call/CobolResolve.java index 565ee3c7..c4f1e25e 100644 --- a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/call/CobolResolve.java +++ b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/call/CobolResolve.java @@ -34,6 +34,9 @@ /** 動的にクラスファイルを読み込んでCALL文のような機能を実装するためのクラス */ public class CobolResolve { + /** このクラスはインスタンス化しない。 */ + private CobolResolve() {} + /** プログラム名とCobolRunnableインスタンスの対応表 */ private static Map callTable; diff --git a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/call/CobolSystemRoutine.java b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/call/CobolSystemRoutine.java index 32218cbc..98fed213 100644 --- a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/call/CobolSystemRoutine.java +++ b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/call/CobolSystemRoutine.java @@ -35,6 +35,9 @@ /** 組み込み関数を提供するクラス */ public class CobolSystemRoutine { + /** このクラスはインスタンス化しない。 */ + private CobolSystemRoutine() {} + private static final boolean runsOnWindows = "\\".equals(System.getProperty("file.separator")); /** diff --git a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolCallParams.java b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolCallParams.java index 9932f8a3..73301fda 100644 --- a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolCallParams.java +++ b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolCallParams.java @@ -24,6 +24,9 @@ * 呼び出されたプログラム側でこの値を参照することで、省略された引数の判定などに利用する。 */ public class CobolCallParams { + /** このクラスはインスタンス化しない。 */ + private CobolCallParams() {} + /** CALL文で渡された引数の個数 */ public static int callParams = 0; } diff --git a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolCheck.java b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolCheck.java index 632b2a9b..fdc7671b 100644 --- a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolCheck.java +++ b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolCheck.java @@ -30,6 +30,9 @@ * 範囲外の場合は{@link CobolExceptionId#COB_EC_BOUND_SUBSCRIPT}を設定し、実行時エラーを出力して実行を中止する。 */ public class CobolCheck { + /** このクラスはインスタンス化しない。 */ + private CobolCheck() {} + /** * 表の添字が指定された範囲内にあるかを検査する。
* 範囲外の場合は例外を設定し、実行時エラーメッセージを出力して実行を中止する。 diff --git a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolConstant.java b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolConstant.java index bd07f9b6..4a793bbf 100644 --- a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolConstant.java +++ b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolConstant.java @@ -29,6 +29,9 @@ * 各種バッファサイズ、10のべき乗表などをまとめて定義する。 */ public class CobolConstant { + /** このクラスはインスタンス化しない。 */ + private CobolConstant() {} + /** 英数字のALL定数(SPACE・ZEROなどの形象定数)に用いる属性 */ public static final CobolFieldAttribute allAttr = new CobolFieldAttribute(CobolFieldAttribute.COB_TYPE_ALPHANUMERIC_ALL, 0, 0, 0, null); diff --git a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolInspect.java b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolInspect.java index c654b73e..5932ea8d 100644 --- a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolInspect.java +++ b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolInspect.java @@ -36,6 +36,9 @@ * という手順で実行する。 */ public class CobolInspect { + /** このクラスはインスタンス化しない。 */ + private CobolInspect() {} + /** 一致する文字をすべて対象とする(INSPECT ... ALLに対応) */ private static final int INSPECT_ALL = 0; diff --git a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolIntrinsic.java b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolIntrinsic.java index dfde3910..461bf3ed 100644 --- a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolIntrinsic.java +++ b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolIntrinsic.java @@ -47,6 +47,9 @@ */ public class CobolIntrinsic { + /** このクラスはインスタンス化しない。 */ + private CobolIntrinsic() {} + /** 各月初日までの通日(非うるう年)。インデックスは月(0〜12)。 */ private static int[] normalDays = {0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365}; diff --git a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolString.java b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolString.java index fb3f404b..03306036 100644 --- a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolString.java +++ b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolString.java @@ -47,6 +47,9 @@ class Dlm { * @see AbstractCobolField */ public class CobolString { + /** このクラスはインスタンス化しない。 */ + private CobolString() {} + /** UNSTRING文の区切り文字リストの既定の確保数。 */ private static final int DLM_DEFAULT_NUM = 8; diff --git a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolUtil.java b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolUtil.java index 725b4395..d1b9b2d2 100755 --- a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolUtil.java +++ b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolUtil.java @@ -39,6 +39,9 @@ * 文字列比較などのヘルパー処理をまとめて提供する。 */ public class CobolUtil { + /** このクラスはインスタンス化しない。 */ + private CobolUtil() {} + /** I/O操作でREWRITEを暗黙的に行うとみなすかどうかのフラグ(環境変数COB_IO_ASSUME_REWRITEで設定)。 */ private static boolean cob_io_assume_rewrite = false; diff --git a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/data/CobolFieldFactory.java b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/data/CobolFieldFactory.java index 71ce008b..bfacb276 100644 --- a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/data/CobolFieldFactory.java +++ b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/data/CobolFieldFactory.java @@ -23,6 +23,9 @@ /** AbstractCobolFieldのサブクラスを生成するためのメソッドを定義するクラス */ public class CobolFieldFactory { + /** このクラスはインスタンス化しない。 */ + private CobolFieldFactory() {} + /** * 引数に応じて適切なAbstractCobolFieldクラスのサブクラスを生成する. * 特にattrに設定された値に応じて適切なAbstractCobolFieldのサブクラスのインスタンスを生成する. diff --git a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/exceptions/CobolExceptionId.java b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/exceptions/CobolExceptionId.java index 7e54a672..6e736f4f 100644 --- a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/exceptions/CobolExceptionId.java +++ b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/exceptions/CobolExceptionId.java @@ -20,6 +20,9 @@ /** 例外コードを定義するクラス */ public class CobolExceptionId { + /** このクラスはインスタンス化しない。 */ + private CobolExceptionId() {} + /** この例外コードは使用されない */ public static final int COB_EC_ZERO = 0; diff --git a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/exceptions/CobolExceptionInfo.java b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/exceptions/CobolExceptionInfo.java index ab7215ae..14fa21ee 100644 --- a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/exceptions/CobolExceptionInfo.java +++ b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/exceptions/CobolExceptionInfo.java @@ -20,6 +20,9 @@ /** エラーコードを保持する。 */ public class CobolExceptionInfo { + /** このクラスはインスタンス化しない。 */ + private CobolExceptionInfo() {} + /** * 現在のエラーコード。CobolExceptionTabCode.codeテーブルから取得した16進数のエラーコードが格納される。 * CobolRuntimeExceptionとは異なりコンテキスト情報は保持せず、エラーコードのみを管理する。 diff --git a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/exceptions/CobolExceptionTabCode.java b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/exceptions/CobolExceptionTabCode.java index 78587610..128cfd1c 100644 --- a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/exceptions/CobolExceptionTabCode.java +++ b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/exceptions/CobolExceptionTabCode.java @@ -23,6 +23,9 @@ * codeテーブルのインデックスはCobolExceptionIdの定数値に対応し、値はCOBOL標準で規定された16進数のエラーコードである。 */ public class CobolExceptionTabCode { + /** このクラスはインスタンス化しない。 */ + private CobolExceptionTabCode() {} + /** CobolExceptionIdの例外IDをインデックスとし、対応する16進数のCOBOLエラーコードを格納する配列 */ static int[] code = { 0, 0xFFFF, 0x0100, 0x0101, 0x0102, 0x0200, 0x0201, 0x0202, 0x0203, 0x0204, 0x0205, 0x0206, diff --git a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/file/CobolFileFactory.java b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/file/CobolFileFactory.java index bbec6a1e..cd8aade5 100644 --- a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/file/CobolFileFactory.java +++ b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/file/CobolFileFactory.java @@ -23,6 +23,9 @@ /** TODO: 準備中 */ public class CobolFileFactory { + /** このクラスはインスタンス化しない。 */ + private CobolFileFactory() {} + /** * TODO: 準備中 * diff --git a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/file/CobolFileSort.java b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/file/CobolFileSort.java index 24a48249..f2036f78 100644 --- a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/file/CobolFileSort.java +++ b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/file/CobolFileSort.java @@ -37,6 +37,9 @@ /** TODO: 準備中 */ public class CobolFileSort { + /** このクラスはインスタンス化しない。 */ + private CobolFileSort() {} + /** TODO: 準備中 */ protected static final int COBSORTEND = 1; diff --git a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/termio/CobolTerminal.java b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/termio/CobolTerminal.java index 22fb3462..c60c7a5f 100644 --- a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/termio/CobolTerminal.java +++ b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/termio/CobolTerminal.java @@ -40,6 +40,9 @@ /** DISPLAY文やACCEPT文に関するメソッドを実装するクラス */ public class CobolTerminal { + /** このクラスはインスタンス化しない。 */ + private CobolTerminal() {} + /** DISPLAY文で設定されたコマンドラインデータのバイト数 */ private static int commlncnt = 0; From 22f4d9b0cca8c47f8795bf106345deb0b2d02373 Mon Sep 17 00:00:00 2001 From: tsh-hashimoto Date: Tue, 21 Jul 2026 02:14:37 +0000 Subject: [PATCH 4/7] Add documented default constructors to data classes for javadoc CobolCallResult, CobolFileKey, KeyComponent and Linage are instantiated data classes with no explicit constructor. Declare an explicit, documented public no-arg constructor to silence the "use of default constructor, which does not provide a comment" javadoc warning while keeping the existing behavior. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../jp/osscons/opensourcecobol/libcobj/file/CobolFileKey.java | 3 +++ .../jp/osscons/opensourcecobol/libcobj/file/KeyComponent.java | 3 +++ .../java/jp/osscons/opensourcecobol/libcobj/file/Linage.java | 3 +++ .../jp/osscons/opensourcecobol/libcobj/ui/CobolCallResult.java | 3 +++ 4 files changed, 12 insertions(+) diff --git a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/file/CobolFileKey.java b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/file/CobolFileKey.java index e59edd4a..0699e802 100644 --- a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/file/CobolFileKey.java +++ b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/file/CobolFileKey.java @@ -22,6 +22,9 @@ /** TODO: 準備中 */ public class CobolFileKey { + /** 新しいインスタンスを生成する。 */ + public CobolFileKey() {} + /** TODO: 準備中 */ public static final int COB_MAX_KEY_COMPONENTS = 8; diff --git a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/file/KeyComponent.java b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/file/KeyComponent.java index fe0c566d..cf617ee4 100644 --- a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/file/KeyComponent.java +++ b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/file/KeyComponent.java @@ -22,6 +22,9 @@ /** TODO: 準備中 */ public class KeyComponent { + /** 新しいインスタンスを生成する。 */ + public KeyComponent() {} + /** TODO: 準備中 */ public AbstractCobolField field; diff --git a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/file/Linage.java b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/file/Linage.java index 8d26279c..3cc2a883 100644 --- a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/file/Linage.java +++ b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/file/Linage.java @@ -22,6 +22,9 @@ /** TODO: 準備中 */ public class Linage { + /** 新しいインスタンスを生成する。 */ + public Linage() {} + private AbstractCobolField linage; private AbstractCobolField linageCtr; private AbstractCobolField latfoot; diff --git a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/ui/CobolCallResult.java b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/ui/CobolCallResult.java index 8057084b..8c319561 100644 --- a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/ui/CobolCallResult.java +++ b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/ui/CobolCallResult.java @@ -6,6 +6,9 @@ * 対応しない型のgetメソッドを呼び出した場合は{@link CobolResultSetException}がスローされる。 */ public class CobolCallResult { + /** 新しいインスタンスを生成する。 */ + public CobolCallResult() {} + /** * 結果をint型として取得する。 * From faa11529d75048bd0d08e7fd51386334885f818d Mon Sep 17 00:00:00 2001 From: tsh-hashimoto Date: Tue, 21 Jul 2026 02:16:10 +0000 Subject: [PATCH 5/7] Add @return to C$SLEEP javadoc The C$SLEEP method returns an int status code but its javadoc had no @return tag, triggering a "no @return" javadoc warning. Document that it always returns 0. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../osscons/opensourcecobol/libcobj/call/CobolSystemRoutine.java | 1 + 1 file changed, 1 insertion(+) diff --git a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/call/CobolSystemRoutine.java b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/call/CobolSystemRoutine.java index 98fed213..cb8c66d7 100644 --- a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/call/CobolSystemRoutine.java +++ b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/call/CobolSystemRoutine.java @@ -141,6 +141,7 @@ public static int SYSTEM(AbstractCobolField cmd) { * opensource COBOLのlibcob/common.cのcob_acuw_sleep関数に相当する * * @param data C$SLEEPの引数として指定されたCOBOL変数のバイト列。 + * @return 常に0(正常終了を表す戻り値)。 */ @SuppressWarnings("PMD.AvoidDollarSigns") public static int C$SLEEP(CobolDataStorage data) { From 305b4d4b7a1d9436bab3e04b46a2906e8000d710 Mon Sep 17 00:00:00 2001 From: tsh-hashimoto Date: Tue, 21 Jul 2026 02:23:08 +0000 Subject: [PATCH 6/7] Revert javadoc.yml CI changes Restore the workflow to its original form. Making the check actually fail on warnings surfaces a pre-existing "source/target value 8 is obsolete" compiler warning whose fix (bumping the Java source/target level) needs team approval. Revert for now; the javadoc doclint warnings themselves have been fixed separately. Co-Authored-By: Claude Opus 4.8 (1M context) --- .github/workflows/javadoc.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/javadoc.yml b/.github/workflows/javadoc.yml index 159e9f94..e14611f5 100644 --- a/.github/workflows/javadoc.yml +++ b/.github/workflows/javadoc.yml @@ -21,5 +21,6 @@ jobs: - name: Run javadoc working-directory: libcobj run: | - ./gradlew javadoc 2>&1 | tee javadoc.log + ./gradlew javadoc + ./gradlew javadoc | tee javadoc.log test "$(grep '[1-9][0-9]* warning' javadoc.log)" = "" \ No newline at end of file From 7f7e698a076c07945bc237c507118153e879a1db Mon Sep 17 00:00:00 2001 From: tsh-hashimoto Date: Tue, 21 Jul 2026 02:41:58 +0000 Subject: [PATCH 7/7] Satisfy PMD after javadoc constructor changes The javadoc doclint fixes introduced PMD violations in static-analysis: - Static utility classes now have only a private constructor, so PMD's ClassWithOnlyPrivateConstructorsShouldBeFinal fired. Mark them final. - The documented no-arg constructors on the data classes (CobolFileKey, KeyComponent, Linage, CobolCallResult) trip UnnecessaryConstructor, which the repo enables while disabling UncommentedEmptyConstructor. Keep the documented constructors and suppress the rule locally. - Making CobolFileSort final surfaced protected fields (AvoidProtectedFieldInFinalClass); they are only used internally, so reduce them to private. That in turn revealed COB_DESCENDING as an unused private field, so remove the dead constant. Verified locally: spotlessCheck, pmdMain, spotbugsMain pass and javadoc emits no doclint warnings. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../osscons/opensourcecobol/libcobj/Const.java | 2 +- .../libcobj/call/CobolResolve.java | 2 +- .../libcobj/call/CobolSystemRoutine.java | 2 +- .../libcobj/common/CobolCallParams.java | 2 +- .../libcobj/common/CobolCheck.java | 2 +- .../libcobj/common/CobolConstant.java | 2 +- .../libcobj/common/CobolInspect.java | 2 +- .../libcobj/common/CobolIntrinsic.java | 2 +- .../libcobj/common/CobolString.java | 2 +- .../libcobj/common/CobolUtil.java | 2 +- .../libcobj/data/CobolFieldFactory.java | 2 +- .../libcobj/exceptions/CobolExceptionId.java | 2 +- .../libcobj/exceptions/CobolExceptionInfo.java | 2 +- .../exceptions/CobolExceptionTabCode.java | 2 +- .../libcobj/file/CobolFileFactory.java | 2 +- .../libcobj/file/CobolFileKey.java | 1 + .../libcobj/file/CobolFileSort.java | 17 +++++++---------- .../libcobj/file/KeyComponent.java | 1 + .../opensourcecobol/libcobj/file/Linage.java | 1 + .../libcobj/termio/CobolTerminal.java | 2 +- .../libcobj/ui/CobolCallResult.java | 1 + 21 files changed, 27 insertions(+), 26 deletions(-) diff --git a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/Const.java b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/Const.java index 6c4ad94a..c9a1da5d 100644 --- a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/Const.java +++ b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/Const.java @@ -20,7 +20,7 @@ package jp.osscons.opensourcecobol.libcobj; /** TODO: 準備中 */ -public class Const { +public final class Const { /** このクラスはインスタンス化しない。 */ private Const() {} diff --git a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/call/CobolResolve.java b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/call/CobolResolve.java index c4f1e25e..d523828b 100644 --- a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/call/CobolResolve.java +++ b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/call/CobolResolve.java @@ -32,7 +32,7 @@ import jp.osscons.opensourcecobol.libcobj.exceptions.CobolStopRunException; /** 動的にクラスファイルを読み込んでCALL文のような機能を実装するためのクラス */ -public class CobolResolve { +public final class CobolResolve { /** このクラスはインスタンス化しない。 */ private CobolResolve() {} diff --git a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/call/CobolSystemRoutine.java b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/call/CobolSystemRoutine.java index cb8c66d7..1f713618 100644 --- a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/call/CobolSystemRoutine.java +++ b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/call/CobolSystemRoutine.java @@ -34,7 +34,7 @@ import jp.osscons.opensourcecobol.libcobj.exceptions.CobolStopRunException; /** 組み込み関数を提供するクラス */ -public class CobolSystemRoutine { +public final class CobolSystemRoutine { /** このクラスはインスタンス化しない。 */ private CobolSystemRoutine() {} diff --git a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolCallParams.java b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolCallParams.java index 73301fda..c55c985b 100644 --- a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolCallParams.java +++ b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolCallParams.java @@ -23,7 +23,7 @@ * libcobのcob_call_paramsに対応し、USING句で渡された実引数の個数を表す。
* 呼び出されたプログラム側でこの値を参照することで、省略された引数の判定などに利用する。 */ -public class CobolCallParams { +public final class CobolCallParams { /** このクラスはインスタンス化しない。 */ private CobolCallParams() {} diff --git a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolCheck.java b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolCheck.java index fdc7671b..604cf00b 100644 --- a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolCheck.java +++ b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolCheck.java @@ -29,7 +29,7 @@ * 表(OCCURS)の添字や、OCCURS DEPENDING ONの可変回数が範囲内にあるかを検査する。
* 範囲外の場合は{@link CobolExceptionId#COB_EC_BOUND_SUBSCRIPT}を設定し、実行時エラーを出力して実行を中止する。 */ -public class CobolCheck { +public final class CobolCheck { /** このクラスはインスタンス化しない。 */ private CobolCheck() {} diff --git a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolConstant.java b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolConstant.java index 4a793bbf..51929cce 100644 --- a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolConstant.java +++ b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolConstant.java @@ -28,7 +28,7 @@ * ZERO・SPACE・HIGH-VALUE・LOW-VALUE・QUOTEなどの形象定数や、それらの全角(ZEN)版、 * 各種バッファサイズ、10のべき乗表などをまとめて定義する。 */ -public class CobolConstant { +public final class CobolConstant { /** このクラスはインスタンス化しない。 */ private CobolConstant() {} diff --git a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolInspect.java b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolInspect.java index 5932ea8d..79e22bd0 100644 --- a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolInspect.java +++ b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolInspect.java @@ -35,7 +35,7 @@ * {@link #all(AbstractCobolField, AbstractCobolField)}などで計数・置換を行い、最後に{@link #finish()}で確定する * という手順で実行する。 */ -public class CobolInspect { +public final class CobolInspect { /** このクラスはインスタンス化しない。 */ private CobolInspect() {} diff --git a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolIntrinsic.java b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolIntrinsic.java index 461bf3ed..85363a5e 100644 --- a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolIntrinsic.java +++ b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolIntrinsic.java @@ -45,7 +45,7 @@ * 各組み込み関数を、{@code funcXxx}という名前の静的メソッドとして提供する。
* 各メソッドは計算結果を{@link AbstractCobolField}として返す。 */ -public class CobolIntrinsic { +public final class CobolIntrinsic { /** このクラスはインスタンス化しない。 */ private CobolIntrinsic() {} diff --git a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolString.java b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolString.java index 03306036..65f21c18 100644 --- a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolString.java +++ b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolString.java @@ -46,7 +46,7 @@ class Dlm { * * @see AbstractCobolField */ -public class CobolString { +public final class CobolString { /** このクラスはインスタンス化しない。 */ private CobolString() {} diff --git a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolUtil.java b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolUtil.java index d1b9b2d2..65773e08 100755 --- a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolUtil.java +++ b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/common/CobolUtil.java @@ -38,7 +38,7 @@ * ランタイムエラーの報告、SWITCHの設定・取得、参照修飾(reference modification)の境界チェック、
* 文字列比較などのヘルパー処理をまとめて提供する。 */ -public class CobolUtil { +public final class CobolUtil { /** このクラスはインスタンス化しない。 */ private CobolUtil() {} diff --git a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/data/CobolFieldFactory.java b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/data/CobolFieldFactory.java index bfacb276..bc5da52f 100644 --- a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/data/CobolFieldFactory.java +++ b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/data/CobolFieldFactory.java @@ -21,7 +21,7 @@ import jp.osscons.opensourcecobol.libcobj.exceptions.CobolRuntimeException; /** AbstractCobolFieldのサブクラスを生成するためのメソッドを定義するクラス */ -public class CobolFieldFactory { +public final class CobolFieldFactory { /** このクラスはインスタンス化しない。 */ private CobolFieldFactory() {} diff --git a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/exceptions/CobolExceptionId.java b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/exceptions/CobolExceptionId.java index 6e736f4f..172ac6dc 100644 --- a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/exceptions/CobolExceptionId.java +++ b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/exceptions/CobolExceptionId.java @@ -19,7 +19,7 @@ package jp.osscons.opensourcecobol.libcobj.exceptions; /** 例外コードを定義するクラス */ -public class CobolExceptionId { +public final class CobolExceptionId { /** このクラスはインスタンス化しない。 */ private CobolExceptionId() {} diff --git a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/exceptions/CobolExceptionInfo.java b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/exceptions/CobolExceptionInfo.java index 14fa21ee..8d9d88a2 100644 --- a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/exceptions/CobolExceptionInfo.java +++ b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/exceptions/CobolExceptionInfo.java @@ -19,7 +19,7 @@ package jp.osscons.opensourcecobol.libcobj.exceptions; /** エラーコードを保持する。 */ -public class CobolExceptionInfo { +public final class CobolExceptionInfo { /** このクラスはインスタンス化しない。 */ private CobolExceptionInfo() {} diff --git a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/exceptions/CobolExceptionTabCode.java b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/exceptions/CobolExceptionTabCode.java index 128cfd1c..7e9f732d 100644 --- a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/exceptions/CobolExceptionTabCode.java +++ b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/exceptions/CobolExceptionTabCode.java @@ -22,7 +22,7 @@ * CobolExceptionIdで定義された例外IDから、COBOL標準の16進数エラーコードへの変換テーブルを保持するクラス。 * codeテーブルのインデックスはCobolExceptionIdの定数値に対応し、値はCOBOL標準で規定された16進数のエラーコードである。 */ -public class CobolExceptionTabCode { +public final class CobolExceptionTabCode { /** このクラスはインスタンス化しない。 */ private CobolExceptionTabCode() {} diff --git a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/file/CobolFileFactory.java b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/file/CobolFileFactory.java index cd8aade5..8c5bdaaa 100644 --- a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/file/CobolFileFactory.java +++ b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/file/CobolFileFactory.java @@ -21,7 +21,7 @@ import jp.osscons.opensourcecobol.libcobj.data.AbstractCobolField; /** TODO: 準備中 */ -public class CobolFileFactory { +public final class CobolFileFactory { /** このクラスはインスタンス化しない。 */ private CobolFileFactory() {} diff --git a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/file/CobolFileKey.java b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/file/CobolFileKey.java index 0699e802..66a8889d 100644 --- a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/file/CobolFileKey.java +++ b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/file/CobolFileKey.java @@ -23,6 +23,7 @@ /** TODO: 準備中 */ public class CobolFileKey { /** 新しいインスタンスを生成する。 */ + @SuppressWarnings("PMD.UnnecessaryConstructor") public CobolFileKey() {} /** TODO: 準備中 */ diff --git a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/file/CobolFileSort.java b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/file/CobolFileSort.java index f2036f78..9d02f88f 100644 --- a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/file/CobolFileSort.java +++ b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/file/CobolFileSort.java @@ -36,33 +36,30 @@ import jp.osscons.opensourcecobol.libcobj.exceptions.CobolStopRunException; /** TODO: 準備中 */ -public class CobolFileSort { +public final class CobolFileSort { /** このクラスはインスタンス化しない。 */ private CobolFileSort() {} /** TODO: 準備中 */ - protected static final int COBSORTEND = 1; + private static final int COBSORTEND = 1; /** TODO: 準備中 */ - protected static final int COBSORTABORT = 2; + private static final int COBSORTABORT = 2; /** TODO: 準備中 */ - protected static final int COBSORTFILEERR = 3; + private static final int COBSORTFILEERR = 3; /** TODO: 準備中 */ - protected static final int COBSORTNOTOPEN = 4; + private static final int COBSORTNOTOPEN = 4; /** TODO: 準備中 */ - protected static final int COB_ASCENDING = 0; - - /** TODO: 準備中 */ - protected static final int COB_DESCENDING = 1; + private static final int COB_ASCENDING = 0; private static String cob_process_id = ""; private static int cob_iteration = 0; /** TODO: 準備中 */ - protected static int cob_sort_memory = 128 * 1024 * 1024; + private static int cob_sort_memory = 128 * 1024 * 1024; // Javaの標準ライブラリでソートするならtrue private static boolean SORT_STD_LIB = true; diff --git a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/file/KeyComponent.java b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/file/KeyComponent.java index cf617ee4..a14307bc 100644 --- a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/file/KeyComponent.java +++ b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/file/KeyComponent.java @@ -23,6 +23,7 @@ /** TODO: 準備中 */ public class KeyComponent { /** 新しいインスタンスを生成する。 */ + @SuppressWarnings("PMD.UnnecessaryConstructor") public KeyComponent() {} /** TODO: 準備中 */ diff --git a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/file/Linage.java b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/file/Linage.java index 3cc2a883..aa056a58 100644 --- a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/file/Linage.java +++ b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/file/Linage.java @@ -23,6 +23,7 @@ /** TODO: 準備中 */ public class Linage { /** 新しいインスタンスを生成する。 */ + @SuppressWarnings("PMD.UnnecessaryConstructor") public Linage() {} private AbstractCobolField linage; diff --git a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/termio/CobolTerminal.java b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/termio/CobolTerminal.java index c60c7a5f..6cda63bc 100644 --- a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/termio/CobolTerminal.java +++ b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/termio/CobolTerminal.java @@ -38,7 +38,7 @@ import jp.osscons.opensourcecobol.libcobj.exceptions.CobolExceptionInfo; /** DISPLAY文やACCEPT文に関するメソッドを実装するクラス */ -public class CobolTerminal { +public final class CobolTerminal { /** このクラスはインスタンス化しない。 */ private CobolTerminal() {} diff --git a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/ui/CobolCallResult.java b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/ui/CobolCallResult.java index 8c319561..138811b3 100644 --- a/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/ui/CobolCallResult.java +++ b/libcobj/app/src/main/java/jp/osscons/opensourcecobol/libcobj/ui/CobolCallResult.java @@ -7,6 +7,7 @@ */ public class CobolCallResult { /** 新しいインスタンスを生成する。 */ + @SuppressWarnings("PMD.UnnecessaryConstructor") public CobolCallResult() {} /**