問題タブ [pmd]

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.

0 投票する
17 に答える
68054 参照

java - Checkstyle 対 PMD

Java 製品のビルド システムに静的解析ツールを導入しています。Maven2 を使用しているため、CheckstylePMDの統合は無料です。ただし、基本的なスタイル ルールを適用するという点では、これら 2 つのツールの機能には大きな重複があるようです。

これらの両方を使用する利点はありますか?1 つが機能する場合、2 つのツールを維持したくありません。どちらかを選択する場合、どれを使用する必要がありますか?また、その理由は何ですか?

FindBugs の使用も計画しています。他に検討すべき静的解析ツールはありますか?

更新: PMD が CheckStyle よりも優先されるというコンセンサスがあるようです。両方を使用する確固たる理由はわかりません。また、2 セットのルール ファイルを維持したくないので、おそらく PMD のみを対象とします。また、FindBugs を導入し、最終的には Macker を導入してアーキテクチャ ルールを適用する予定です。

0 投票する
7 に答える
1270 参照

java - パラメータとして渡されたオブジェクトの値の変化を検出します

私は今、このようなコードで作業しています

パラメータとして渡されたオブジェクトを変更するのは悪い習慣だと思います。そのようなコードを検出するツールはありますか?findbugs、pmd、checkstyleを調べましたが、これに対するチェックは見つかりませんでした。

PS悪い例でごめんなさい。

0 投票する
5 に答える
28408 参照

java - 非一時的なクラス メンバーに対する Java PMD の警告

オンライン:

次の PMD 警告が表示されます。

非一時的で非静的なメンバーが見つかりました。一時的なものとしてマークするか、アクセサーを提供してください。

誰かがこの警告がある理由とその意味を説明できますか? (修正方法はわかりますが、なぜそこにあるのかわかりません...)

他の多くのメンバー宣言でもこれを取得しています...


編集:私のクラスは間違いなくBeanではなく、シリアル化できません...

0 投票する
2 に答える
6433 参照

java - PMD ルール DataflowAnomalyAnalysis 奇数

次の JUnit テストがあります。

また、PMD は次の違反を示します。

私のファイルの 36 行目は、メソッドが定義されている行です。

違反が何を言っているのかわかりません。これら 3 つの変数はどこで定義すればよいでしょうか。AnnouncerThread が違反に含まれていないのはなぜですか? 宣言を無駄に並べ替えようとしたのと同じ方法で宣言されています。

0 投票する
5 に答える
13645 参照

java - C/C++ に相当する Findbugs や PMD はありますか?

私は最近、C/C++ と Java の両方を含むコード ベース用のCoverity Preventの代替案について尋ねられました。もちろん、Java 側では、Findbugs (コンパイル済みコード分析) や PMD (静的コード分析) などの無料ツールを利用できます。これらは非常に強力であり、特に IDE (これも無料です) との統合を調査し始める場合には有効です。

ただし、さまざまなコンパイラ、アーキテクチャなどを使用して C/C++ の領域に移行し始めると、事態は危険です。

Findbugs と PMD の両方を含む、Java 側のさまざまなツールを提案しました。私が探しているのは、次のメトリックを使用することを検討した場合の C/C++ 側の最適なオプションです。

  1. 価格: 無料の方が優れていますが、よりお得です。ただし、コード行ごとに課金する価格モデルは恐ろしいものです。
  2. 機能セット: このツールは私の生活をどのように改善しますか? チェックインする前、コードを出荷する前などに、どのような方法で間違いを検出しますか?
  3. ユーザビリティ: デスクでツールを使用できますか? レポートや調査結果を共有できますか? このツールを Fogbugz (私のグループで使用しています) と統合できますか? このツールを CruiseControl (または同等のもの) に統合できますか?

究極のツールは、Findbugs と PMD を同じ機能セットで組み合わせたのと同じくらい便利で使いやすく、1 シートあたり 0 ドルで提供されるものです。

0 投票する
1 に答える
1078 参照

pmd - html/jsp ファイルをチェックするための PMD ルール

ファイル (txt、html、jsp など) の正規表現をチェックする PMD ルールを作成したいと考えています。ルールは Java または XPath 構造を使用しません。

アイデアは、ファイルを読み取り、分析された行に従って違反を追加することです。Rule メソッドを使用してこれを行う方法がわかりません...

何か案が?

ありがとう、

アンドレ

0 投票する
2 に答える
7759 参照

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は、コードを次のように置き換えたときに修正されました。

0 投票する
1 に答える
4084 参照

java - PMD-パブリックメソッドが多すぎるかどうかを確認します(ただし、コンストラクターとゲッター/セッターは除外します)

クラスにパブリックメソッドが多すぎないことを確認するためにPMDチェックを追加したいのですが、コンストラクターとゲッター/セッターをチェックに含めたくありません。

ExcessivePublicCountチェックには、コンストラクター、ゲッター/セッター、およびパブリック変数が含まれていますが、カスタマイズする方法がわかりません。

TooManyMethodsチェックは、ゲッター/セッターを除外しますが、他のすべて(プライベートメソッドを含む)を含みます。チェックのXPathコードは次のとおりです。

誰かが私が望むものを達成するためにこれを変更するのを手伝ってくれるか、PMDでこれを行う別の方法を提案できますか?

0 投票する
3 に答える
3112 参照

java - シンプルで一般的な関心のある、コードアナライザーベースのJavaの質問

OK、PMDFindBugsコードアナライザーでいくつかのコードをレビューした後、レビューしたコードに大きな変更を加えることができました。ただし、修正方法がわからないことがいくつかあります。以下でそれらを繰り返し、(より良い参考のために)各質問に番号を付けます。それらのいずれか/すべてに自由に答えてください。お待ち頂きまして、ありがとうございます。

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、今のところ十分に言われています。より多くの発見やあなたの答えに基づいて、更新を期待してください。ありがとう。