問題タブ [findbugs]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
static-analysis - FindBugs のバグ履歴を維持する
FindBugs は、バグのデータ マイニングを行う方法を提供します。これは、さまざまなリビジョンのバグの傾向を把握するのに役立つため、興味深いものです。私がやりたいことは次のとおりです。
バージョン管理にコミットするたびに、FindBugs が実行され、レポートが生成されます。これらすべてのレポートからデータを取得し、傾向を示すレポートを生成することは可能ですか? 誰かが似たようなことをしましたか?
java - C/C++ に相当する Findbugs や PMD はありますか?
私は最近、C/C++ と Java の両方を含むコード ベース用のCoverity Preventの代替案について尋ねられました。もちろん、Java 側では、Findbugs (コンパイル済みコード分析) や PMD (静的コード分析) などの無料ツールを利用できます。これらは非常に強力であり、特に IDE (これも無料です) との統合を調査し始める場合には有効です。
ただし、さまざまなコンパイラ、アーキテクチャなどを使用して C/C++ の領域に移行し始めると、事態は危険です。
Findbugs と PMD の両方を含む、Java 側のさまざまなツールを提案しました。私が探しているのは、次のメトリックを使用することを検討した場合の C/C++ 側の最適なオプションです。
- 価格: 無料の方が優れていますが、よりお得です。ただし、コード行ごとに課金する価格モデルは恐ろしいものです。
- 機能セット: このツールは私の生活をどのように改善しますか? チェックインする前、コードを出荷する前などに、どのような方法で間違いを検出しますか?
- ユーザビリティ: デスクでツールを使用できますか? レポートや調査結果を共有できますか? このツールを Fogbugz (私のグループで使用しています) と統合できますか? このツールを CruiseControl (または同等のもの) に統合できますか?
究極のツールは、Findbugs と PMD を同じ機能セットで組み合わせたのと同じくらい便利で使いやすく、1 シートあたり 0 ドルで提供されるものです。
java - Findbugs + JSR305: デフォルトの動作を指定する可能性は?
注: 私が話しているこれらの注釈は、JSR305 で指定されています。
私は最新の Findbugs (1.3.9) を使用しており、@ Nonnull で注釈が付けられたフィールドが null に割り当てられている場合、エラーを正しく検出します。
しかし、私のプロジェクトでは、「null 以外のロジック」がデフォルトのケースです。null は 5% のケースでのみ明示的に許可されていると言え ます。
そのため、フィールドの 95% に @Nonnull のアノテーションを付けるのは非常に不便です。これらの 5% のフィールドに @Nullable で注釈を付けたいと思います。
パッケージ全体に @Nonnull のアノテーションを付けようとしましたが、何も変わりません。
では、どういうわけかデフォルトのロジックを指定することは可能ですか?
java - コードアナライザー:PMDとFindBugs
1. PMDについて:
1.1 PMDチェックを設定して、「変数名が短すぎる、または長すぎる」、「空のコンストラクターを削除するなど」などの一部を無視するにはどうすればよいですか。そうすると、クラスが必要であるという別の警告が表示されます。いくつかの静的メソッドがあります。基本的に、クラスは後の開発のために空でした、そして私は今のところそれをそのままにしておくのが好きです。
1.2この警告アドバイスに従う必要がありますか?
1.3それはどういう意味ですか?
1.4これはどうですか?私はこれを変更したいのですが、現時点では変更に関して何も頭に浮かびません。
2.FindBugsについて:
2.1宣言より後のある時点で、静的フィールドに書き込むのは本当に悪いことですか?次のコードは私に警告を与えます:
ここappCalendar
で、は静的変数です。
2.2このコード:
警告を出します:
はどこにobjBRdr
ありますかBufferedReader(FileReader)
。何が起こる可能性がありますか?readLine()
nullになる可能性がありますか?コードはwhile (objBRdr.ready())
テストでネストされており、これまでのところ、問題はありません。
Update1:2.2は、コードを次のように置き換えたときに修正されました。
java - BlockedQueue で同期する
私がレビューしているコード部分があります ( FindBugsを使用)。
}
このコードで FindBugs を実行すると、次のように不平を言う -
このメソッドは、java.util.concurrent パッケージ (またはそのサブクラス) のクラスのインスタンスであるオブジェクトの同期を実行します。これらのクラスのインスタンスには、synchronized キーワードの使用とは異なり、互換性のない独自の同時実行制御メカニズムがあります。
同期されたコード部分をコメントアウトすると、synchronized(q){
不平を言います-
このメソッドは、明らかにオブジェクトのロックを保持せずに Object.notify() または Object.notifyAll() を呼び出します。ロックを保持せずに notify() または notifyAll() を呼び出すと、IllegalMonitorStateException がスローされます。
FindBugs 検証に合格するには、このメソッドをどのように実装すればよいでしょうか? 上記の実装は、並行クラスの場合の通知に適していますか?
ありがとうございました。
java - シンプルで一般的な関心のある、コードアナライザーベースのJavaの質問
OK、PMDとFindBugsコードアナライザーでいくつかのコードをレビューした後、レビューしたコードに大きな変更を加えることができました。ただし、修正方法がわからないことがいくつかあります。以下でそれらを繰り返し、(より良い参考のために)各質問に番号を付けます。それらのいずれか/すべてに自由に答えてください。お待ち頂きまして、ありがとうございます。
1.いくつかのルールを削除したとしても、コードを再評価した後も、関連する警告は表示されたままです。なぜですか?
2.宣言を見てください:
ゲッターとセッターによるオブジェクトへの参照:
さて、なぜ最初の宣言ではPMDに関する警告が表示されないのに、2番目の宣言では次の警告が表示されるのでしょうか。
その警告の詳細については、こちらをご覧ください。
3.これもPMDによって与えられた別の警告です:
その警告の詳細については、こちらをご覧ください。
今、私はそれに同意しますが、私がこのようなものを書いたらどうなりますか?
私はルールに同意する傾向がありますが、コードのパフォーマンスが複数の出口点を示唆している場合、どうすればよいですか?
4. PMDは私にこれを与えます:
私が次のようなものを宣言するとき:
nullへの割り当てを削除すると、この情報(警告のレベルはinfo)を削除しますが、コードの後半のある時点で、変数が初期化されていない可能性があるというエラーがIDEから発生しました。だから、私はそれに固執しています。警告を抑えることがあなたにできる最善のことですか?
5. PMD警告:
これは、GUIコンポーネントのシングルトーン使用の場合、または複雑なオブジェクトを返すメソッドの場合です。catch()セクションで結果をnullに割り当てると、不完全/一貫性のないオブジェクトが返されないようにする必要があるため、正当化されます。はい、NullObjectを使用する必要がありますが、それを実行したくない場合があります。その場合、その警告を抑制する必要がありますか?
6. FindBugsの警告#1:
メソッドで
静的変数の
この変数を使用すると、フォームがすでに作成されて表示されているかどうかをテストできます。場合によっては、フォームの再作成を強制する必要があります。ここに他の選択肢はありません。洞察はありますか?(MyClassはリスナーを実装するため、オーバーライドされたhandleEvent()メソッドです)。
7. FindBugsの警告#2:
この警告は、他のクラスの単純なインポートに基づいて表示されます。この警告を消すために、これらのインポートをリファクタリングする必要がありますか?または、問題はMyClass2に依存していますか?
OK、今のところ十分に言われています。より多くの発見やあなたの答えに基づいて、更新を期待してください。ありがとう。
java - インストール時にmavenでfindbugsを自動的に実行する方法
findbugs プラグインを mavenに追加するのは簡単です。
ただし、実行するたびに実行したい
単体テストと同じように。つまり、findbugs でバグが見つかった場合にインストールを成功させたくありません。これを行う方法はありますか?