SimpleDateFormatのCheckstyle / PMDルールがスレッドセーフではない警告
-
29-10-2019 - |
質問
最近、SimpleDateFormat
がスレッドセーフではないため、多くのバグに遭遇しました。
私が見つけた理由は、正しく同期されていないか、別のスレッド用に新しいインスタンスが作成されていないためです。
それで、PMD / Checkstyleを作成して、将来、誰かがSimpleDateFormat
を使用した場合に、スレッドセーフではないという警告が表示されるようにしようと思いました。
Checkstyleは初めてですが、どうすればこれを実現できるか説明してもらえますか?
解決
FindBugsは、DateFormatが静的フィールドとして定義されている場合に警告を出力できます。ただし、オブジェクトがどのように使用されているかを理解する必要があるため、DateFormatのスレッドセーフでない使用法を検出することは非常に困難です。このためのCheckStyleルールを書くことは不可能だと思います。少なくとも、多くの誤検知を検出せずにはいられません。
DateFormatを直接使用することを禁止し、それをカスタムクラスにラップするか、スレッドセーフなApache CommonsFastDateFormatの使用を義務付ける必要があるかもしれません。
所属していません StackOverflow