7

私が何度も何度も考えてきたことの 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 程度の数値になる可能性があります。私は統計についてかなり無知ですが、そのような指標の束を追跡し、どの指標が変化する傾向にあるかに注意を払うことは興味深いと思われます。

関連する質問は、大規模なコード ベース全体でのコード品質の測定に関するものであることに注意してください。私は変化を測定することにもっと興味があります。

4

3 に答える 3

3

キヴィアット ダイアグラムを使用して、時間の経過とともに進化する複数のソフトウェア メトリック ディメンションを表すことを検討します。これらのダイアグラムは、中心点の周りの凹型ハル内の複数のデータ ポイントを表しています。目視検査は、特定のメトリックがどこで上昇または下降しているかを示します。ヒューリスティックな面積計算を使用して、メトリック値によってバイアスされた面積の全体的な比率を計算できるはずです。

于 2010-10-13T04:21:46.523 に答える
1

また、コード メトリクスに関する NDepend ドキュメントも参照できます。免責事項: 私はツール NDepend の開発者の 1 人です。

Code Rule and Query over LINQ (CQLinq)機能を使用すると、コード ベースの時点で 2 つの異なるスナップショットにわたってコード メトリックの進化/トレンドを求めることができます。たとえば、提案されているデフォルトのルールがあります。以下のスクリーンショットに示されているように、複雑なメソッドをさらに複雑にすることは避けてください。

複雑なメソッドをさらに複雑にしない

次のようないくつかのメトリック傾向ルールが提案されています。

コード メトリックの視覚化に関しては、NDepend を使用すると、インタラクティブなツリーマップを通じてコード メトリック値を視覚化できます。

ツリーマップで視覚化されたコード メトリック

于 2010-10-18T17:07:21.647 に答える
0

このトピックには新しいアプローチがあります。例 https://github.com/databricks/koalas/pull/840#issuecomment-536949320ここに画像の説明を入力

詳細については、 https ://softagram.com/docs/visualizing-code-changes/ を参照するか、次の 2 つのキーワードを使用して検索エンジンで画像検索を実行してください: softagram koalas

免責事項: 私は Softagram で働いています。

于 2020-10-05T20:07:17.167 に答える