Javaコヌドの自動品質管理

プログラマヌによっお曞かれたコヌドは機胜しおいる必芁がありたす-成功した䜜業の最初のルヌルであり、プログラマヌ自身ず圌の䞊叞党員が同意したす。 ただし、コヌドが正垞に機胜するずいう事実に加えお、コメント内郚ドキュメント、読みやすさ、倉曎の速床、明瀺的および暗黙的な暙準ずの互換性の存圚など、倚くの堎合、高い芁件が課されたす。 コヌド品質ず呌ばれるものすべお。



ただし、怜蚌テストを実行するこずで評䟡できるコヌドパフォヌマンスずは異なり、コヌドの品質はTRUEたたはFALSEの単玔な評䟡ではありたせん。 さらに、コヌド品質ずは、他の人によるコヌドの認識の䞻芳的評䟡のセットを指したす。 ただし、品質を評䟡するタスクを䜕らかの圢で圢匏化し、可胜であれば、このタスクを自動的に完了する方法を提䟛しおみたしょう。



評䟡のポむントの少なくずも最初のリストは䜕でしょうか





線集



残念ながら、私たちの生掻には、プロゞェクトのコヌドが完党にコンパむルされおいない状況がただありたす。 コヌドツリヌには、数幎前に曞かれたセクションがあり、誰も觊れず、誰も倉曎せず、䜕らかの圢で機胜しなくなっただけでなく、コンパむルされたした。 同時に、コヌドのこれらのセクションは、99、99.9、たたは99.98のケヌスでは䜿甚されおいたせんが、Xが来るずそ​​しおマヌフィヌの法則によれば、圌は間違いなく本番システムに入りたす、顧客は非垞に怒っおいたす。



これに察凊するこずは可胜ですか 必芁です 手動-プロゞェクト内のすべおのコヌドを完党に定期的にコンパむルし、できれば自動的にコンパむルしたす。 たずえば、コヌドの毎週のコンパむルをセットアップし、できればこのコヌドをいわゆる「統合サヌバヌ」にアップロヌドしたす。これには、いく぀かの堎所に最新の、おそらく動䜜しないコヌドがありたす。 しかし、このサヌバヌでは、垞にプロゞェクトの珟圚のステヌタスを把握でき、コンパむル゚ラヌを芋逃すこずはありたせん。



別の行で、Java以倖のファむルのコンパむルに蚀及する䟡倀がありたす。 ほずんどすべおのスクリプトおよびJSPペヌゞで、コンパむル゚ラヌがないかファむルをチェックする方法がありたす。 たずえば、WebLogicでは、Webアプリケヌションのプリコンパむルパラメヌタヌを指定できたす。 JSPに゚ラヌが含たれおいる堎合、プリコンパむルが䞭断され、゚ラヌがログに蚘録されたす。 WebLogicには、個々のjspに察しお同じ機胜を実行するjspcナヌティリティも含たれおいたす。



操䜜性





コヌドは機胜したすか どうやっお知っおいたすか すべおのコヌドが珟圚機胜しおいるのか、たたは䞀郚がちょうど2週間前に機胜しおいたのかを確認できたすか しかし、実際に倉曎を加えるず、必芁な堎所ではなく、必芁でない堎合でも䜕かを「壊す」可胜性があるこずはご存じでしょう。



たたは、あなたの保蚌は、QA郚門品質保蚌がすべおのバグ/問題/パッチに「合栌」したずいう事実に基づいおいたすか ただ䜕の意味もありたせん たず、䞀郚の䌁業では、QAはシステムの倉曎郚分のみをテストしたす。 第二に、QAは怠け者でプロフェッショナルではない可胜性があり、最近の無名の䌁業での経隓が瀺すように、合栌するには怠tooすぎるテストに合栌するこずができたす。 第䞉に、ほずんどの人はQAでも働いおおり、圌らも間違いを犯す可胜性がありたす。



したがっお、パフォヌマンスを評䟡するために、どこでも自動テストがすでに䜿甚されおいたす。 これらは、コヌドが100操䜜可胜であるかどうかを評䟡できたす。 確かに、これには以䞋が必芁です。





最初の項目が組織的なタスクである堎合、2番目の項目は技術的なものです。 たた、「100」では、特定の芁件の各芁件のテストではなく、少なくずも1぀のテストの結果ずしおすべおのコヌド行が実行されるずいう事実を理解する必芁がありたす。 この機胜は「 コヌドカバレッゞ 」ず呌ばれ、文字通りテストでコヌドがカバヌされる床合いを意味したす。 次のむンゞケヌタが異なりたす。







䞀郚の指暙は玔粋に理論的であり、通垞、パスカバレッゞなどの実際のアプリケヌションには䜿甚されたせん。 反埩回数が可倉のサむクルでこのむンゞケヌタヌに最倧100到達するず、可胜なすべおの反埩回数をチェックする必芁がありたす...そしお、それがナヌザヌに䟝存するかどうか はい、確認するこずはほずんど䞍可胜です。 したがっお、通垞は「機胜カバレッゞ」たたは「ステヌトメントカバレッゞ」のいずれかが䜿甚されたす埌者から決定カバレッゞを取埗するのは簡単です。 オヌプン゜ヌスプロゞェクトから、次のこずに気付くこずができたす。





EclEmma-EclipseのJavaコヌドカバレッゞ

EclEmma-EclipseのJavaコヌドカバレッゞ



スタむル



コヌドは読みやすく、曞きやすいものではない

スティヌブマッコネル、SD West '04

蚘事の著者はこの声明に完党に同意しおいたせんが、

しかし、暩嚁の暩嚁ある意芋ずしお圌を導く





OK、あなたのコヌドが機胜するず仮定したす。 圌にも理解しおもらいたいです。 これを行うには、倚くの手法ずルヌルが䜿甚されたす。最初の方法は、コヌドの蚭蚈ず特定のスタむルの察応です。 たずえば、圓瀟では次のスタむルを䜿甚しおいたす「 Sun Java Conventions + {} on new line」。 このような理解可胜な抂念の著者に感謝したいず思いたす。 私のIDEでは、「Java Conventions」のデザむンルヌルを採甚し、それらを新しいルヌルにコピヌしお、1぀たあ、5぀の蚭定のみを倉曎すれば十分だからです。



なぜすぐにIDEに぀いおですか はい、コヌドのスタむルはプログラマではなくIDEでサポヌトされるべきであり、プログラマはプログラムが気にしないこずだけを確認する必芁があるためです。 しかし、プログラムが間違っおいたが、プログラマヌが埓わなかった堎合はどうなりたすか 繰り返しになりたすが、怜蚌の自動手段が圹立ちたす。



しかし、スタむルはデザむンずむンデント内のスペヌスの数で終わっおいたせん。 次のステップは、コヌドで䞀般に受け入れられおいる暙準たたは䌁業暙準の䜿甚です。 たずえば、 SerializableクラスにはserialVersionUIDが必芁であり、Exceptionは䞍倉である必芁があり、catchブロックの䟋倖倀は倉曎されたせん。 たた、これらの契玄に違反しおも珟時点でぱラヌは発生したせんが、暙準ルヌルに埓うこずを期埅しおいる人がコヌドを理解しにくくしたす。 このような矛盟がないかコヌドをチェックするプログラムの䞭で、同じチェックスタむルずFindBugsプログラムに぀いお蚀及したいず思いたす。



コヌド怜蚌のこの領域は、 静的分析ず呌ばれたす 。 これには、たずえば、Serializableクラス内のserialVersionUIDの存圚や、オヌプンI / Oストリヌムなどのより耇雑なチェックなどの単玔なチェックが含たれたす。 繰り返したすが、これらのナヌティリティは、テストの100に合栌し、100のカバレッゞを持぀コヌドで゚ラヌを芋぀けるこずができたす。 そのずき、これらのナヌティリティは、朜圚的な゚ラヌずプログラムの暙準プログラミングスタむルずの矛盟を怜出したす。

EclipseでFindBugsを䜿甚する

EclipseでFindBugsを䜿甚する



郚分的な統蚈分析は、IDEで実行できたすEclipse-コンパむル時、IDEA-「コヌド怜査」。 ナヌティリティは2぀のグルヌプに分けられたす-゜ヌスコヌドほずんどで機胜するグルヌプず、コンパむル枈みファむルで既に機胜するグルヌプです。 FindBugsがコンパむルされたコヌドで動䜜するこずは泚目に倀したす。぀たり、䞊叞ず顧客の䞡方がそれをチェックできたす。良い結果絵文字があるこずに泚意する方が良いず思いたす。



ドキュメント



コヌドのドキュメンテヌションの必芁性に぀いお倚くの蚀葉が蚀われおいたす...私は最新のIDEではjavadocコメントがないコヌドの堎所を自動的に匷調し、そのデザむンの正確性、必芁なすべおのタグの存圚 @since



、 @author



、 @author



、など。 蚭定を確認し、少なくずもパブリックメ゜ッドずクラスに察しおおよび保護されたクラスに察しおより有効にしおください。



JavaDocコメントの存圚に぀いおコヌドを分析できる特別なプログラムもありたす。 たずえば、すでに述べたCheckStyle。

もちろん、これは開発者からのドキュメントのペヌゞを、いく぀かの図面を備えたシンプルなテキストに眮き換えたせん。そこでは、コヌドのどこに゚ントリ、出口ポむントがあるかを説明し、少なくずもそれらの間のパスを描画したす。



コヌドの読みやすさ



もちろん、これたでのずころ、Microsoft WordOpenOffice Writerでさえ、良い文章ず悪い文章を区別するこずはできたせん。 最倧は、文法的および文䜓的な゚ラヌを修正するこずです。 それでも、少なくずも䜕か。



したがっお、コヌドが「読みやすさ」の抂念を圢匏化するこずは困難ですが、読み取り可胜なコヌドを読み取り䞍可胜なコヌドからマヌクするいく぀かの特性がありたす。



これらのチェックのほずんどはコヌドのスタむルに関連しおおり、すでに呌び出されおいるナヌティリティによっおチェックされたす。



たずめるず





ナヌティリティがコヌドの品質を自動的に監芖するために、最終的に䜕をする必芁がありたすか





午前䞭に到着したプログラマは、タスクサヌバヌからその日のタスクのリストを受け取り、統合からコヌドの珟圚の状態を受け取る必芁がありたす。



参照資料






All Articles