私が何度も何度も考えてきたことの 1 つは、変化を測定するために何らかの指標をどのように使用できるかということです。これは、私たちが改善している大規模なレガシー コード ベースのコンテキストにあります。ほとんどのコードは、C の遺産を持つ C++ です。いくつかの新機能と GUI は C# で書かれています。
まず、単純な複雑さのレベルが時間の経過とともにコード内で変化しているかどうかを少なくとも確認できます。難しさは表現を持つことです。2D マップがコードを表す 3D サーフェスを作成し、3D サーフェスが膨らんだり膨らんだりして変化を示す複雑さを表す色のヒート マップを作成することもできます。
数値の行列を生成できるようになると、このような処理を行うための数学システムがたくさんあります。
時間が経つにつれて、より洗練された数字を入れたいと思っていますが、変化を表すために使用されたのと同じ視覚化手法を使用しています。
そのコードをカバーする単体テストの複雑さと数の比率に焦点を当てるというCrap4jの考え方が気に入っています。
Uncle Bob の SOLID メトリクスと、Chidamber および Kemerer OO メトリクスの一部も含めたいと思います。難しいのは、C++ 用にこれらを生成するツールを見つけることです。唯一のオプションは、Krakatau Essential Metricsのようです (ツールにお金を払うことに異論はありません)。CK メトリクスを使用したいという私の願望は、Henderson-Sellers によるObject-Oriented Metrics: Measures of Complexityと以前のObject-Oriented Software Metricsという本から部分的に来ています。
これらのメトリクスを多数使用し始めると、時間の経過とともに変化する 10 程度の数値になる可能性があります。私は統計についてかなり無知ですが、そのような指標の束を追跡し、どの指標が変化する傾向にあるかに注意を払うことは興味深いと思われます。
関連する質問は、大規模なコード ベース全体でのコード品質の測定に関するものであることに注意してください。私は変化を測定することにもっと興味があります。