2

クラスに一連の値を内部的にキャッシュさせます。これらの値は定期的に更新でき、キャッシュされたコンテンツは適切に更新されます。このクラスのユーザーが次のようなことを行う限り:

...
public void anyMethod(anyParams) {
    AnyObject value = CacheClass.getValue(anyKey);
    ...
}

そうすれば、その「価値」がローカルに維持されないので、人生はうまくいくでしょう。ただし、誰かが次のようなことをした場合:

public class MyClass {
    private AnyObject value = CacheClass.getValue(someKey);
   ...
}

次に、キャッシュされた値が更新された場合、それを使用しても新しい値が表示されない場合があります。

Sonar を介したビルドでは、findbugs、checkstyle、および PMD を使用します。したがって、これらのシステムのいずれかでルールを定義して、上記の 2 番目のタイプの使用法を検出してフラグを立てる方法があるかどうか疑問に思っています。私はこれらのシステムでルールを書いたことがないので、できるだけ多くのアドバイスをいただければ幸いです (「それは可能ですが、実際にはそこに行きたくない...」など)。

4

1 に答える 1

5

AST ノードで XPath をたどると、CacheClass メソッドを呼び出す Field 宣言がキャッチされます。

//FieldDeclaration[//PrimaryExpression/PrimaryPrefix/Name/@Image='CacheClass.getValue']

PMD カスタムルールの書き方

于 2013-05-02T11:26:19.897 に答える