001package com.streamconverter.pmd; 002 003import java.io.Serial; 004import java.io.Serializable; 005 006/** 007 * PMD 違反情報。 008 * 009 * <p>パイプライン内コマンド間の中間データとして {@link java.io.ObjectOutputStream} / {@link java.io.ObjectInputStream} 010 * で受け渡しされる。 011 * 012 * @param file ファイルパス(プロジェクトルートからの相対パス) 013 * @param line 違反行番号 014 * @param rule ルール名 015 * @param ruleset ルールセット名 016 * @param priority 優先度(0=未定義、1=高〜5=低) 017 * @param description 違反の説明 018 * @param className クラス名 019 * @param method メソッド名 020 * @param variable 変数名 021 */ 022public record PmdViolation( 023 String file, 024 int line, 025 String rule, 026 String ruleset, 027 int priority, 028 String description, 029 String className, 030 String method, 031 String variable) 032 implements Serializable { 033 @Serial private static final long serialVersionUID = 1L; 034 035 public PmdViolation { 036 if (line < 0) { 037 throw new IllegalArgumentException("line must be >= 0, got: " + line); 038 } 039 if (priority < 0 || priority > 5) { 040 throw new IllegalArgumentException("priority must be 0-5, got: " + priority); 041 } 042 } 043}