Files
2026Technology-Competition/scripts/translations/pmd-1.mjs
T
范智鹏 9c676e46e6 feat: AI 修复预生成 + 审查面板 diff 预览两步确认 + SQLFluff 行号修复 + PMD 内置规则精简
- AI 修复预生成:静态/custom/AI 条目审查时预生成修复片段(originalText/newText),展开问题即显示行级 diff,无预生成时展示占位提示,匹配失败回退实时 LLM 生成

- 修复前 diff 预览:侧边新建编辑器组打开内置 diff,确认后写入(两步确认),不覆盖当前文件

- fix: sqlfluff 在 jinja 标签位于注释内时 JJ01 JSON 缺失 end_line_no/end_line_pos,适配器 Range 构造产生 NaN 被 VSCode 交换 start/end 导致行号 LNaN;新增 resolveSqlFluffRange 兜底 + 面板/report 行号 Number.isFinite 防御

- fix: 从 PMD 内置 ruleset 移除 5 条实际不可触发规则(AvoidAssertAsIdentifier、AvoidEnumAsIdentifier、AccessorClassGeneration、AccessorMethodGeneration、LoosePackageCoupling),内置配置 274→269 条全部可触发,同步 static-rules.json 与翻译脚本

- docs: README/DESIGN 更新
2026-08-25 21:58:14 +08:00

151 lines
19 KiB
JavaScript

export default {
'pmd/AbstractClassWithoutAbstractMethod': { zh: '抽象类不包含任何抽象方法', ja: '抽象クラスに抽象メソッドが含まれていない' },
'pmd/ArrayIsStoredDirectly': { zh: '存储到构造函数/方法前应克隆对象', ja: 'コンストラクタやメソッドに格納する前にオブジェクトをクローンする' },
'pmd/AssertStatementInTest': { zh: '测试代码中不应使用断言语句', ja: 'テストコードで assert 文を使用すべきでない' },
'pmd/AvoidMessageDigestField': { zh: '不要将 MessageDigest 声明为字段(线程安全)', ja: 'MessageDigest をフィールドとして宣言しない(スレッド安全性)' },
'pmd/AvoidPrintStackTrace': { zh: '使用 logger 替代 printStackTrace()', ja: 'printStackTrace() の代わりにロガーを使用する' },
'pmd/AvoidReassigningCatchVariables': { zh: '不要重新赋值捕获的异常变量', ja: '捕捉した例外変数に再代入しない' },
'pmd/AvoidReassigningLoopVariables': { zh: '不要重新赋值循环控制变量', ja: 'ループ制御変数に再代入しない' },
'pmd/AvoidReassigningParameters': { zh: '不要重新赋值方法参数', ja: 'メソッドパラメータに再代入しない' },
'pmd/AvoidStringBufferField': { zh: '避免将 StringBuffer/StringBuilder 用作字段', ja: 'StringBuffer/StringBuilder をフィールドとして使うことを避ける' },
'pmd/AvoidUsingHardCodedIP': { zh: '外部化 IP 地址', ja: 'IP アドレスを外部化する' },
'pmd/CheckResultSet': { zh: '始终检查 ResultSet 导航方法的返回值', ja: 'ResultSet のナビゲーションメソッドの戻り値を常に確認する' },
'pmd/ConstantsInInterface': { zh: '避免在接口中定义常量', ja: 'インターフェースでの定数定義を避ける' },
'pmd/DefaultLabelNotLastInSwitch': { zh: 'switch 中 default 标签应放在最后', ja: 'switch では default ラベルを最後に置く' },
'pmd/DoubleBraceInitialization': { zh: '避免双花括号初始化', ja: '二重波括弧初期化を避ける' },
'pmd/EnumComparison': { zh: '使用 == 而非 equals() 比较枚举', ja: '列挙の比較には equals() ではなく == を使用する' },
'pmd/ExhaustiveSwitchHasDefault': { zh: '穷尽式 switch 不应有 default 子句', ja: '網羅的な switch に default を置くべきでない' },
'pmd/ForLoopCanBeForeach': { zh: '用 foreach 替代 for 循环', ja: 'for ループを foreach に置き換える' },
'pmd/ForLoopVariableCount': { zh: '限制 for 循环中的控制变量数量', ja: 'for ループ内の制御変数の数を制限する' },
'pmd/GuardLogStatement': { zh: '记录日志前检查日志级别', ja: 'ログ出力前にログレベルを確認する' },
'pmd/ImplicitFunctionalInterface': { zh: '用 @FunctionalInterface 注解函数式接口', ja: '関数型インターフェースに @FunctionalInterface を付ける' },
'pmd/JUnit4SuitesShouldUseSuiteAnnotation': { zh: '使用 @RunWith(Suite.class) 注解', ja: '@RunWith(Suite.class) アノテーションを使用する' },
'pmd/JUnitJupiterTestShouldBePackagePrivate': { zh: 'JUnit 5 测试应为包私有', ja: 'JUnit 5 のテストはパッケージプライベートにする' },
'pmd/JUnitUseExpected': { zh: '使用 @Test(expected) 注解', ja: '@Test(expected) アノテーションを使用する' },
'pmd/LabeledStatement': { zh: '避免带标签的语句', ja: 'ラベル付き文を避ける' },
'pmd/LiteralsFirstInComparisons': { zh: '字符串比较中将字面量放在前面', ja: '文字列比較ではリテラルを先頭に置く' },
'pmd/LooseCoupling': { zh: '使用接口而非实现类型', ja: '実装型ではなくインターフェースを使用する' },
'pmd/MethodReturnsInternalArray': { zh: '返回内部数组的副本', ja: '内部配列のコピーを返す' },
'pmd/MissingOverride': { zh: '添加 @Override 注解', ja: '@Override アノテーションを追加する' },
'pmd/NonExhaustiveSwitch': { zh: 'switch 应为穷尽式', ja: 'switch を網羅的にする' },
'pmd/OneDeclarationPerLine': { zh: '每行一个声明', ja: '1行に1つの宣言' },
'pmd/PreserveStackTrace': { zh: '重新抛出异常时保留堆栈跟踪', ja: '例外を再スローする際にスタックトレースを保持する' },
'pmd/PrimitiveWrapperInstantiation': { zh: '使用 valueOf() 而非 new Type()', ja: 'new Type() の代わりに valueOf() を使用する' },
'pmd/RelianceOnDefaultCharset': { zh: '显式指定字符集', ja: '文字セットを明示的に指定する' },
'pmd/ReplaceEnumerationWithIterator': { zh: '使用 Iterator 替代 Enumeration', ja: 'Enumeration の代わりに Iterator を使用する' },
'pmd/ReplaceHashtableWithMap': { zh: '使用 Map 替代 Hashtable', ja: 'Hashtable の代わりに Map を使用する' },
'pmd/ReplaceVectorWithList': { zh: '使用 List/ArrayList 替代 Vector', ja: 'Vector の代わりに List/ArrayList を使用する' },
'pmd/ReturnEmptyCollectionRatherThanNull': { zh: '返回空集合而非 null', ja: 'null ではなく空のコレクションを返す' },
'pmd/SimplifiableTestAssertion': { zh: '使用更具体的断言方法', ja: 'より具体的なアサーションメソッドを使用する' },
'pmd/SystemPrintln': { zh: '使用 logger 替代 System.out/err', ja: 'System.out/err の代わりにロガーを使用する' },
'pmd/UnitTestAssertionsShouldIncludeMessage': { zh: '断言中包含消息', ja: 'アサーションにメッセージを含める' },
'pmd/UnitTestContainsTooManyAsserts': { zh: '限制每个测试的断言数量', ja: 'テストごとのアサーション数を制限する' },
'pmd/UnitTestShouldIncludeAssert': { zh: '测试应包含断言', ja: 'テストにアサーションを含めるべきである' },
'pmd/UnitTestShouldUseAfterAnnotation': { zh: '使用 @After/@AfterEach 注解', ja: '@After/@AfterEach アノテーションを使用する' },
'pmd/UnitTestShouldUseBeforeAnnotation': { zh: '使用 @Before/@BeforeEach 注解', ja: '@Before/@BeforeEach アノテーションを使用する' },
'pmd/UnitTestShouldUseTestAnnotation': { zh: '使用 @Test 注解', ja: '@Test アノテーションを使用する' },
'pmd/UnnecessaryVarargsArrayCreation': { zh: '不要为可变参数创建显式数组', ja: '可変長引数用に明示的な配列を作成しない' },
'pmd/UnnecessaryWarningSuppression': { zh: '移除未使用的 PMD 抑制', ja: '未使用の PMD 抑制を削除する' },
'pmd/UnsynchronizedStaticFormatter': { zh: '静态 formatter 应同步', ja: '静的フォーマッタは同期化すべきである' },
'pmd/UnusedAssignment': { zh: '移除未使用的赋值', ja: '未使用の代入を削除する' },
'pmd/UnusedFormalParameter': { zh: '移除未使用的参数', ja: '未使用のパラメータを削除する' },
'pmd/UnusedLabel': { zh: '移除未使用的标签', ja: '未使用のラベルを削除する' },
'pmd/UnusedLocalVariable': { zh: '移除未使用的局部变量', ja: '未使用のローカル変数を削除する' },
'pmd/UnusedPrivateField': { zh: '移除未使用的私有字段', ja: '未使用のプライベートフィールドを削除する' },
'pmd/UnusedPrivateMethod': { zh: '移除未使用的私有方法', ja: '未使用のプライベートメソッドを削除する' },
'pmd/UseCollectionIsEmpty': { zh: '使用 isEmpty() 替代 size()==0', ja: 'size()==0 の代わりに isEmpty() を使用する' },
'pmd/UseEnumCollections': { zh: '使用 EnumSet/EnumMap 替代 HashSet/HashMap', ja: 'HashSet/HashMap の代わりに EnumSet/EnumMap を使用する' },
'pmd/UseStandardCharsets': { zh: '使用 StandardCharsets 常量', ja: 'StandardCharsets 定数を使用する' },
'pmd/UseTryWithResources': { zh: '使用 try-with-resources', ja: 'try-with-resources を使用する' },
'pmd/UseUtilityClass': { zh: '工具类应有私有构造函数', ja: 'ユーティリティクラスはプライベートコンストラクタを持つべきである' },
'pmd/UseVarargs': { zh: '使用可变参数替代数组参数', ja: '配列パラメータの代わりに可変長引数を使用する' },
'pmd/VariableCanBeInlined': { zh: '变量可以内联', ja: '変数をインライン化できる' },
'pmd/WhileLoopWithLiteralBoolean': { zh: '简化带字面量布尔值的 while 循环', ja: 'リテラルブール値を持つ while ループを簡略化する' },
'pmd/AtLeastOneConstructor': { zh: '每个类都应有一个构造函数', ja: '各クラスにコンストラクタを1つ持つべきである' },
'pmd/AvoidDollarSigns': { zh: '避免在名称中使用 $', ja: '名前に $ を使用することを避ける' },
'pmd/AvoidProtectedFieldInFinalClass': { zh: 'final 类中不要使用 protected 字段', ja: 'final クラスで protected フィールドを使わない' },
'pmd/AvoidProtectedMethodInFinalClassNotExtending': { zh: '非继承的 final 类中不要使用 protected 方法', ja: '継承しない final クラスで protected メソッドを使わない' },
'pmd/AvoidUsingNativeCode': { zh: '避免 JNI 调用', ja: 'JNI 呼び出しを避ける' },
'pmd/BooleanGetMethodName': { zh: '布尔 getter 应命名为 isX()', ja: 'ブールゲッターは isX() と命名する' },
'pmd/CallSuperInConstructor': { zh: '在构造函数中调用 super()', ja: 'コンストラクタで super() を呼び出す' },
'pmd/ClassNamingConventions': { zh: 'PascalCase 命名', ja: 'PascalCase 命名' },
'pmd/CommentDefaultAccessModifier': { zh: '注释默认访问修饰符', ja: 'デフォルトアクセス修飾子をコメントする' },
'pmd/ConfusingTernary': { zh: '避免在带 else 的 if 中使用取反', ja: 'else 付き if での否定を避ける' },
'pmd/ControlStatementBraces': { zh: '控制语句要求花括号', ja: '制御文に波括弧を要求する' },
'pmd/EmptyControlStatement': { zh: '报告空的控制语句', ja: '空の制御文を報告する' },
'pmd/EmptyMethodInAbstractClassShouldBeAbstract': { zh: '抽象类中的空方法应为抽象方法', ja: '抽象クラスの空メソッドは抽象にすべきである' },
'pmd/ExtendsObject': { zh: '无需显式继承 Object', ja: 'Object を明示的に継承する必要はない' },
'pmd/FieldDeclarationsShouldBeAtStartOfClass': { zh: '字段放在类的顶部', ja: 'フィールドをクラスの先頭に置く' },
'pmd/FieldNamingConventions': { zh: '可配置的字段命名规范', ja: '設定可能なフィールド命名規則' },
'pmd/FinalParameterInAbstractMethod': { zh: '抽象方法中的 final 参数无用', ja: '抽象メソッドの final パラメータは無意味である' },
'pmd/ForLoopShouldBeWhileLoop': { zh: '将 for 循环简化为 while', ja: 'for ループを while に簡略化する' },
'pmd/FormalParameterNamingConventions': { zh: '参数命名规范', ja: 'パラメータ命名規則' },
'pmd/IdenticalCatchBranches': { zh: '合并相同的 catch 分支', ja: '同一の catch ブランチを統合する' },
'pmd/LambdaCanBeMethodReference': { zh: '用方法引用替代 lambda', ja: 'ラムダをメソッド参照に置き換える' },
'pmd/LinguisticNaming': { zh: '方法名与返回类型一致性', ja: 'メソッド名と戻り値型の整合性' },
'pmd/LocalHomeNamingConvention': { zh: 'EJB LocalHome 后缀', ja: 'EJB LocalHome サフィックス' },
'pmd/LocalInterfaceSessionNamingConvention': { zh: 'EJB Local 后缀', ja: 'EJB Local サフィックス' },
'pmd/LocalVariableCouldBeFinal': { zh: '尽可能将局部变量声明为 final', ja: '可能な限りローカル変数を final で宣言する' },
'pmd/LocalVariableNamingConventions': { zh: '变量命名规范', ja: '変数命名規則' },
'pmd/LongVariable': { zh: '避免过长的变量名(超过17个字符)', ja: '過度に長い変数名(17文字超)を避ける' },
'pmd/MDBAndSessionBeanNamingConvention': { zh: 'EJB Bean 后缀', ja: 'EJB Bean サフィックス' },
'pmd/MethodArgumentCouldBeFinal': { zh: '尽可能将参数声明为 final', ja: '可能な限りパラメータを final で宣言する' },
'pmd/MethodNamingConventions': { zh: '方法命名规范', ja: 'メソッド命名規則' },
'pmd/ModifierOrder': { zh: '强制 JLS 修饰符顺序', ja: 'JLS 修飾子の順序を強制する' },
'pmd/NoPackage': { zh: '所有类型必须属于命名包', ja: 'すべての型は名前付きパッケージに属すべきである' },
'pmd/OnlyOneReturn': { zh: '每个方法只有一个出口', ja: 'メソッドに出口を1つだけ持たせる' },
'pmd/PackageCase': { zh: '包名使用小写', ja: 'パッケージ名は小文字にする' },
'pmd/PrematureDeclaration': { zh: '变量声明靠近使用处', ja: '変数を使用箇所の近くで宣言する' },
'pmd/UselessParentheses': { zh: '移除不必要的括号', ja: '不要な括弧を削除する' },
'pmd/UselessQualifiedThis': { zh: '移除不必要的限定 this', ja: '不要な限定 this を削除する' },
'pmd/UnnecessaryAnnotationValueElement': { zh: '移除不必要的注解值元素', ja: '不要なアノテーション値要素を削除する' },
'pmd/UnnecessaryBoxing': { zh: '避免不必要的装箱', ja: '不要なボクシングを避ける' },
'pmd/UnnecessaryCast': { zh: '移除不必要的强制转换', ja: '不要なキャストを削除する' },
'pmd/UnnecessaryConstructor': { zh: '移除不必要的构造函数', ja: '不要なコンストラクタを削除する' },
'pmd/UnnecessaryFullyQualifiedName': { zh: '移除不必要的全限定名', ja: '不要な完全修飾名を削除する' },
'pmd/UnnecessaryImport': { zh: '移除不必要的导入', ja: '不要なインポートを削除する' },
'pmd/UnnecessaryModifier': { zh: '移除不必要的修饰符', ja: '不要な修飾子を削除する' },
'pmd/UnnecessaryReturn': { zh: '移除不必要的 return', ja: '不要な return を削除する' },
'pmd/UnnecessarySemicolon': { zh: '移除不必要的分号', ja: '不要なセミコロンを削除する' },
'pmd/UnnecessaryUnboxing': { zh: '避免不必要的拆箱', ja: '不要なアンボクシングを避ける' },
'pmd/UpperLowerCaseNamingConventions': { zh: '大小写命名规范', ja: '大文字・小文字の命名規則' },
'pmd/UseShortArrayInitializer': { zh: '使用简短的数组初始化器', ja: '簡潔な配列初期化子を使用する' },
'pmd/AbstractClassWithoutAnyMethod': { zh: '没有任何方法的抽象类应使用私有构造函数', ja: 'メソッドのない抽象クラスはプライベートコンストラクタを使うべきである' },
'pmd/AvoidDeeplyNestedIfStmts': { zh: '避免深度嵌套的 if 语句', ja: '深くネストした if 文を避ける' },
'pmd/AvoidRethrowingException': { zh: '避免捕获后重新抛出', ja: 'catch-and-rethrow を避ける' },
'pmd/AvoidThrowingNewInstanceOfSameException': { zh: '避免包装相同异常类型', ja: '同じ例外型のラップを避ける' },
'pmd/AvoidThrowingNullPointerException': { zh: '不要手动抛出 NPE', ja: 'NPE を手動で投げない' },
'pmd/AvoidThrowingRawExceptionTypes': { zh: '不要抛出原始 Exception/RuntimeException/Throwable/Error', ja: '生の Exception/RuntimeException/Throwable/Error を投げない' },
'pmd/AvoidUncheckedExceptionsInSignatures': { zh: '不要在 throws 中声明非受检异常', ja: 'throws で非チェック例外を宣言しない' },
'pmd/ClassWithOnlyPrivateConstructorsShouldBeFinal': { zh: '只有私有构造函数的类应为 final', ja: 'プライベートコンストラクタのみのクラスは final にする' },
'pmd/CognitiveComplexity': { zh: '高认知复杂度的方法', ja: '認知複雑度の高いメソッド' },
'pmd/CollapsibleIfStatements': { zh: '合并嵌套的 if 语句', ja: 'ネストした if 文を統合する' },
'pmd/CouplingBetweenObjects': { zh: '高耦合阈值', ja: '高い結合度の閾値' },
'pmd/CyclomaticComplexity': { zh: '高圈复杂度', ja: '高い循環的複雑度' },
'pmd/DataClass': { zh: '疑似数据类', ja: '疑わしいデータクラス' },
'pmd/DoNotExtendJavaLangError': { zh: '不要继承 Error', ja: 'Error を継承しない' },
'pmd/ExceptionAsFlowControl': { zh: '不要使用异常控制流程', ja: '制御フローに例外を使わない' },
'pmd/ExcessiveImports': { zh: '导入过多', ja: 'インポートが多すぎる' },
'pmd/ExcessiveParameterList': { zh: '参数过多', ja: 'パラメータが多すぎる' },
'pmd/ExcessivePublicCount': { zh: '公共方法/属性过多', ja: 'public メソッド/属性が多すぎる' },
'pmd/FinalFieldCouldBeStatic': { zh: '编译时常量 final 字段应为 static', ja: 'コンパイル時定数の final フィールドは static にできる' },
'pmd/GodClass': { zh: '上帝类检测', ja: 'God クラスの検出' },
'pmd/ImmutableField': { zh: '字段可以声明为 final', ja: 'フィールドは final にできる' },
'pmd/InvalidJavaBean': { zh: 'Bean 不符合 JavaBeans 规范', ja: 'Bean が JavaBeans 仕様に従っていない' },
'pmd/LawOfDemeter': { zh: '潜在的迪米特法则违规', ja: '潜在的な LoD 違反' },
'pmd/LogicInversion': { zh: '使用相反的运算符替代 !', ja: '! の代わりに反対の演算子を使用する' },
'pmd/MutableStaticState': { zh: '非私有非 final 的静态字段', ja: '非 private かつ非 final の静的フィールド' },
'pmd/NcssCount': { zh: '非注释源码语句度量', ja: '非コメントソース文のメトリクス' },
'pmd/NPathComplexity': { zh: 'NPath 复杂度阈值', ja: 'NPath 複雑度の閾値' },
'pmd/PublicMemberInNonPublicType': { zh: '非公共类型中的公共成员', ja: '非 public 型内の public メンバー' },
'pmd/SignatureDeclareThrowsException': { zh: '不要声明 throws Exception', ja: 'throws Exception を宣言しない' },
'pmd/SimplifiedTernary': { zh: '用布尔字面量简化三元表达式', ja: 'ブールリテラルで三項演算子を簡略化する' },
'pmd/SimplifyBooleanExpressions': { zh: '移除不必要的布尔比较', ja: '不要なブール比較を削除する' },
'pmd/SimplifyBooleanReturns': { zh: '简化布尔返回', ja: 'ブールの戻り値を簡略化する' },
'pmd/SimplifyConditional': { zh: '简化条件表达式', ja: '条件式を簡略化する' },
'pmd/SingularField': { zh: '字段可能应为局部变量', ja: 'フィールドはローカル変数にできる' },
'pmd/TooManyFields': { zh: '字段过多', ja: 'フィールドが多すぎる' },
'pmd/TooManyMethods': { zh: '方法过多', ja: 'メソッドが多すぎる' },
'pmd/UselessOverridingMethod': { zh: '无意义的重写方法', ja: '無意味なオーバーライドメソッド' },
};