PMDのJavaルールについてまとめます。バージョン6.35.0時のルールとなっています。
非推奨となっているルールには「△」を先頭に付与しています。
バージョン6.35.0から6.47.0までのルールの差分については別の記事でまとめています。 olafnosuke.hatenablog.com
Securityカテゴリ
潜在的なセキュリティ上の欠陥にフラグを立てるルールを含むカテゴリ。
HardCodedCryptoKey
暗号化操作にハードコードされた値を使用しない。
// NG SecretKeySpec secretKeySpec = new SecretKeySpec("abcde".getBytes(), "AES"); // OK SecretKeySpec secretKeySpec = new SecretKeySpec(Properties.getKey(), "AES");
ルール設定例
<rule ref="category/java/security.xml/HardCodedCryptoKey" />
InsecureCryptoIv
ハードコードされた初期化ベクトルを使用しないでランダムに生成されたIVを使用する。
// NG byte[] iv = "secret iv in here".getBytes(); // OK SecureRandom random = new SecureRandom(); byte iv[] = new byte[16]; random.nextBytes(bytes);
ルール設定例
<rule ref="category/java/security.xml/InsecureCryptoIv" />
他のカテゴリのルールもまとめています。
Best Practiceカテゴリのまとめはこちら: olafnosuke.hatenablog.com
Code Styleカテゴリのまとめはこちら: olafnosuke.hatenablog.com
Designカテゴリのまとめはこちら: olafnosuke.hatenablog.com
Documentationカテゴリのまとめはこちら: olafnosuke.hatenablog.com
Error Proneカテゴリのまとめはこちら: olafnosuke.hatenablog.com
Multithreadingカテゴリのまとめはこちら: olafnosuke.hatenablog.com
Performanceカテゴリのまとめはこちら: olafnosuke.hatenablog.com