Java静的解析ツールのレビュー
10379 ワード
Javaコードとコードレビューのコードがワークフローの一部である場合、以下のリストを参照することをお勧めします.ここにいくつかのJava静的解析ツールがあります.
pmd Java
PMDはJavaソースコードをスキャンし、potential problemsを探します.
問題は命名規則と未使用のコードや変数をコードのパフォーマンスと複雑さに壊すことから、多くの可能なバグを忘れない範囲です.
PMDプロジェクトもJavaScript、PLSQL、Apacheの速度、XMLとXSLをサポートします.また、CPDは、いくつかの言語で重複コードを検出するツールを出荷します.
PMDはEclipse、NetBeans、Intellijのアイデア、テキストパッド、Maven、AntおよびEmacsを含むいくつかのツールとエディタと統合します.
以下に、いくつかのコードを通してPMDを実行する方法のサンプルを示します.
チェックスタイル
名前が示すように、Checkstyleはコードがコーディング規約に準拠していることを確認します.
ツールは、別のコードのスタイルの規則をサポートすることができます設定可能です.つの例はSun Code ConventionsとGoogle Java Styleです(太陽からのものは1999年以降維持されませんでした).
チェックスタイルリポジトリにGoogleのJavaスタイルのconfiguration fileを見つけることができます.
設定といえば、これはどのモジュールを使用するかを設定するXMLファイルで行われます.以下に設定ファイルの例を示します:
Findbug
FindBugsはJavaコードのバグを探します.
パターンはいくつかのカテゴリーに分類されます:悪い練習、正しさ、悪意のあるコードの脆弱性、マルチスレッドの正しさ、パフォーマンス、セキュリティとdodgyコード(2つの追加のカテゴリーが存在します.
Findbugを実行する方法はいくつかありますが、400 different bugsのように感じます.
これは、Eclipse、Maven、NetBeans、ジェンキンズ、ハドソンとintellijと統合します.
Findbugは、新しいバグ検出器を追加できるようにするプラグインアーキテクチャをサポートしています……
command line interface
セキュリティバグ
は、Find Security Bugsのチェックを加えるfindbugsのためのプラグインです.
あなたは、敏感なデータ露出と無効なリダイレクトへの注射とXSS保護の異なるタイプから、80 additional different vulnerability typesの脆弱点に関連するパターンの範囲を見つけるでしょう.
また、Androidの特定のいくつかのパターンがあります.
ハッシュ化されたパスワードのような単純なものを忘れないで、ハッシュ法とDOS脆弱性のような他の一般的なものもあります.
OWASP 10
結論
異なる言語の類似したツールと同様に、これらのJava静的解析ツールはお互いを補います、そして、あなたがコード品質について気にかけて、技術的な負債を避けるならば、我々はあなたが彼らをチェックすることを勧めます.
両方のPMDとチェックスタイルはすでにCodacyのような自動化されたコードレビューと統合されています.
自動化されたコードレビューツールを使用すると、これらの分析のすべてを自動的にあなたがコミットを行うたびに行われることを意味し、加えて特定の問題に関する追加の詳細を明らかにするために拡張可能な問題のリストとどのように解決するためのリストです.
pmd Java
PMDはJavaソースコードをスキャンし、potential problemsを探します.
問題は命名規則と未使用のコードや変数をコードのパフォーマンスと複雑さに壊すことから、多くの可能なバグを忘れない範囲です.
PMDプロジェクトもJavaScript、PLSQL、Apacheの速度、XMLとXSLをサポートします.また、CPDは、いくつかの言語で重複コードを検出するツールを出荷します.
PMDはEclipse、NetBeans、Intellijのアイデア、テキストパッド、Maven、AntおよびEmacsを含むいくつかのツールとエディタと統合します.
以下に、いくつかのコードを通してPMDを実行する方法のサンプルを示します.
$ pmd pmd -R java-basic,java-unusedcode -d Deck.java
/Users/pmd/my/project/Deck.java:35: Avoid unused private fields such as 'classVar2'.
/Users/pmd/my/project/Deck.java:47: Avoid unused private fields such as 'instanceVar3'.
警告(さまざまな方法で)を抑制することができますし、また、JavaまたはXPathのいずれかで独自の規則を書くことができます.チェックスタイル
名前が示すように、Checkstyleはコードがコーディング規約に準拠していることを確認します.
ツールは、別のコードのスタイルの規則をサポートすることができます設定可能です.つの例はSun Code ConventionsとGoogle Java Styleです(太陽からのものは1999年以降維持されませんでした).
チェックスタイルリポジトリにGoogleのJavaスタイルのconfiguration fileを見つけることができます.
設定といえば、これはどのモジュールを使用するかを設定するXMLファイルで行われます.以下に設定ファイルの例を示します:
$ checkstyle -c checkstyle.xml Deck.java
Starting audit...
/Users/checkstyle/my/project/Blah.java:0: File does not end with a newline.
/Users/checkstyle/my/project/Deck.java:23: Line has trailing spaces.
/Users/checkstyle/my/project/Deck.java:70: Line has trailing spaces.
Audit done.
Checkstyle ends with 3 errors.
Findbug
FindBugsはJavaコードのバグを探します.
パターンはいくつかのカテゴリーに分類されます:悪い練習、正しさ、悪意のあるコードの脆弱性、マルチスレッドの正しさ、パフォーマンス、セキュリティとdodgyコード(2つの追加のカテゴリーが存在します.
Findbugを実行する方法はいくつかありますが、400 different bugsのように感じます.
$ findbugs -textui .
M P UuF: Unused field: java.deck.Deck.classVar2 In Deck.java
M P UuF: Unused field: java.deck.Deck.instanceVar3 In Deck.java
M D UuF: Unused public or protected field: java.deck.Deck.instanceVar2 In Deck.java
M D UuF: Unused public or protected field: java.deck.Deck.classVar1 In Deck.java
M D UuF: Unused public or protected field: java.deck.Deck.instanceVar1 In Deck.java
Warnings generated: 5
出力の最初の文字は(潜在的な)バグの重大度( low , medium , high )を指し、2番目はカテゴリ(この場合、パフォーマンスのためのpとdodgyコードのためのd )です.これは、Eclipse、Maven、NetBeans、ジェンキンズ、ハドソンとintellijと統合します.
Findbugは、新しいバグ検出器を追加できるようにするプラグインアーキテクチャをサポートしています……
command line interface
セキュリティバグ
は、Find Security Bugsのチェックを加えるfindbugsのためのプラグインです.
あなたは、敏感なデータ露出と無効なリダイレクトへの注射とXSS保護の異なるタイプから、80 additional different vulnerability typesの脆弱点に関連するパターンの範囲を見つけるでしょう.
また、Androidの特定のいくつかのパターンがあります.
ハッシュ化されたパスワードのような単純なものを忘れないで、ハッシュ法とDOS脆弱性のような他の一般的なものもあります.
OWASP 10
結論
異なる言語の類似したツールと同様に、これらのJava静的解析ツールはお互いを補います、そして、あなたがコード品質について気にかけて、技術的な負債を避けるならば、我々はあなたが彼らをチェックすることを勧めます.
両方のPMDとチェックスタイルはすでにCodacyのような自動化されたコードレビューと統合されています.
自動化されたコードレビューツールを使用すると、これらの分析のすべてを自動的にあなたがコミットを行うたびに行われることを意味し、加えて特定の問題に関する追加の詳細を明らかにするために拡張可能な問題のリストとどのように解決するためのリストです.
Reference
この問題について(Java静的解析ツールのレビュー), 我々は、より多くの情報をここで見つけました https://dev.to/codacy/review-of-java-static-analysis-tools-3jp7テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol