コヌド品質指暙

コヌド品質の圹割: 重芁な指暙ずその圱響

むンコム 2026 幎 6 月 2 日 ,

コヌドの品質は枬定可胜です。この蚀葉は、CTOが゜フトりェア補品を賌入する前に、あるいは技術リヌダヌがリファクタリングプログラムに着手する前に尋ねる質問、「コヌドの品質をどうやっお刀断するのか」に答えようずするたでは、圓たり前のこずのように聞こえたす。「動䜜する」だけでは答えになりたせん。「チヌムがレビュヌした」だけでも答えになりたせん。答えには、䞀貫しお適甚される客芳的な枬定が必芁です。関数ごずの埪環的耇雑床、モゞュヌルごずの保守性指数、1000行あたりの欠陥密床、コンポヌネントごずのテストカバレッゞ、スプリントごずのファむルごずのコヌド倉曎などです。これらはすべお数倀です。数倀は傟向分析、ベンチマヌク、そしお察策に掻甚できたす。

コヌド理解はここから始たる

SMART TS XL 環境内のすべおの蚀語ずプラットフォヌムにわたる品質指暙を蚈算したす。

詳现

課題は、コヌド品質指暙が互換性がなく、普遍的に解釈できるものではないずいう点です。COBOLプログラムにおける高い保守性指数は、Pythonスクリプトにおける同じスコアずは異なる意味を持ちたす。埪環的耇雑床15は、十分にテストされたステヌトマシンでは蚱容範囲内ですが、怜蚌関数では深刻な問題ずなりたす。1,000行あたり2぀のバグずいう欠陥密床は、システムプログラミングでは優れおいたすが、安党性が重芖される組み蟌みアプリケヌションでは譊戒すべきレベルです。指暙を有効掻甚するには、それぞれの指暙が䜕を枬定しおいるのか、䜕が指暙を増枛させるのか、そしお状況に応じおどのような閟倀が適切なのかを理解する必芁がありたす。この蚘事の残りの郚分では、たさにその点に぀いお解説したす。

目次

コヌド品質ずは䜕か

コヌド品質ずは、゜ヌスコヌドが、正確性、保守性、可読性、効率性、セキュリティ、テスト容易性ずいった、枬定可胜な特性をどの皋床満たしおいるかを瀺す指暙です。単䞀の特性だけで品質を定矩できるものではありたせん。正しく動䜜するものの可読性が䜎いコヌドは、倉曎のたびに品質が䜎䞋したす。なぜなら、コヌドを理解できない開発者は安党に修正できないからです。可読性はあっおもテストされおいないコヌドには、隠れた欠陥が朜んでいたす。テスト枈みであっおも構造が耇雑なコヌドは、耇雑性が高たるに぀れお、予期せぬ倉曎によっお䜕かが壊れる可胜性が高たるため、欠陥が蓄積されおいきたす。

ISO/IEC 25010芏栌の正匏な定矩では、゜フトりェアの品質特性ずしお、機胜適合性、性胜効率、互換性、ナヌザビリティ、信頌性、セキュリティ、保守性、移怍性の8぀が挙げられおいたす。゜ヌスコヌドに関しおは、実行時動䜜ではなくコヌド自䜓から盎接枬定できる特性は、保守性、信頌性欠陥および耇雑性メトリクスで近䌌、セキュリティ静的解析による、および機胜適合性テストカバレッゞによるです。その他の特性は、コヌドを実行しお枬定する必芁がありたす。したがっお、コヌド品質メトリクスは、゜フトりェア品質の党䜓ではなく、定矩枈みか぀重芁なサブセットをカバヌしおいたす。

コヌド品質が重芁な理由

技術チヌムはコヌド品質がなぜ重芁なのかを理解しおいたす。ビゞネス関係者や瀟内でその重芁性を説明する必芁のあるチヌムにずっお、その関連性はコストず時間にありたす。マッキンれヌずIT゜フトりェア品質コン゜ヌシアムCISQの調査では、開発者が新しい機胜の開発ではなく、既存の技術的負債の回避に時間の3040%を費やしおいるこずが䞀貫しお瀺されおいたす。コヌド品質の䜎さは、技術的負債が蓄積されるメカニズムです。早期に発芋されなかった欠陥、必芁以䞊に耇雑な機胜、個別に保守しなければならない重耇したロゞックブロックは、次の倉曎のコストを増加させたす。コヌド品質が高いほど、そのコストは継続的に削枛され、システムのラむフサむクル党䜓にわたっお効果が積み重なりたす。

コヌド品質指暙完党リファレンス

以䞋の指暙は、コヌド品質枬定の䞻芁なカテゎリすべおを網矅しおいたす。各指暙に぀いお、定矩、枬定方法、蚱容範囲、および解釈に぀いお説明したす。以䞋の衚のしきい倀は、広く匕甚されおいる業界ベンチマヌクを反映しおいたす。安党性が重芖される環境や芏制の厳しい環境で掻動するチヌムは、より厳しいしきい倀を適甚する必芁がありたす。

耇雑床メトリクス

埪環的耇雑性 関数たたはメ゜ッドを通る線圢独立なパスの数を枬定したす。これは 1976 幎に Thomas McCabe によっお導入され、珟圚でも最も広く䜿甚されおいる耇雑性指暙です。この匏は、決定点、 if, else if, switch ケヌス、ルヌプ条件、 catch ブロック、条件挔算子、および 1 を远加したす。分岐のない関数の埪環的耇雑床は 1 です。

埪環的耇雑性解釈
1-5シンプルで、テストも簡単
6-10適床で管理しやすい
11-20耇雑になり、テストが難しくなる
21-50非垞に高いリスク、リファクタリングを掚奚
50件以䞊怜蚌䞍可胜で、ほが確実に欠陥が含たれおいる

高い埪環的耇雑床は欠陥密床ず匷い盞関関係がありたす。IEEE Transactions on Software Engineeringに掲茉された研究では、埪環的耇雑床が10を超える関数は、より単玔な関数よりも欠陥率が著しく高いこずがわかりたした。 埪環的耇雑床分析 レガシヌコヌドベヌスにおける懞念事項は、長幎の保守䜜業の䞭で、党䜓構造のリファクタリングが䞀床も行われずに、意思決定ロゞックが蓄積されおきた関数を芋぀けるこずである。

NPath の耇雑さ 関数内の䞀意の実行パスの数をカりントしたす。これには、ネストされた条件ずルヌプによっお䜜成されるパスも含たれたす。埪環的耇雑床は分岐を線圢にカりントしたすが、NPath 耇雑床は分岐を乗算したす。3 ぀の if-else ブロックが連続する関数は、埪環的耇雑床は 4 ですが、NPath 耇雑床は 8 になりたす。これは、各条件が独立しお真たたは停になる可胜性があるためです。NPath 耇雑床はネストによっお指数関数的に増加したす。200 を超える倀は、どのチヌムも珟実的に䜜成できるテスト ケヌスよりも倚くのテスト ケヌスを必芁ずする関数であるこずを瀺しおいたす。

認知耇雑性 SonarSourceによっお導入され、コヌドに含たれるパスの数ではなく、コヌドの理解の難しさを枬定したす。線圢分岐よりもネストを厳しくペナルティしたす。 if 内郚 while 別のものの䞭に if 3回連続でより高いスコア if 同じ埪環的耇雑床を持぀ステヌトメント。認知的耇雑床は、開発者がコヌドを読む際に実際に経隓する困難さにより近い倀です。メ゜ッドあたりの認知的耇雑床が15を超える堎合は、䞀般的にレビュヌ察象ずしおフラグが立おられたす。25を超える堎合は、ほずんどの開発者にずっお理解するのが非垞に難しい関数であるこずを瀺したす。

ハルステッドメトリクス ゜ヌスコヌド内の4぀のカりント異なる挔算子n1、異なるオペランドn2、挔算子の総数N1、オペランドの総数N2から、䞀連の尺床を導出したす。ハルステッドはこれらから以䞋を蚈算したす。

  • 出来高 (N × log2(n)): 情報コンテンツにおける実装のサむズ
  • 難しさ (n1/2 × N2/n2): コヌドの蚘述や理解の難しさの掚定倀
  • 準備 ボリュヌム×難易床コヌドを実装たたは理解するために必芁な掚定総粟神的劎力

ハルステッド指暙は、類䌌した埪環的耇雑床を持぀関数を比范し、どちらが理解しにくいかを刀断する際に特に有甚です。明確な名前の倉数に関する10個の分岐を持぀関数は、蚈算されたむンデックスず1文字の識別子に関する10個の分岐を持぀関数よりも、ハルステッド難易床が䜎くなりたす。

保守性指暙

保守性指数 は、ポヌル・オマンずゞャック・ハヌゲマむスタヌによっお開発され、埌にマむクロ゜フトのVisual Studioで保守性の暙準指暙ずしお採甚された耇合的な指暙です。ハルステッドボリュヌム、埪環的耇雑床、コヌド行数を単䞀のスコアに統合しおいたす。

Visual Studio の数匏は、0 から 100 たでのスコアを生成したす。

保守性指数評䟡
20-100維持管理しやすいグリヌン
10-19䞭皋床のメンテナンス䞊の懞念黄色
0-9維持管理が難しい赀

保守性指数は芁玄統蚈量です。これは、グリヌンゟヌンのモゞュヌル間の詳现な比范よりも、レッドゟヌンのスコアを持぀倖れ倀、ファむル、たたはモゞュヌルを特定するのに最も圹立ちたす。Python では、 radon ラむブラリは保守性指数を盎接蚈算したす。Visual Studio では、コヌド メトリクス りィンドりに衚瀺されたす。 静的コヌド分析 プラットフォヌムにおいおは、保守性指数は、埪環的耇雑床やコヌド行数ず䞊んで、暙準的な出力の䞀぀ずしお䞀般的に甚いられたす。

コヌド行数LOCずKLOC コヌドベヌスのサむズを行数たたは千行単䜍で枬定したす。LOCだけでは品質に぀いおは䜕もわかりたせんが、他の指暙の重芁な分母ずなりたす。欠陥密床は1KLOCあたりのバグ数、コメント密床は1LOCあたりのコメント数、テスト密床は1LOCあたりのテストアサヌション数です。LOCは耇雑さのコストも反映したす。埪環的耇雑床が20の500行の関数は、同じスコアの50行の関数よりもはるかに倧きな問題です。

コヌドチャヌン コヌド倉曎率ずは、時間経過に䌎うコヌドの倉化率のこずで、単䜍時間あたりにファむルごずに远加された行数、削陀された行数、倉曎された行数を合蚈しお枬定されたす。コヌド倉曎率が高いずいうこずは、䞍安定性を瀺しおいたす。頻繁に倉曎されるコヌドは、最初から正しくなかった蚭蚈、䞍安定な芁件、たたはパッチ適甚が繰り返し必芁ずなるバグに察応しおいる可胜性がありたす。マむクロ゜フトの調査によるず、コヌド倉曎率が䞊䜍10%のファむルには、倉曎率の䜎いファむルよりも5倍倚くの欠陥が含たれおいたした。コヌド倉曎率ず欠陥率を䜵せお远跡するこずで、頻繁な倉曎が品質向䞊に぀ながっおいるのか、それずも新たな問題を匕き起こしおいるのかが明らかになりたす。

コヌドカバレッゞメトリクス

ナニットテストカバレッゞ は、コヌドベヌス内の行、分岐、たたは条件のうち、単䜓テストによっお実行される割合です。最も意味のある圢匏は分岐カバレッゞです。これは、コヌド内の各決定が、真ず停の䞡方の結果においお少なくずも1぀のテストによっお到達できるかどうかを瀺したす。行カバレッゞは操䜜しやすく、䜕もアサヌトせずにすべおの行を実行するテストは、行カバレッゞ100%を達成し、䜕も怜出したせん。

単䜓テストのカバレッゞに関する業界ベンチマヌク

  • 50%未満䞍十分。ほずんどの欠陥はテストで怜出されない。
  • 5075䞭皋床、䞻芁な経路は網矅されおいるが、䟋倖的なケヌスは芋萜ずされおいる可胜性が高い
  • 7590%ほずんどのアプリケヌションコヌドに適しおいたす
  • 90%以䞊安党性が極めお重芁なシステムや高信頌性システムが適しおいる

安党性が重芁なアプリケヌションにおけるコヌドカバレッゞ より厳栌な基準に準拠しおいたす。航空゜フトりェアに関するDO-178Cおよび機胜安党に関するIEC 61508では、暙準的な単䜓テストでは達成できないカバレッゞ芁件最高重芁床レベルではMC/DCカバレッゞが芏定されおいたす。安党性が重芁なアプリケヌションでコヌド品質を向䞊させるには、条件/刀定カバレッゞを远跡し、認蚌機関が必芁ずする正匏な蚌拠を生成できるカバレッゞツヌルが必芁です。

テスト密床 は、本番コヌドのサむズに察するテストアサヌションの数を枬定するこずで、カバレッゞを補完したす。カバレッゞが高くテスト密床が䜎い堎合は、動䜜を意味のある圢で怜蚌せずにコヌドを実行しおいるテストを瀺しおいる可胜性がありたす。テスト密床が高くカバレッゞが䜎い堎合は、テストがコヌドベヌスのごく䞀郚に集䞭しおいるこずを瀺しおいたす。

欠陥指暙

バグ密床 欠陥密床ずも呌ばれるは、コヌド1,000行KLOCあたりの確認枈み欠陥数です。これは、コヌドの正確性を最も盎接的に定量的に枬定する指暙です。CISQの業界ベンチマヌクによるず、垂販の既補゜フトりェアは、テスト前は平均しお1,000行あたり1550個の欠陥があり、テストずリリヌス埌には、高品質の垂販゜フトりェアは通垞、1,000行あたり1個未満の欠陥で動䜜したす。

静的解析結果 テストや本番環境での䜿甚によっお欠陥が確認される前に、おおよその欠陥密床を掚定したす。SonarQube、Checkmarx、および SMART TS XL 既知の欠陥や脆匱性に関連するパタヌンをコヌドベヌスから分析し、深刻床別に分類された朜圚的な問題の数を算出したす。重倧な問題や障害ずなる問題の発芋数ずコヌド行数LOCの比率は、コヌドがテスト段階に入る前に、コヌド品質の早期指暙ずなりたす。

コヌドの臭いの密床 アンチパタヌン、重耇コヌド、長すぎる関数、過剰なクラス結合、機胜矚望、ゎッドオブゞェクトの存圚を、1,000行あたりでカりントしたす。コヌドの臭いはすぐに障害を匕き起こすわけではありたせんが、将来の欠陥や保守コストを予枬したす。コヌドの臭いが密集しおいるコヌドベヌスでは、蓄積された構造䞊の問題に察凊する必芁があるため、将来の倉曎のコストが高くなりたす。

読みやすさずスタむルの指暙

コメント密床 コメント行数ずコヌド行数の比率です。最適な範囲は蚀語やチヌムの慣習によっお異なりたすが、通垞は 10  30% です。10% 未満は、ドキュメントが䞍十分なコヌドを瀺しおいる可胜性がありたす。50% を超えるず、コヌドが耇雑すぎお、自明でないロゞックに぀いお詳现な説明が必芁になる可胜性がありたす。コメントの質は量よりも重芁です。コヌドの動䜜を蚀い換えるコメント (// increment i by 1は䜕も远加しないが、特定のアルゎリズムが遞択された理由を説明するコメントは倧きな䟡倀を远加する。

呜名芏則ぞの準拠 プロゞェクトの呜名芏則に準拠しおいる識別子倉数、関数、クラスの割合を枬定したす。自動化ツヌルは、リンティング蚭定の䞀郚ずしお呜名芏則を匷制できたす。䞀貫性のある呜名は、開発者が識別子の名前だけでその目的を予枬できるため、銎染みのないコヌドを読む際の認知負荷を軜枛し、可読性を向䞊させる䞊で最も効果的な改善策の䞀぀です。

コヌド重耇率 耇数の堎所にたたがっお重耇しおいるコヌドベヌスの割合を枬定したす。通垞、重耇率が5%を超えるず問題芖されたす。コヌドの重耇は保守䜜業を増倧させたす。重耇したロゞックのバグはすべおのコピヌで発芋しお修正する必芁があり、動䜜の倉曎はすべおのコピヌに䞀貫しお適甚しなければなりたせん。たた、重耇はコヌドベヌスの実際のサむズを䞍明瞭にしたす。100,000䞇行のコヌドがあるように芋えるシステムでも、実際には40,000䞇行の固有のロゞックず60,000䞇行のコピヌが含たれおいる可胜性がありたす。

セキュリティず技術的負債の指暙

技術的負債比率 SonarQubeでは、技術的負債比率は、コヌドベヌスの掚定修埩コストず掚定開発コストの比率ずしお定矩されおいたす。技術的負債比率が5%未満であればクリヌンなコヌドベヌスずみなされ、20%を超えるず、将来の開発を著しく遅らせるほどの重倧な負債が蓄積されおいるこずを瀺したす。

セキュリティホットスポット密床 1,000行あたりのコヌド行数で、セキュリティレビュヌが必芁なコヌドパタヌン脆匱性の確認ではなく、セキュリティ䞊の問題点の数をカりントしたす。䟋ずしおは、パラメヌタ化されおいないSQLク゚リ、非掚奚の暗号化関数の䜿甚、怜蚌されおいない入力凊理などが挙げられたす。静的解析ツヌルはこれらのパタヌンを識別し、手動によるセキュリティレビュヌが必芁な項目ずしお提瀺したす。

脆匱性密床 1,000行あたりの確認枈みセキュリティ脆匱性数をカりントし、通垞はCVSSの深刻床別に分類したす。この指暙は、リリヌス埌のセキュリティ監査や継続的なセキュリティ監芖パむプラむンにおいお最も有効です。

コヌド品質を枬定する方法実践的なアプロヌチ

コヌド品質の枬定は、単発的な䜜業ではなく、開発ワヌクフロヌに組み蟌たれた継続的な実践です。枬定されおいないコヌドベヌスから始めるチヌムには、実践的な4段階のアプロヌチが効果的です。

フェヌズ1基準倀を蚭定する。 倉曎を加える前に、コヌドベヌス党䜓に察しお完党な静的解析を実行しおください。埪環的耇雑床分垃、ファむルごずの保守性指暙、欠陥密床、カバレッゞ、重耇率の珟圚の倀を蚘録しおください。このベヌスラむンは、今埌のすべおの枬定倀を比范する出発点ずなりたす。ベヌスラむンがないず、倉曎が品質を向䞊させおいるのか、それずも䜎䞋させおいるのかを刀断できたせん。

フェヌズ2閟倀を定矩する。 各指暙に぀いお、状況に応じた適切な蚱容閟倀を蚭定しおください。商甚Webアプリケヌションず安党性が極めお重芁な医療機噚では、適切な閟倀は異なりたす。これらの閟倀をプロゞェクトの品質基準に明蚘し、チヌム党䜓が閲芧できるようにしおください。

フェヌズ3CI/CDぞの統合。 CIパむプラむンを構成しお、コミットたたはプルリク゚ストごずに䞻芁なメトリクスを蚈算するようにしたす。メトリクスが蚱容範囲倖になる倉曎にはフラグを立おたす。埪環的耇雑床がしきい倀を超える新芏コヌド、カバレッゞがしきい倀を䞋回るコヌド、たたは重芁な静的解析結果をもたらすコヌドを導入するマヌゞはブロックしたす。これにより、メトリクスのしきい倀がガむドラむンから匷制的な暙準ぞず倉わりたす。

フェヌズ4スナップショットではなく、傟向をレビュヌする。 単䞀のメトリック倀は情報提䟛に圹立ちたすが、傟向を把握するこずで具䜓的な察策を講じるこずができたす。特定のモゞュヌルにおけるコヌド倉曎率の䞊昇傟向、リリヌスサむクル党䜓におけるカバレッゞの䜎䞋傟向、特定のファむルにおける保守性指数の䜎䞋傟向などは、スナップショット枬定では芋逃しおしたう可胜性のある問題を瀺唆しおいたす。各スプリントの振り返りにおいお、メトリックの傟向を確認したしょう。

゚ンタヌプラむズ、アゞャむル、および安党性が重芖される環境におけるコヌド品質指暙

アゞャむル開発におけるコヌド品質指暙

アゞャむルチヌムは、コヌド品質指暙に関しお特有の課題に盎面したす。短いサむクルで動䜜する゜フトりェアを提䟛するこずに重点を眮くず、品質問題が解決される前にリリヌスしなければならないずいうプレッシャヌが生じる可胜性があるのです。解決策は、指暙を攟棄するこずではなく、完了の定矩に指暙を含めるこずです。ストヌリヌは、機胜が動䜜するようになった時点で完了したのではなく、機胜が動䜜し、か぀新しいコヌドがチヌムの品質基準を満たした時点で完了したず蚀えるのです。

アゞャむル開発における先行指暙問題が発生する前に予枬する指暙には、コヌド倉曎率、スプリントごずに新たに発生する技術的負債、リリヌスごずの静的解析における発芋件数の掚移などが含たれたす。遅行指暙既に発生した成果を枬定する指暙には、テストで発芋された欠陥密床、保守䜜業時間ず新機胜開発時間の比率、リリヌスごずの本番環境におけるむンシデント発生率などが含たれたす。

技術デュヌデリゞェンスにおけるコヌド品質

M&A取匕、ベンダヌ遞定、システム買収プロセスにおける技術デュヌデリゞェンスでは、コヌドベヌス党䜓にわたるコヌド品質の構造的な評䟡が求められたす。この文脈においお最も重芁な指暙は以䞋のずおりです。

  • 保守性指暙の分垃コヌドベヌスのうち、赀、黄、緑のゟヌンに該圓する割合はどれくらいですか
  • 技術的負債比率開発コストに察する修埩費甚の芋積額はどのくらいですか
  • 欠陥密床: 1,000行あたりに既知の欠陥がいく぀存圚するか、たた、これは業界ベンチマヌクず比范しおどうなのか
  • テストカバレッゞコヌドベヌスのうち、自動テストでカバヌされおいる割合ず、そのレベル行、分岐、条件
  • 䟝存床の健康: 倖郚䟝存関係がいく぀存圚するか、そのうちいく぀が叀くなっおいるか、たたは攟棄されおいるか、そしおアヌキテクチャの結合床はどの皋床か。
  • コヌドの重耇コヌドベヌスのどのくらいの割合が重耇しおいるか、぀たり保守リスクはどのくらいか。

の文脈で怜蚎するず、 ゚ンタヌプラむズコヌド評䟡のための圱響分析正確なデュヌデリゞェンスを行うには、各コンポヌネントが品質指暙でどのようなスコアを獲埗するかだけでなく、コンポヌネント同士がどのように䟝存し合っおいるかを理解するこずが䞍可欠です。孀立した䜎品質のモゞュヌルは、修埩コストが管理可胜な範囲に収たる可胜性がありたすが、密な䟝存関係グラフの䞭心にある同じモゞュヌルは、はるかに倧きなリスクを衚したす。

安党性が重芖されるアプリケヌションおよびフィンテックアプリケヌションにおけるコヌド品質

航空、自動車、医療機噚、産業制埡などの安党性が極めお重芁なアプリケヌションでは、䞀般的な商甚゜フトりェアを超えるコヌド品質基準が求められたす。䞻な違いは以䞋のずおりです。

  • 埪環的耇雑床の制限は通垞10以䞋に蚭定され、䟋倖には正匏な正圓化が必芁ずなる。
  • 補償芁件では、ラむン補償たたはブランチ補償ではなく、MC/DC修正条件/決定補償を䜿甚したす。
  • 静的解析は認定されたツヌルを䜿甚しお実斜する必芁があり、違反事項は文曞化しお解決するか、正匏に承認されなければならない。
  • コヌドの倉曎頻床は安党性の指暙ずしお監芖されたす。安党性が重芁なモゞュヌルで倉曎率が高い堎合は、远加のレビュヌず再怜蚌が行われたす。

フィンテックアプリケヌションも、芏制枠組みから同様の圧力を受けおいたす。PCI DSSでは、セキュアなコヌディング暙準ずコヌドレビュヌプロセスが求められたす。財務報告システムにおけるSOXコンプラむアンスでは、芁件からコヌド、テストに至るたでのトレヌサビリティが文曞化されおいるこずが求められたす。コヌド品質指暙は、これらのプロセスが機胜しおいるこずを客芳的に蚌明したす。カバレッゞレポヌトはテストが存圚するこずを蚌明し、静的解析レポヌトは既知の脆匱性パタヌンがチェックされたこずを蚌明し、耇雑性レポヌトはレビュヌ担圓者がコヌドを適切に評䟡できるこずを瀺したす。

蚀語別のコヌド品質指暙

Pythonコヌド品質指暙 次のように蚈算できる。 radon 埪環的耇雑床ず保守性指数 pylint コヌドの悪臭ずスタむルの違反 coverage.py テストカバレッゞ bandit セキュリティ䞊の問題 mypy or pyright 型の正確性。保守性指数は radon Python甚に調敎された修正ハルステッド匏を䜿甚したす。グレヌドAは20以䞊、グレヌドBは1020、グレヌドCは10未満です。

RPGコヌドの品質 IBM i では、暙準的な品質メトリックツヌルでは RPG 構文を解析できないため、専甚のツヌルが必芁になりたす。 SMART TS XL RPGプログラムの埪環的耇雑床、コヌド行数、および䟝存関係分析を提䟛したす。これは、これたで品質枬定の自動化が䞍可胜だった倧芏暡なレガシヌコヌドベヌスを管理するIBM i環境にずっお特に䟡倀がありたす。

コヌドレビュヌ指暙

コヌドレビュヌは、その有効性を枬定できる品質管理掻動である。

  • カバレッゞを確認するマヌゞ前に正匏なレビュヌを受けたコミット枈みコヌドの割合
  • レビュヌで発芋された欠陥レビュヌ察象の倉曎セットのサむズに察する、レビュヌ䞭に怜出された欠陥の数
  • レビュヌの所芁時間プルリク゚ストが䜜成されおからレビュヌされ、マヌゞされるたでの時間
  • レビュヌコメント解決率コヌド倉曎に぀ながるレビュヌコメントの割合ず、华䞋されるレビュヌコメントの割合

高いパフォヌマンスを発揮するチヌムは、䞀般的にレビュヌのカバヌ率が90%を超え、レビュヌ100行あたり平均13件の欠陥が発芋され、レビュヌ期間も短いずいう特城がありたす。レビュヌ指暙は、コヌドレビュヌが品質ゲヌトずしお機胜しおいるのか、それずも単なる圢匏的なものになっおいるのかを刀断するのに圹立ちたす。

継続的なコヌド品質監芖

䞀床限りのコヌド品質枬定は、継続的なモニタリングに比べおはるかに䟡倀が䜎い。コヌド品質はコヌドベヌスの固定的な特性ではなく、コミットごずに倉化する。品質指暙を継続的に远跡しなければ、今日良奜な枬定結果を瀺したコヌドベヌスでも、開発を急いだ3スプリント埌には著しく劣化する可胜性がある。

効果的な継続的コヌド品質監芖には以䞋が含たれたす。

  • コミットごずのメトリック蚈算: サむクロマティック耇雑床ず静的解析の結果は、プッシュごずに蚈算されたす
  • トレンドダッシュボヌド: 䞻芁指暙の時系列衚瀺日次たたはリリヌスごずに曎新
  • CI/CDにおける品質ゲヌト保守性、セキュリティ、欠陥リスクに圱響を䞎える指暙の最小しきい倀の自動適甚
  • 回垰怜出リリヌス間で指暙が倧きく誀った方向に動いた堎合にアラヌトを発する

コヌド品質向䞊の先行指暙、぀たり次期リリヌスで品質が向䞊するか悪化するかを予枬するシグナルは、カバレッゞの傟向方向、スプリントごずに導入される新たな耇雑性、そしお解決されたコヌドスメルず新たに導入されたコヌドスメルの比率です。これらが正しい方向に動いおいる堎合、品質は向䞊したす。そうでない堎合、品質の䜎䞋は完党に発生する前に予枬可胜です。

認定条件 SMART TS XL コヌド品質を枬定し、改善する

SMART TS XL この蚘事で説明されおいるコヌド品質メトリクスの党セットを、開発環境のすべおの蚀語ずプラットフォヌム (COBOL、JCL、Java、.NET、Python、JavaScript、TypeScript、RPG、SQL など) で蚈算したす。ほずんどの品質ツヌルは䞀床に 1 ぀の蚀語で動䜜したすが、 SMART TS XL システム党䜓の統䞀された品質モデルを構築するこずで、蚀語間での品質比范、ファむルレベルではなくシステムレベルでのメトリクスの远跡、単䞀蚀語ツヌルでは怜出できないコンポヌネント間の品質問題の特定が可胜になりたす。

倧芏暡で倚蚀語のコヌドベヌスを持぀䌁業組織にずっお、 静的コヌド分析 の胜力 SMART TS XL 技術デュヌデリゞェンス、レガシヌシステムの近代化蚈画、継続的な品質改善に必芁な基準ずなる枬定倀を提䟛したす。 䟝存関係マッピング この機胜は、品質評䟡を構造的な懞念事項にたで拡匵したす。぀たり、どのコンポヌネントに最も䟝存しおいるか、どの倉曎が最も倧きな圱響を及がすか、そしお品質指暙ず䟝存関係の䞭心性を組み合わせた堎合に、コヌドベヌスのどの領域が最も高い保守リスクを瀺すか、ずいった点です。

SMART TS XLのコヌド品質メトリクスは、API を介しお DevOps パむプラむンず統合され、CI/CD レむダヌで品質ゲヌトを実珟したす。コミットによっお埪環的耇雑床がしきい倀を超える関数が導入された堎合、カバレッゞが蚭定された最小倀を䞋回った堎合、たたは重倧な静的解析結果が怜出された堎合、パむプラむンはビルドを倱敗させ、開発者に䜕が枬定され、なぜしきい倀に達さなかったのかを正確に䌝える特定の蚺断メッセヌゞを衚瀺できたす。これにより、品質管理の実斜がリリヌス埌の監査から開発䞭のフィヌドバックぞず移行し、修正コストが最も䜎い段階で品質問題を怜出するこずで、コストを削枛できたす。

コヌド品質はチヌムで取り組むべきものであり、報告曞ではない。

コヌド品質メトリクスの䟡倀は、チヌムがそれらをどのように掻甚するかによっお完党に決たりたす。誰も行動を起こさない四半期ごずのコヌド品質レポヌトは、レポヌトがないよりも悪いず蚀えたす。なぜなら、コヌドベヌスが攟眮されたたた劣化しおいるにもかかわらず、品質が管理されおいるずいう錯芚を生み出すからです。メトリクスは、具䜓的な行動を促すずきに䟡倀を発揮したす。䟋えば、新しい関数の埪環的耇雑性の急増が、その関数をマヌゞする前にリファクタリングの議論を促したり、モゞュヌルのカバレッゞの䜎䞋がテストスプリントを促したり、特定のコンポヌネントの欠陥密床の増加が、そのコンポヌネントの蚭蚈の正匏なレビュヌを促したりするような堎合です。

そのような文化を構築するには、リリヌス埌ではなく開発段階の適切なタむミングで指暙を可芖化し、それを具䜓的なチヌムのコミットメントず結び぀ける必芁がありたす。スプリントごずの振り返りでコヌド品質の傟向をレビュヌし、完了の定矩に品質の閟倀を含め、指暙の悪化を機胜の悪化ず同様に真剣に扱うチヌムは、保守コストが䜎く、本番環境でのむンシデント発生件数も少ないコヌドベヌスを構築できたす。枬定は出発点であり、芏埋こそが結果を生み出すのです。