feat: 方法级代码审查 + 模板导入/预览增强 + SQLFluff 方言 + AI 空响应报错修复

- 方法级审查:CodeLens 触发 + 单次 AI 调用(规则匹配 + 6 维度深度审查),新增 method-extractor / status-cache / codeLensProvider
- 模板导入:severity 保留原始值 + 占位 id、去重对照统一 known-rules、重复提示条双语翻译、箭头展开/折叠 UI、520 条静态规则补 zh/ja 翻译
- SQL:sql-lint 重命名 sqlfluff + sqlfluff.dialect 方言可配置 + 默认方言调整
- ESLint:v9 flat config 接线修复(overrideConfigFile)+ legacy 迁移提示
- AI:空响应 EmptyContentError + 重试一次 + max_tokens 截断专用报错
- JSP:整文件检查走 PMD JSP 规则集 + scriptlet 包装解析 + 行号映射
- 诊断按 severity + 行号排序
This commit is contained in:
范智鹏
2026-08-03 22:53:20 +08:00
parent 5848eaa82a
commit 247f19fd44
46 changed files with 6143 additions and 937 deletions
+38
View File
@@ -0,0 +1,38 @@
import { readFileSync, writeFileSync } from 'fs';
import { resolve, dirname } from 'path';
import { fileURLToPath } from 'url';
import eslint from './translations/eslint.mjs';
import tsEsLint from './translations/ts-eslint.mjs';
import stylelint from './translations/stylelint.mjs';
import pmd1 from './translations/pmd-1.mjs';
import pmd2 from './translations/pmd-2.mjs';
import pmdJsp from './translations/pmd-jsp.mjs';
import sqlFluff from './translations/sqlfluff.mjs';
const __dirname = dirname(fileURLToPath(import.meta.url));
const srcPath = resolve(__dirname, '..', 'src', 'rules', 'static-rules.json');
const data = JSON.parse(readFileSync(srcPath, 'utf-8'));
const all = { ...eslint, ...tsEsLint, ...stylelint, ...pmd1, ...pmd2, ...pmdJsp, ...sqlFluff };
let added = 0;
const missing = [];
for (const rules of Object.values(data.rules)) {
for (const rule of rules) {
const t = all[rule.id];
if (t) {
rule.descriptionZh = t.zh;
rule.descriptionJa = t.ja;
added++;
} else {
missing.push(rule.id);
}
}
}
writeFileSync(srcPath, JSON.stringify(data, null, 2) + '\n', 'utf-8');
console.log(`added: ${added}`);
console.log(`missing: ${missing.length}`);
if (missing.length > 0) {
console.log(missing.join('\n'));
}
+94
View File
@@ -0,0 +1,94 @@
export default {
'eslint/constructor-super': { zh: '在构造函数中校验 super() 的调用', ja: 'コンストラクタで super() の呼び出しを検証する' },
'eslint/for-direction': { zh: '确保 for 循环更新子句朝正确方向移动计数器', ja: 'for ループの更新句がカウンタを正しい方向に進めることを強制する' },
'eslint/getter-return': { zh: '强制 getter 中有 return 语句', ja: 'getter に return 文を強制する' },
'eslint/no-async-promise-executor': { zh: '禁止使用 async 函数作为 Promise 执行器', ja: 'async 関数を Promise のエグゼキュータとして使用しない' },
'eslint/no-case-declarations': { zh: '禁止在 case 子句中声明词法变量', ja: 'case 節での語彙宣言を禁止する' },
'eslint/no-class-assign': { zh: '禁止重新赋值类成员', ja: 'クラスメンバーへの再代入を禁止する' },
'eslint/no-compare-neg-zero': { zh: '禁止与 -0 进行比较', ja: '-0 との比較を禁止する' },
'eslint/no-cond-assign': { zh: '禁止在条件表达式中使用赋值运算符', ja: '条件式での代入演算子を禁止する' },
'eslint/no-const-assign': { zh: '禁止重新赋值 const 变量', ja: 'const 変数への再代入を禁止する' },
'eslint/no-constant-binary-expression': { zh: '禁止常量二元表达式', ja: '定数の二項式を禁止する' },
'eslint/no-constant-condition': { zh: '禁止在条件中使用常量表达式', ja: '条件での定数式を禁止する' },
'eslint/no-control-regex': { zh: '禁止正则表达式中的控制字符', ja: '正規表現内の制御文字を禁止する' },
'eslint/no-debugger': { zh: '禁止使用 debugger 语句', ja: 'debugger 文の使用を禁止する' },
'eslint/no-delete-var': { zh: '禁止删除变量', ja: '変数の削除を禁止する' },
'eslint/no-dupe-args': { zh: '禁止函数定义中重复的参数', ja: '関数定義内の重複引数を禁止する' },
'eslint/no-dupe-class-members': { zh: '禁止重复的类成员', ja: '重複するクラスメンバーを禁止する' },
'eslint/no-dupe-else-if': { zh: '禁止 if-else-if 链中的重复条件', ja: 'if-else-if チェーン内の重複条件を禁止する' },
'eslint/no-dupe-keys': { zh: '禁止对象字面量中重复的键', ja: 'オブジェクトリテラル内の重複キーを禁止する' },
'eslint/no-duplicate-case': { zh: '禁止重复的 case 标签', ja: '重複する case ラベルを禁止する' },
'eslint/no-empty': { zh: '禁止空块语句', ja: '空のブロック文を禁止する' },
'eslint/no-empty-character-class': { zh: '禁止正则表达式中的空字符类', ja: '正規表現内の空の文字クラスを禁止する' },
'eslint/no-empty-pattern': { zh: '禁止空解构模式', ja: '空の分割代入パターンを禁止する' },
'eslint/no-empty-static-block': { zh: '禁止空的静态块', ja: '空の静的ブロックを禁止する' },
'eslint/no-ex-assign': { zh: '禁止在 catch 子句中重新赋值异常', ja: 'catch 句での例外への再代入を禁止する' },
'eslint/no-extra-boolean-cast': { zh: '禁止不必要的布尔转换', ja: '不要なブール変換を禁止する' },
'eslint/no-fallthrough': { zh: '禁止 case 语句的 fallthrough', ja: 'case 文のフォールスルーを禁止する' },
'eslint/no-func-assign': { zh: '禁止重新赋值函数声明', ja: '関数宣言への再代入を禁止する' },
'eslint/no-global-assign': { zh: '禁止对原生对象或只读全局变量赋值', ja: 'ネイティブオブジェクトや読み取り専用グローバルへの代入を禁止する' },
'eslint/no-import-assign': { zh: '禁止对导入的绑定赋值', ja: 'インポートされたバインディングへの代入を禁止する' },
'eslint/no-invalid-regexp': { zh: '禁止 RegExp 构造函数中的无效正则字符串', ja: 'RegExp コンストラクタ内の不正な正規表現文字列を禁止する' },
'eslint/no-irregular-whitespace': { zh: '禁止不规则空白', ja: '不規則な空白を禁止する' },
'eslint/no-loss-of-precision': { zh: '禁止会丢失精度的字面数字', ja: '精度を失うリテラル数値を禁止する' },
'eslint/no-misleading-character-class': { zh: '禁止字符类语法中使用多个码点构成的字符', ja: '文字クラス構文で複数のコードポイントからなる文字を禁止する' },
'eslint/no-new-native-nonconstructor': { zh: '禁止对全局非构造函数使用 new', ja: 'グローバルな非コンストラクタ関数への new を禁止する' },
'eslint/no-nonoctal-decimal-escape': { zh: '禁止字符串字面量中的 \\8 和 \\9 转义序列', ja: '文字列リテラル内の \\8 と \\9 のエスケープシーケンスを禁止する' },
'eslint/no-obj-calls': { zh: '禁止将全局对象属性作为函数调用', ja: 'グローバルオブジェクトのプロパティを関数として呼び出すことを禁止する' },
'eslint/no-octal': { zh: '禁止八进制字面量', ja: '8進数リテラルを禁止する' },
'eslint/no-prototype-builtins': { zh: '禁止直接在对象上调用某些 Object.prototype 方法', ja: 'オブジェクトで Object.prototype の一部メソッドを直接呼ぶことを禁止する' },
'eslint/no-redeclare': { zh: '禁止变量重新声明', ja: '変数の再宣言を禁止する' },
'eslint/no-regex-spaces': { zh: '禁止正则表达式字面量中的多个空格', ja: '正規表現リテラル内の複数スペースを禁止する' },
'eslint/no-self-assign': { zh: '禁止两侧完全相同的赋值', ja: '両辺が完全に同一の代入を禁止する' },
'eslint/no-setter-return': { zh: '禁止 setter 返回值', ja: 'setter からの戻り値を禁止する' },
'eslint/no-shadow-restricted-names': { zh: '禁止标识符遮蔽受限名称', ja: '予約名を遮蔽する識別子を禁止する' },
'eslint/no-sparse-arrays': { zh: '禁止稀疏数组', ja: '疎配列を禁止する' },
'eslint/no-this-before-super': { zh: '禁止在构造函数中调用 super() 之前使用 this/super', ja: 'コンストラクタで super() 呼び出し前の this/super 使用を禁止する' },
'eslint/no-undef': { zh: '禁止使用未声明的变量', ja: '未宣言の変数の使用を禁止する' },
'eslint/no-unexpected-multiline': { zh: '禁止令人困惑的多行表达式', ja: '紛らわしい複数行式を禁止する' },
'eslint/no-unreachable': { zh: '禁止 return/throw/continue/break 之后不可达的代码', ja: 'return/throw/continue/break 後の到達不能コードを禁止する' },
'eslint/no-unsafe-finally': { zh: '禁止 finally 块中的控制流语句', ja: 'finally ブロック内の制御フロー文を禁止する' },
'eslint/no-unsafe-negation': { zh: '禁止对关系运算符左操作数取反', ja: '関係演算子の左オペランドの否定を禁止する' },
'eslint/no-unsafe-optional-chaining': { zh: '禁止在 undefined 不允许的上下文中使用可选链', ja: 'undefined が許されない文脈でのオプショナルチェーンを禁止する' },
'eslint/no-unused-labels': { zh: '禁止未使用的标签', ja: '未使用のラベルを禁止する' },
'eslint/no-unused-private-class-members': { zh: '禁止未使用的私有类成员', ja: '未使用のプライベートクラスメンバーを禁止する' },
'eslint/no-unused-vars': { zh: '禁止未使用的变量', ja: '未使用の変数を禁止する' },
'eslint/no-useless-backreference': { zh: '禁止正则表达式中无用的反向引用', ja: '正規表現内の無用な後方参照を禁止する' },
'eslint/no-useless-catch': { zh: '禁止不必要的 catch 子句', ja: '不要な catch 句を禁止する' },
'eslint/no-useless-escape': { zh: '禁止不必要的转义字符', ja: '不要なエスケープ文字を禁止する' },
'eslint/no-with': { zh: '禁止 with 语句', ja: 'with 文を禁止する' },
'eslint/require-yield': { zh: '要求生成器函数包含 yield', ja: 'ジェネレータ関数に yield を含めることを要求する' },
'eslint/use-isnan': { zh: '检查 NaN 时要求调用 isNaN()', ja: 'NaN のチェック時に isNaN() の呼び出しを要求する' },
'eslint/valid-typeof': { zh: '强制 typeof 表达式与有效字符串比较', ja: 'typeof 式と有効な文字列の比較を強制する' },
'eslint/eqeqeq': { zh: '要求使用 === 和 !==', ja: '=== と !== の使用を要求する' },
'eslint/no-eq-null': { zh: '禁止无类型检查的 null 比较', ja: '型チェックなしの null 比較を禁止する' },
'eslint/no-self-compare': { zh: '禁止两侧相同的比较', ja: '両辺が同一の比較を禁止する' },
'eslint/no-await-in-loop': { zh: '禁止在循环内使用 await', ja: 'ループ内での await を禁止する' },
'eslint/no-promise-executor-return': { zh: '禁止 Promise 执行器返回值', ja: 'Promise エグゼキュータからの戻り値を禁止する' },
'eslint/no-shadow': { zh: '禁止变量声明遮蔽外层作用域中的变量', ja: '外側スコープの変数を遮蔽する宣言を禁止する' },
'eslint/no-unassigned-vars': { zh: '禁止只读但从未赋值的 let/var 变量', ja: '読み取られるが代入されない let/var 変数を禁止する' },
'eslint/no-useless-assignment': { zh: '禁止值未被使用的变量赋值', ja: '値が使われない変数への代入を禁止する' },
'eslint/block-scoped-var': { zh: '强制变量在其定义的作用域内使用', ja: '変数を定義されたスコープ内で使用することを強制する' },
'eslint/default-case': { zh: '要求 switch 语句有 default 子句', ja: 'switch 文に default 句を要求する' },
'eslint/default-case-last': { zh: '强制 switch 语句中 default 子句在最后', ja: 'switch 文で default 句を最後にすることを強制する' },
'eslint/no-unmodified-loop-condition': { zh: '禁止未修改的循环条件', ja: '変更されないループ条件を禁止する' },
'eslint/no-unreachable-loop': { zh: '禁止只允许一次迭代的循环体', ja: '一度しか反復できないループを禁止する' },
'eslint/no-eval': { zh: '禁止使用 eval()', ja: 'eval() の使用を禁止する' },
'eslint/no-extend-native': { zh: '禁止扩展原生类型', ja: 'ネイティブ型の拡張を禁止する' },
'eslint/no-var': { zh: '要求使用 let 或 const 替代 var', ja: 'var の代わりに let または const を要求する' },
'eslint/prefer-template': { zh: '要求使用模板字面量替代字符串拼接', ja: '文字列連結の代わりにテンプレートリテラルを要求する' },
'eslint/prefer-object-spread': { zh: '禁止 Object.assign,优先使用对象展开', ja: 'Object.assign を禁止しオブジェクト展開を推奨する' },
'eslint/prefer-rest-params': { zh: '要求使用剩余参数替代 arguments', ja: 'arguments の代わりに残余引数を要求する' },
'eslint/prefer-spread': { zh: '要求使用展开运算符替代 .apply()', ja: '.apply() の代わりにスプレッド演算子を要求する' },
'eslint/prefer-object-has-own': { zh: '禁止 Object.prototype.hasOwnProperty.call(),优先使用 Object.hasOwn()', ja: 'Object.prototype.hasOwnProperty.call() を禁止し Object.hasOwn() を推奨する' },
'eslint/no-useless-concat': { zh: '禁止不必要的字面量或模板字面量拼接', ja: '不要なリテラルやテンプレートリテラルの連結を禁止する' },
'eslint/no-useless-return': { zh: '禁止冗余的 return 语句', ja: '冗長な return 文を禁止する' },
'eslint/no-useless-computed-key': { zh: '禁止对象和类中不必要的计算属性键', ja: 'オブジェクトとクラス内の不要な算出プロパティキーを禁止する' },
'eslint/no-useless-rename': { zh: '禁止将导入、导出和解构赋值重命名为相同名称', ja: 'インポート・エクスポート・分割代入を同名に改名することを禁止する' },
'eslint/no-param-reassign': { zh: '禁止重新赋值函数参数', ja: '関数パラメータへの再代入を禁止する' },
'eslint/no-return-assign': { zh: '禁止在 return 语句中使用赋值运算符', ja: 'return 文での代入演算子を禁止する' },
'eslint/no-throw-literal': { zh: '禁止将字面量作为异常抛出', ja: 'リテラルを例外として投げることを禁止する' },
'eslint/camelcase': { zh: '强制使用 camelCase 命名规范', ja: 'camelCase 命名規則を強制する' },
'eslint/new-cap': { zh: '要求构造函数名以大写字母开头', ja: 'コンストラクタ名を大文字で始めることを要求する' },
'eslint/no-array-constructor': { zh: '禁止使用 Array 构造函数', ja: 'Array コンストラクタを禁止する' },
};
+153
View File
@@ -0,0 +1,153 @@
export default {
'pmd/AbstractClassWithoutAbstractMethod': { zh: '抽象类不包含任何抽象方法', ja: '抽象クラスに抽象メソッドが含まれていない' },
'pmd/AccessorClassGeneration': { zh: '避免从外部通过私有构造函数实例化', ja: '外部からプライベートコンストラクタでインスタンス化することを避ける' },
'pmd/AccessorMethodGeneration': { 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/LoosePackageCoupling': { 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: '無意味なオーバーライドメソッド' },
};
+124
View File
@@ -0,0 +1,124 @@
export default {
'pmd/AssertEqualsArgumentOrder': { zh: 'assertEquals 的 expected/actual 参数顺序颠倒', ja: 'assertEquals の expected/actual 引数が逆' },
'pmd/AssignmentInOperand': { zh: '避免在操作数中赋值', ja: 'オペランド内での代入を避ける' },
'pmd/AssignmentToNonFinalStatic': { zh: '构造函数中对非 final 静态字段的不安全赋值', ja: 'コンストラクタ内の非 final 静的フィールドへの安全でない代入' },
'pmd/AvoidAccessibilityAlteration': { zh: '不要使用 setAccessible(true)', ja: 'setAccessible(true) を使用しない' },
'pmd/AvoidAssertAsIdentifier': { zh: 'assert 是保留字(Java <1.4', ja: 'assert は予約語である(Java <1.4' },
'pmd/AvoidBranchingStatementAsLastInLoop': { zh: '循环体最后的跳转语句', ja: 'ループの最後の分岐文' },
'pmd/AvoidCallingFinalize': { zh: '不要显式调用 finalize()', ja: 'finalize() を明示的に呼ばない' },
'pmd/AvoidCatchingGenericException': { zh: '不要捕获泛化异常', ja: '汎用例外を捕捉しない' },
'pmd/AvoidDecimalLiteralsInBigDecimalConstructor': { zh: 'BigDecimal 使用 String 构造函数', ja: 'BigDecimal には String コンストラクタを使用する' },
'pmd/AvoidDuplicateLiterals': { zh: '避免重复的 String 字面量', ja: '重複する文字列リテラルを避ける' },
'pmd/AvoidEnumAsIdentifier': { zh: 'enum 是保留字(Java <1.5', ja: 'enum は予約語である(Java <1.5' },
'pmd/AvoidFieldNameMatchingMethodName': { zh: '字段名与方法名相同', ja: 'フィールド名とメソッド名が一致する' },
'pmd/AvoidFieldNameMatchingTypeName': { zh: '字段名与类型名相同', ja: 'フィールド名と型名が一致する' },
'pmd/AvoidInstanceofChecksInCatchClause': { zh: '使用单独的 catch 子句', ja: '個別の catch 句を使用する' },
'pmd/AvoidLiteralsInIfCondition': { zh: '避免 if 条件中的魔术数字', ja: 'if 条件内のマジックナンバーを避ける' },
'pmd/AvoidMultipleUnaryOperators': { zh: '避免多个一元运算符', ja: '複数の単項演算子を避ける' },
'pmd/AvoidSynchronizedStatement': { zh: '避免 synchronized 语句', ja: 'synchronized 文を避ける' },
'pmd/AvoidSynchronizedAtMethodLevel': { zh: '避免在方法级别使用 synchronized', ja: 'メソッドレベルでの synchronized を避ける' },
'pmd/AvoidThreadGroup': { zh: '避免使用 ThreadGroup', ja: 'ThreadGroup の使用を避ける' },
'pmd/AvoidUsingOctalValues': { zh: '避免八进制字面量', ja: '8進数リテラルを避ける' },
'pmd/AvoidUsingVolatile': { zh: '避免 volatile 关键字', ja: 'volatile キーワードを避ける' },
'pmd/BrokenNullCheck': { zh: '错误的 null 检查(|| 与 &&', ja: '壊れた null チェック(|| vs &&' },
'pmd/CallSuperFirst': { zh: 'super 应首先调用', ja: 'super を最初に呼ぶべきである' },
'pmd/CallSuperLast': { zh: 'super 应最后调用', ja: 'super を最後に呼ぶべきである' },
'pmd/CheckSkipResult': { zh: '检查 skip() 的返回值', ja: 'skip() の戻り値を確認する' },
'pmd/ClassCastExceptionWithToArray': { zh: 'Collection.toArray() 的 ClassCastException', ja: 'Collection.toArray() の ClassCastException' },
'pmd/CloneMethodMustBePublic': { zh: '实现 Cloneable 时 clone() 必须是 public', ja: 'Cloneable の場合 clone() は public でなければならない' },
'pmd/CloneMethodMustImplementCloneable': { zh: '只有实现 Cloneable 时才有 clone()', ja: 'Cloneable の場合のみ clone() を持つ' },
'pmd/CloneMethodReturnTypeMustMatchClassName': { zh: 'clone() 协变返回类型', ja: 'clone() の共変戻り値型' },
'pmd/CloseResource': { zh: '确保资源被关闭', ja: 'リソースが閉じられることを保証する' },
'pmd/CollectionTypeMismatch': { zh: '集合方法中的类型不匹配', ja: 'コレクションメソッド内の型不一致' },
'pmd/CompareObjectsWithEquals': { zh: '对象比较使用 equals() 而非 ==', ja: 'オブジェクトの比較に == ではなく equals() を使用する' },
'pmd/ComparisonWithNaN': { zh: 'NaN 比较总是返回 false', ja: 'NaN との比較は常に false を返す' },
'pmd/ConfusingArgumentToVarargsMethod': { zh: '澄清可变参数意图', ja: '可変長引数の意図を明確にする' },
'pmd/ConstructorCallsOverridableMethod': { zh: '构造函数调用可重写方法', ja: 'コンストラクタがオーバーライド可能なメソッドを呼ぶ' },
'pmd/DataflowAnomalyAnalysis': { zh: '数据流异常', ja: 'データフロー異常' },
'pmd/DoNotCallGarbageCollectionExplicitly': { zh: '不要显式调用 System.gc()', ja: 'System.gc() を明示的に呼ばない' },
'pmd/DoNotCallSystemExit': { zh: '不要调用 System.exit()', ja: 'System.exit() を呼ばない' },
'pmd/DoNotHardCodeSDCard': { zh: '不要硬编码 /sdcard 路径', ja: '/sdcard パスをハードコードしない' },
'pmd/DoNotThrowExceptionInFinally': { zh: '不要在 finally 中抛出异常', ja: 'finally で例外を投げない' },
'pmd/DoNotUseThreads': { zh: '不要使用线程', ja: 'スレッドを使用しない' },
'pmd/DontCallThreadRun': { zh: '不要调用 Thread.run()', ja: 'Thread.run() を呼ばない' },
'pmd/DoubleCheckedLocking': { zh: '双重检查锁定不是线程安全的', ja: '二重チェックロッキングはスレッド安全でない' },
'pmd/EmptyCatchBlock': { zh: '空 catch 块', ja: '空の catch ブロック' },
'pmd/EqualsNull': { zh: '与 null 进行相等比较', ja: 'null との等価比較' },
'pmd/FinallyBlockDoesNothing': { zh: 'finally 块什么也不做', ja: 'finally ブロックが何もしない' },
'pmd/IdempotentOperations': { zh: '幂等操作', ja: '冪等な操作' },
'pmd/ImplicitSwitchFallThrough': { zh: '隐式 switch fall through', ja: '暗黙の switch フォールスルー' },
'pmd/ImportFromSamePackage': { zh: '从同包导入', ja: '同一パッケージからのインポート' },
'pmd/InstantiationToGetClass': { zh: '仅为获取类而实例化', ja: 'クラス取得のためだけのインスタンス化' },
'pmd/InvalidLogMessageFormat': { zh: '无效的 SLF4J 消息格式', ja: '無効な SLF4J メッセージ形式' },
'pmd/JUnitSpelling': { zh: 'JUnit 方法拼写', ja: 'JUnit メソッドの綴り' },
'pmd/JUnitStaticSuite': { zh: 'JUnit 静态 suite 方法', ja: 'JUnit の静的 suite メソッド' },
'pmd/JumbledIncrementer': { zh: '混乱的增量器', ja: '入り混じったインクリメンタ' },
'pmd/LoggerIsNotStaticFinal': { zh: 'Logger 不是 static final', ja: 'Logger が static final でない' },
'pmd/MethodWithSameNameAsEnclosingClass': { zh: '方法与包围类同名', ja: 'メソッドが囲むクラスと同名' },
'pmd/MisplacedNullCheck': { zh: '位置错误的 null 检查', ja: '誤った位置の null チェック' },
'pmd/MissingBreakInSwitch': { zh: 'switch 中缺少 break', ja: 'switch 内の break 欠落' },
'pmd/MissingSerialVersionUID': { zh: '缺少 serialVersionUID', ja: 'serialVersionUID の欠落' },
'pmd/MissingStaticMethodInNonInstantiatableClass': { zh: '不可实例化类缺少静态方法', ja: 'インスタンス化できないクラスに静的メソッドがない' },
'pmd/MoreThanOneLogger': { zh: '多于一个 logger', ja: 'logger が複数ある' },
'pmd/NonCaseLabelInSwitch': { zh: 'switch 中的非 case 标签', ja: 'switch 内の非 case ラベル' },
'pmd/NonStaticInitializer': { zh: '非静态初始化器', ja: '非静的初期化子' },
'pmd/NonThreadSafeSingleton': { zh: '单例不是线程安全的', ja: 'シングルトンがスレッド安全でない' },
'pmd/NullAssignment': { zh: 'null 赋值', ja: 'null 代入' },
'pmd/NumberConstructor': { zh: 'Number 构造函数(已废弃)', ja: 'Number コンストラクタ(非推奨)' },
'pmd/ObjectFinalize': { zh: 'Object finalize 问题', ja: 'Object finalize の問題' },
'pmd/OperationWithCloning': { zh: '克隆操作', ja: 'クローン操作' },
'pmd/OverrideBothEqualsAndHashcode': { zh: '同时重写 equals() 和 hashCode()', ja: 'equals() と hashCode() の両方をオーバーライドする' },
'pmd/OverridingThreadRun': { zh: '不要重写 Thread.run()', ja: 'Thread.run() をオーバーライドしない' },
'pmd/PackageDeclaration': { zh: '包声明', ja: 'パッケージ宣言' },
'pmd/ProperCloneImplementation': { zh: '正确的 clone 实现', ja: '適切な clone 実装' },
'pmd/ProperLogger': { zh: '正确的 logger', ja: '適切な logger' },
'pmd/ReturnFromFinallyBlock': { zh: '从 finally 返回', ja: 'finally からの return' },
'pmd/SimpleDateFormatNeedsLocale': { zh: 'SimpleDateFormat 需要 locale', ja: 'SimpleDateFormat に locale が必要' },
'pmd/SingleMethodSingleton': { zh: '单例模式问题', ja: 'シングルトンパターンの問題' },
'pmd/SingletonClassReturningNewInstance': { zh: '单例返回新实例', ja: 'シングルトンが新しいインスタンスを返す' },
'pmd/StaticEJBFieldShouldBeFinal': { zh: '静态 EJB 字段应为 final', ja: '静的 EJB フィールドは final にする' },
'pmd/StringBufferInstantiationWithChar': { zh: 'StringBuffer 带 char 实例化', ja: 'char を伴う StringBuffer インスタンス化' },
'pmd/SuspiciousConstantFieldName': { zh: '常量字段命名', ja: '定数フィールドの命名' },
'pmd/SuspiciousEqualsMethodName': { zh: 'equals() 方法签名', ja: 'equals() メソッドのシグネチャ' },
'pmd/SuspiciousHashcodeMethodName': { zh: 'hashCode() 方法签名', ja: 'hashCode() メソッドのシグネチャ' },
'pmd/SuspiciousOctalEscape': { zh: '可疑的八进制转义', ja: '疑わしい8進エスケープ' },
'pmd/TestClassWithoutTestCases': { zh: '没有测试用例的测试类', ja: 'テストケースのないテストクラス' },
'pmd/UnconditionalIfStatement': { zh: '无条件 if 语句', ja: '無条件の if 文' },
'pmd/UnnecessaryBooleanAssertion': { zh: '不必要的布尔断言', ja: '不要なブールアサーション' },
'pmd/UnnecessaryCaseChange': { zh: '不必要的大小写转换', ja: '不要なケース変換' },
'pmd/UnnecessaryConversionTemporal': { zh: '不必要的时间转换', ja: '不要な時間変換' },
'pmd/UnusedNullCheckInEquals': { zh: 'equals 中未使用的 null 检查', ja: 'equals 内の未使用 null チェック' },
'pmd/UseConcurrentHashMap': { zh: '并发访问使用 ConcurrentHashMap', ja: '並行アクセスに ConcurrentHashMap を使用する' },
'pmd/UseCorrectExceptionLogging': { zh: '正确的异常日志', ja: '適切な例外ログ' },
'pmd/UseDiamondOperator': { zh: '使用菱形运算符 <>', ja: 'ダイヤモンド演算子 <> を使用する' },
'pmd/UseEqualsToCompareStrings': { zh: '字符串比较使用 equals()', ja: '文字列の比較に equals() を使用する' },
'pmd/UseLocaleWithCaseConversions': { zh: '大小写转换使用 locale', ja: 'ケース変換に locale を使用する' },
'pmd/UseNotifyAllInsteadOfNotify': { zh: '使用 notifyAll() 替代 notify()', ja: 'notify() の代わりに notifyAll() を使用する' },
'pmd/UseProperClassLoader': { zh: '使用正确的类加载器', ja: '適切なクラスローダーを使用する' },
'pmd/AddEmptyString': { zh: '不要添加空字符串', ja: '空文字列を追加しない' },
'pmd/AppendCharacterWithChar': { zh: 'StringBuffer 中追加 char 而非 String', ja: 'StringBuffer には String ではなく char を追加する' },
'pmd/AvoidArrayLoops': { zh: '使用 Arrays.copyOf 或 System.arraycopy', ja: 'Arrays.copyOf または System.arraycopy を使用する' },
'pmd/AvoidCalendarDateCreation': { zh: '获取当前时间避免使用 Calendar', ja: '現在時刻に Calendar を使用しない' },
'pmd/AvoidFileStream': { zh: '避免 FileInputStream/FileOutputStream/FileReader/FileWriter', ja: 'FileInputStream/FileOutputStream/FileReader/FileWriter を避ける' },
'pmd/AvoidInstantiatingObjectsInLoops': { zh: '不要在循环中实例化对象', ja: 'ループ内でオブジェクトをインスタンス化しない' },
'pmd/BigIntegerInstantiation': { zh: '使用 BigInteger.ZERO/ONE/TEN', ja: 'BigInteger.ZERO/ONE/TEN を使用する' },
'pmd/ConsecutiveAppendsShouldReuse': { zh: '链式调用 StringBuilder.append', ja: 'StringBuilder.append をチェーンで呼ぶ' },
'pmd/ConsecutiveLiteralAppends': { zh: '合并字面量追加', ja: 'リテラルの追加を統合する' },
'pmd/InefficientEmptyStringCheck': { zh: '使用 isBlank() 替代 trim().isEmpty()', ja: 'trim().isEmpty() の代わりに isBlank() を使用する' },
'pmd/InefficientStringBuffering': { zh: '避免在 StringBuffer 构造函数中拼接', ja: 'StringBuffer コンストラクタ内での連結を避ける' },
'pmd/InsufficientStringBufferDeclaration': { zh: '预先指定 StringBuilder 容量', ja: 'StringBuilder の容量を事前指定する' },
'pmd/OptimizableToArrayCall': { zh: '使用 new Foo[0] 替代 new Foo[size]', ja: 'new Foo[size] の代わりに new Foo[0] を使用する' },
'pmd/RedundantFieldInitializer': { zh: '移除冗余的字段初始化器', ja: '冗長なフィールド初期化子を削除する' },
'pmd/StringInstantiation': { zh: '避免 new String()', ja: 'new String() を避ける' },
'pmd/StringToString': { zh: '避免对 String 调用 toString()', ja: 'String への toString() を避ける' },
'pmd/TooFewBranchesForSwitch': { zh: '少于3个分支的 switch', ja: '3未満のブランチの switch' },
'pmd/UseArrayListInsteadOfVector': { zh: '使用 ArrayList 替代 Vector', ja: 'Vector の代わりに ArrayList を使用する' },
'pmd/UseArraysAsList': { zh: '使用 Arrays.asList() 替代循环', ja: 'ループの代わりに Arrays.asList() を使用する' },
'pmd/UseIndexOfChar': { zh: '使用 indexOf(char) 而非 indexOf(String)', ja: 'indexOf(String) ではなく indexOf(char) を使用する' },
'pmd/UseIOStreamsWithApacheCommonsFileItem': { zh: '使用 getInputStream() 而非 get()', ja: 'get() ではなく getInputStream() を使用する' },
'pmd/UselessStringValueOf': { zh: '不要用 String.valueOf() 包裹', ja: 'String.valueOf() でラップしない' },
'pmd/UseStringBufferForStringAppends': { zh: '使用 StringBuilder 进行拼接', ja: '文字列連結に StringBuilder を使用する' },
'pmd/UseStringBufferLength': { zh: '使用 length() 替代 toString().equals("")', ja: 'toString().equals("") の代わりに length() を使用する' },
'pmd/HardCodedCryptoKey': { zh: '不要硬编码加密密钥', ja: '暗号鍵をハードコードしない' },
'pmd/InsecureCryptoIv': { zh: '不要硬编码初始化向量', ja: '初期化ベクタをハードコードしない' },
};
+12
View File
@@ -0,0 +1,12 @@
export default {
'pmd-jsp/DontNestJsfInJstlIteration': { zh: '不要在 JSTL 迭代内嵌套 JSF 组件', ja: 'JSTL 反復内に JSF コンポーネントをネストしない' },
'pmd-jsp/NoClassAttribute': { zh: '使用 styleclass 而非 class 属性', ja: 'class 属性ではなく styleclass を使用する' },
'pmd-jsp/NoHtmlComments': { zh: '使用 JSP 注释而非 HTML 注释', ja: 'HTML コメントではなく JSP コメントを使用する' },
'pmd-jsp/NoJspForward': { zh: '不要在 JSP 内转发', ja: 'JSP 内からフォワードしない' },
'pmd-jsp/DuplicateJspImports': { zh: '避免 JSP 中重复导入', ja: 'JSP 内の重複インポートを避ける' },
'pmd-jsp/NoInlineScript': { zh: '将 HTML 脚本内容外部化', ja: 'HTML スクリプト内容を外部化する' },
'pmd-jsp/NoInlineStyleInformation': { zh: '将样式放入 CSS 文件', ja: 'スタイルを CSS ファイルに置く' },
'pmd-jsp/NoLongScripts': { zh: '避免 JSP 中的长脚本', ja: 'JSP 内の長いスクリプトを避ける' },
'pmd-jsp/NoScriptlets': { zh: '避免 JSP 中的 scriptlet', ja: 'JSP 内のスクリプトレットを避ける' },
'pmd-jsp/JspEncoding': { zh: 'JSP 文件应使用 UTF-8 编码', ja: 'JSP ファイルは UTF-8 エンコーディングを使用すべきである' },
};
+77
View File
@@ -0,0 +1,77 @@
export default {
'sqlfluff/AL01': { zh: '表的隐式/显式别名', ja: 'テーブルの暗黙的/明示的エイリアス' },
'sqlfluff/AL02': { zh: '列的隐式/显式别名', ja: '列の暗黙的/明示的エイリアス' },
'sqlfluff/AL03': { zh: '无别名的列表达式', ja: 'エイリアスなしの列式' },
'sqlfluff/AL04': { zh: '表别名在每个子句中应唯一', ja: '表エイリアスは各句内で一意にすべきである' },
'sqlfluff/AL05': { zh: '未使用的表不应加别名', ja: '未使用のテーブルにエイリアスを付けない' },
'sqlfluff/AL06': { zh: '强制表别名长度', ja: '表エイリアスの長さを強制する' },
'sqlfluff/AL07': { zh: '避免表别名', ja: '表エイリアスを避ける' },
'sqlfluff/AL08': { zh: '列别名在每个子句中应唯一', ja: '列エイリアスは各句内で一意にすべきである' },
'sqlfluff/AL09': { zh: '列别名不应与自身相同', ja: '列エイリアスが自分自身と同じにならないようにする' },
'sqlfluff/AL10': { zh: '派生表必须使用别名', ja: '派生テーブルにはエイリアスが必要である' },
'sqlfluff/AM01': { zh: 'DISTINCT 与 GROUP BY 的歧义用法', ja: 'DISTINCT と GROUP BY の曖昧な使用' },
'sqlfluff/AM02': { zh: '优先使用 UNION DISTINCT/ALL 而非仅 UNION', ja: '単なる UNION より UNION DISTINCT/ALL を優先する' },
'sqlfluff/AM03': { zh: '歧义的排序方向', ja: '曖昧なソート方向' },
'sqlfluff/AM04': { zh: '查询产生未知数量的结果列', ja: 'クエリが未知数の結果列を生成する' },
'sqlfluff/AM05': { zh: '连接子句应完全限定', ja: '結合句は完全修飾すべきである' },
'sqlfluff/AM06': { zh: 'GROUP BY/ORDER BY 中列引用不一致', ja: 'GROUP BY/ORDER BY 内の列参照の不整合' },
'sqlfluff/AM07': { zh: '集合查询中的子查询产生不同数量的列', ja: '集合クエリ内のサブクエリが異なる数の列を生成する' },
'sqlfluff/AM08': { zh: '检测到隐式交叉连接', ja: '暗黙のクロスジョインを検出' },
'sqlfluff/AM09': { zh: '无 ORDER BY 的 LIMIT/OFFSET 是非确定性的', ja: 'ORDER BY なしの LIMIT/OFFSET は非決定的である' },
'sqlfluff/CP01': { zh: '关键字大小写不一致', ja: 'キーワードの大文字小文字が不統一' },
'sqlfluff/CP02': { zh: '未加引号的标识符大小写不一致', ja: '引用なし識別子の大文字小文字が不統一' },
'sqlfluff/CP03': { zh: '函数名大小写不一致', ja: '関数名の大文字小文字が不統一' },
'sqlfluff/CP04': { zh: '布尔/null 字面量大小写不一致', ja: 'ブール/null リテラルの大文字小文字が不統一' },
'sqlfluff/CP05': { zh: '数据类型大小写不一致', ja: 'データ型の大文字小文字が不統一' },
'sqlfluff/CV01': { zh: '一致地使用 != 或 <>', ja: '!= または <> を一貫して使用する' },
'sqlfluff/CV02': { zh: '使用 COALESCE 替代 IFNULL/NVL', ja: 'IFNULL/NVL の代わりに COALESCE を使用する' },
'sqlfluff/CV03': { zh: 'select 子句中的尾随逗号', ja: 'select 句内の末尾カンマ' },
'sqlfluff/CV04': { zh: '计数行数的一致语法', ja: '行数を数える一貫した構文' },
'sqlfluff/CV05': { zh: '与 NULL 比较应使用 IS 或 IS NOT', ja: 'NULL との比較には IS または IS NOT を使用する' },
'sqlfluff/CV06': { zh: '语句必须以分号结尾', ja: '文はセミコロンで終わらせる' },
'sqlfluff/CV07': { zh: '顶层语句不应包裹在括号中', ja: 'トップレベルの文を括弧で囲まない' },
'sqlfluff/CV08': { zh: '使用 LEFT JOIN 替代 RIGHT JOIN', ja: 'RIGHT JOIN の代わりに LEFT JOIN を使用する' },
'sqlfluff/CV09': { zh: '屏蔽一组可配置的词', ja: '設定可能な語のリストをブロックする' },
'sqlfluff/CV10': { zh: '引用的字面量一致使用首选引号', ja: '引用リテラルに推奨引用符を一貫して使用する' },
'sqlfluff/CV11': { zh: '强制一致的类型转换风格', ja: '一貫した型変換スタイルを強制する' },
'sqlfluff/CV12': { zh: '连接条件使用 JOIN ... ON ... 而非 WHERE', ja: '結合条件に WHERE ではなく JOIN ... ON ... を使用する' },
'sqlfluff/JJ01': { zh: 'Jinja 标签两侧应各有一个空格', ja: 'Jinja タグの両側に空白を1つ置く' },
'sqlfluff/LT01': { zh: '不合适的间距', ja: '不適切な間隔' },
'sqlfluff/LT02': { zh: '不正确的缩进', ja: '不適切なインデント' },
'sqlfluff/LT03': { zh: '运算符在换行前/后', ja: '改行前後への演算子の配置' },
'sqlfluff/LT04': { zh: '前导/尾随逗号的强制', ja: '先頭/末尾カンマの強制' },
'sqlfluff/LT05': { zh: '行过长', ja: '行が長すぎる' },
'sqlfluff/LT06': { zh: '函数名后未跟括号', ja: '関数名の後に括弧がない' },
'sqlfluff/LT07': { zh: 'WITH 子句的右括号应在新行', ja: 'WITH 句の閉じ括弧を新しい行に置く' },
'sqlfluff/LT08': { zh: 'CTE 右括号后应有空行', ja: 'CTE の閉じ括弧の後に空行を置く' },
'sqlfluff/LT09': { zh: 'select 目标在新行', ja: 'select 対象を新しい行に置く' },
'sqlfluff/LT10': { zh: 'SELECT 修饰符与 SELECT 同行', ja: 'SELECT 修飾子を SELECT と同じ行に置く' },
'sqlfluff/LT11': { zh: '集合运算符周围应有换行', ja: '集合演算子を改行で囲む' },
'sqlfluff/LT12': { zh: '文件必须以单个尾随换行结束', ja: 'ファイルは単一の末尾改行で終わる' },
'sqlfluff/LT13': { zh: '文件不得以换行/空白开头', ja: 'ファイルを改行/空白で始めない' },
'sqlfluff/LT14': { zh: '关键字子句在换行前/后', ja: 'キーワード句の改行前後の配置' },
'sqlfluff/LT15': { zh: '连续空行过多', ja: '連続する空行が多すぎる' },
'sqlfluff/OR01': { zh: '移除空批次', ja: '空のバッチを削除する' },
'sqlfluff/PG01': { zh: '避免 PostgreSQL DDL 中过度的锁', ja: 'PostgreSQL DDL での過度なロックを避ける' },
'sqlfluff/RF01': { zh: '引用不能引用 FROM 子句中不存在的对象', ja: 'FROM 句にないオブジェクトを参照できない' },
'sqlfluff/RF02': { zh: '多表时应限定引用', ja: '複数テーブルの場合は参照を修飾すべきである' },
'sqlfluff/RF03': { zh: '单表语句中列引用一致', ja: '単一テーブル文での列参照の一貫性' },
'sqlfluff/RF04': { zh: '关键字不应用作标识符', ja: 'キーワードを識別子として使用しない' },
'sqlfluff/RF05': { zh: '标识符中不应有特殊字符', ja: '識別子に特殊文字を含めない' },
'sqlfluff/RF06': { zh: '不必要的加引号标识符', ja: '不要な引用付き識別子' },
'sqlfluff/ST01': { zh: '不要在 CASE WHEN 中指定 else null', ja: 'CASE WHEN で else null を指定しない' },
'sqlfluff/ST02': { zh: '不必要的 CASE 语句', ja: '不要な CASE 文' },
'sqlfluff/ST03': { zh: '未使用的 CTE', ja: '未使用の CTE' },
'sqlfluff/ST04': { zh: 'ELSE 子句中的嵌套 CASE 可以扁平化', ja: 'ELSE 句内のネスト CASE は平坦化できる' },
'sqlfluff/ST05': { zh: 'Join/From 子句中的子查询;使用 CTE', ja: 'Join/From 句内のサブクエリ;CTE を使用する' },
'sqlfluff/ST06': { zh: '列顺序:通配符、简单目标、然后计算', ja: '列の順序:ワイルドカード、単純対象、計算の順' },
'sqlfluff/ST07': { zh: '连接键优先使用 ON 而非 USING', ja: '結合キーに USING より ON を優先する' },
'sqlfluff/ST08': { zh: 'DISTINCT 与括号一起使用', ja: 'DISTINCT が括弧付きで使用されている' },
'sqlfluff/ST09': { zh: '连接条件顺序', ja: '結合条件の順序' },
'sqlfluff/ST10': { zh: '冗余的常量表达式', ja: '冗長な定数式' },
'sqlfluff/ST11': { zh: '被连接的表未被引用', ja: '結合されたテーブルが参照されていない' },
'sqlfluff/ST12': { zh: '连续的分号', ja: '連続するセミコロン' },
'sqlfluff/TQ01': { zh: '用户定义存储过程不应使用 SP_ 前缀', ja: 'ユーザー定義ストアドプロシージャに SP_ プレフィックスを使わない' },
'sqlfluff/TQ02': { zh: '多语句的过程体用 BEGIN/END 包裹', ja: '複数文のプロシージャ本体を BEGIN/END で囲む' },
'sqlfluff/TQ03': { zh: '移除空批次', ja: '空のバッチを削除する' },
};
+36
View File
@@ -0,0 +1,36 @@
export default {
'stylelint/color-hex-length': { zh: '指定十六进制颜色值的短或长格式', ja: '16進カラー値の短い形式または長い形式を指定する' },
'stylelint/color-named': { zh: '要求(尽可能)或禁止使用命名颜色', ja: '名前付きカラーの使用を(可能な限り)要求または禁止する' },
'stylelint/color-no-invalid-hex': { zh: '禁止无效的十六进制颜色', ja: '無効な16進カラーを禁止する' },
'stylelint/length-zero-no-unit': { zh: '禁止零长度带单位', ja: 'ゼロ長に単位を付けることを禁止する' },
'stylelint/font-family-no-missing-generic-family-keyword': { zh: '禁止 font-family 中缺少通用字体族', ja: 'font-family での汎用ファミリーキーワードの欠落を禁止する' },
'stylelint/block-no-empty': { zh: '禁止空块', ja: '空のブロックを禁止する' },
'stylelint/declaration-block-no-duplicate-properties': { zh: '禁止声明块内重复的属性', ja: '宣言ブロック内の重複プロパティを禁止する' },
'stylelint/no-descending-specificity': { zh: '禁止低特异性的选择器覆盖高特异性', ja: '低特異性のセレクタが高特異性を上書きすることを禁止する' },
'stylelint/unit-no-unknown': { zh: '禁止未知单位', ja: '未知の単位を禁止する' },
'stylelint/property-no-unknown': { zh: '禁止未知属性', ja: '未知のプロパティを禁止する' },
'stylelint/selector-pseudo-class-no-unknown': { zh: '禁止未知的伪类选择器', ja: '未知の疑似クラスセレクタを禁止する' },
'stylelint/selector-pseudo-element-no-unknown': { zh: '禁止未知的伪元素选择器', ja: '未知の疑似要素セレクタを禁止する' },
'stylelint/function-linear-gradient-no-nonstandard-direction': { zh: '禁止 linear-gradient 中的非标准方向', ja: 'linear-gradient 内の非標準方向を禁止する' },
'stylelint/function-no-unknown': { zh: '禁止未知函数', ja: '未知の関数を禁止する' },
'stylelint/no-unknown-animations': { zh: '禁止未知动画', ja: '未知のアニメーションを禁止する' },
'stylelint/no-unknown-custom-media': { zh: '禁止未知的自定义媒体查询', ja: '未知のカスタムメディアクエリを禁止する' },
'stylelint/no-unknown-custom-properties': { zh: '禁止未知的自定义属性', ja: '未知のカスタムプロパティを禁止する' },
'stylelint/at-rule-no-vendor-prefix': { zh: '禁止 at 规则使用厂商前缀', ja: 'atルールへのベンダープレフィックスを禁止する' },
'stylelint/media-feature-name-no-vendor-prefix': { zh: '禁止媒体特性名称使用厂商前缀', ja: 'メディア特性名へのベンダープレフィックスを禁止する' },
'stylelint/property-no-vendor-prefix': { zh: '禁止属性使用厂商前缀', ja: 'プロパティへのベンダープレフィックスを禁止する' },
'stylelint/selector-no-vendor-prefix': { zh: '禁止选择器使用厂商前缀', ja: 'セレクタへのベンダープレフィックスを禁止する' },
'stylelint/value-no-vendor-prefix': { zh: '禁止值使用厂商前缀', ja: '値へのベンダープレフィックスを禁止する' },
'stylelint/color-function-notation': { zh: '要求颜色函数使用现代或传统记法', ja: '色関数に現代または従来の記法を要求する' },
'stylelint/selector-pseudo-element-colon-notation': { zh: '伪元素使用单冒号或双冒号记法', ja: '疑似要素に単コロンまたは二重コロン記法を使用する' },
'stylelint/import-notation': { zh: '要求 @import 使用字符串或 url 记法', ja: '@import に文字列または url 記法を要求する' },
'stylelint/alpha-value-notation': { zh: '要求透明度值使用百分比或数字记法', ja: 'アルファ値にパーセンテージまたは数値記法を要求する' },
'stylelint/hue-degree-notation': { zh: '要求色相度数使用数字或角度记法', ja: '色相の度に数値または角度記法を要求する' },
'stylelint/keyframe-selector-notation': { zh: '要求关键帧选择器使用关键字或百分比记法', ja: 'キーフレームセレクタにキーワードまたはパーセンテージ記法を要求する' },
'stylelint/declaration-block-no-redundant-longhand-properties': { zh: '禁止声明块中冗余的 longhand 属性', ja: '宣言ブロック内の冗長なロングハンドプロパティを禁止する' },
'stylelint/shorthand-property-no-redundant-values': { zh: '禁止 shorthand 属性中的冗余值', ja: 'shorthand プロパティ内の冗長な値を禁止する' },
'stylelint/block-no-redundant-nested-style-rules': { zh: '禁止块内冗余的嵌套样式规则', ja: 'ブロック内の冗長なネストスタイルルールを禁止する' },
'stylelint/font-family-name-quotes': { zh: '要求 font-family 名称使用引号', ja: 'font-family 名に引用符を要求する' },
'stylelint/number-max-precision': { zh: '限制数字的小数位数', ja: '数値の小数桁数を制限する' },
'stylelint/comment-whitespace-inside': { zh: '要求或禁止注释内部空白', ja: 'コメント内の空白を要求または禁止する' },
};
+38
View File
@@ -0,0 +1,38 @@
export default {
'ts-eslint/ban-ts-comment': { zh: '禁止使用 @ts-<指令> 注释', ja: '@ts-<ディレクティブ> コメントを禁止する' },
'ts-eslint/no-array-constructor': { zh: '禁止泛型 Array 构造函数', ja: 'ジェネリック Array コンストラクタを禁止する' },
'ts-eslint/no-duplicate-enum-values': { zh: '禁止重复的枚举成员值', ja: '重複する列挙メンバー値を禁止する' },
'ts-eslint/no-empty-object-type': { zh: '禁止空对象类型', ja: '空のオブジェクト型を禁止する' },
'ts-eslint/no-explicit-any': { zh: '禁止使用 any 类型', ja: 'any 型の使用を禁止する' },
'ts-eslint/no-extra-non-null-assertion': { zh: '禁止多余的非空断言', ja: '余分な非nullアサーションを禁止する' },
'ts-eslint/no-misused-new': { zh: '强制 new 和 constructor 的有效定义', ja: 'new とコンストラクタの有効な定義を強制する' },
'ts-eslint/no-namespace': { zh: '禁止自定义 TypeScript 模块和命名空间', ja: 'カスタム TypeScript モジュールと名前空間を禁止する' },
'ts-eslint/no-non-null-asserted-optional-chain': { zh: '禁止可选链之后的非空断言', ja: 'オプショナルチェーン後の非nullアサーションを禁止する' },
'ts-eslint/no-require-imports': { zh: '禁止调用 require()', ja: 'require() の呼び出しを禁止する' },
'ts-eslint/no-this-alias': { zh: '禁止为 this 创建别名', ja: 'this のエイリアス作成を禁止する' },
'ts-eslint/no-unnecessary-type-constraint': { zh: '禁止泛型类型上不必要的约束', ja: 'ジェネリック型の不要な制約を禁止する' },
'ts-eslint/no-unsafe-declaration-merging': { zh: '禁止不安全的声明合并', ja: '安全でない宣言のマージを禁止する' },
'ts-eslint/no-unsafe-function-type': { zh: '禁止使用 Function 作为类型', ja: 'Function を型として使用することを禁止する' },
'ts-eslint/no-unused-expressions': { zh: '禁止未使用的表达式', ja: '未使用の式を禁止する' },
'ts-eslint/no-unused-vars': { zh: '禁止未使用的变量', ja: '未使用の変数を禁止する' },
'ts-eslint/no-wrapper-object-types': { zh: '禁止包装对象类型(String、Number、Boolean', ja: 'ラッパーオブジェクト型(String、Number、Boolean)を禁止する' },
'ts-eslint/prefer-as-const': { zh: '优先使用 as const 而非字面量类型注解', ja: 'リテラル型注釈より as const を推奨する' },
'ts-eslint/prefer-namespace-keyword': { zh: '要求使用 namespace 关键字替代 module', ja: 'module キーワードより namespace の使用を要求する' },
'ts-eslint/triple-slash-reference': { zh: '禁止某些三斜线指令', ja: '特定のトリプルスラッシュディレクティブを禁止する' },
'ts-eslint/no-var': { zh: '要求使用 let 或 const 替代 var', ja: 'var の代わりに let または const を要求する' },
'ts-eslint/prefer-const': { zh: '对从未重新赋值的变量要求使用 const', ja: '再代入されない変数に const を要求する' },
'ts-eslint/prefer-rest-params': { zh: '要求使用剩余参数替代 arguments', ja: 'arguments の代わりに残余引数を要求する' },
'ts-eslint/prefer-spread': { zh: '要求使用展开运算符替代 .apply()', ja: '.apply() の代わりにスプレッド演算子を要求する' },
'ts-eslint/no-non-null-assertion': { zh: '禁止使用 ! 后缀运算符进行非空断言', ja: '! 接尾辞演算子による非nullアサーションを禁止する' },
'ts-eslint/no-dynamic-delete': { zh: '禁止对计算键表达式使用 delete 运算符', ja: '算出キー式への delete 演算子の使用を禁止する' },
'ts-eslint/no-useless-empty-export': { zh: '禁止不改变模块内容的空导出', ja: 'モジュールに変更を加えない空のエクスポートを禁止する' },
'ts-eslint/consistent-type-imports': { zh: '强制类型导入的一致用法', ja: '型インポートの一貫した使用を強制する' },
'ts-eslint/unified-signatures': { zh: '禁止可合并为单一签名的两个重载', ja: '単一のシグネチャに統合できる2つのオーバーロードを禁止する' },
'ts-eslint/no-extraneous-class': { zh: '禁止仅用作命名空间的类', ja: '名前空間としてのみ使用されるクラスを禁止する' },
'ts-eslint/no-useless-constructor': { zh: '禁止不必要的构造函数', ja: '不要なコンストラクタを禁止する' },
'ts-eslint/no-non-null-asserted-nullish-coalescing': { zh: '禁止空值合并运算符左操作数中的非空断言', ja: 'null合体演算子の左オペランドでの非nullアサーションを禁止する' },
'ts-eslint/no-invalid-void-type': { zh: '禁止泛型或返回类型之外的 void 类型', ja: 'ジェネリックまたは戻り値型以外での void 型を禁止する' },
'ts-eslint/prefer-literal-enum-member': { zh: '要求所有枚举成员为字面量值', ja: 'すべての列挙メンバーにリテラル値を要求する' },
'ts-eslint/prefer-enum-initializers': { zh: '要求每个枚举成员值被显式初始化', ja: '各列挙メンバー値の明示的な初期化を要求する' },
'ts-eslint/no-shadow': { zh: '禁止变量声明遮蔽外层作用域中声明的变量', ja: '外側スコープで宣言された変数を遮蔽する宣言を禁止する' },
};