2

私は最近、Stackoverflowに投稿を書き、メトリックを計算するいくつかのC#ライブラリ、主にCCを要求しました...残念ながら成功しませんでした。だから私はそれを自分で書くつもりです。私はウェブ上で最善のアプローチを検索しましたが、始める前に、どのようにそれを行うかについてお聞きしたいと思います。

私は現在、2種類のアプローチの中間にいます

  • ソースコードディレクトリを指定して、CCを計算できるようにするためのメソッド、条件文などの構造を識別するために、正規表現などを使用してソースコードを解析します。
  • アセンブリが与えられたら、それをロードして分析します(CodeDomを使用しますか?)

ソースコードを直接解析することは私にとって良いアプローチではないように思われるので、私は2番目のアプローチに向いています。.Netフレームワークに統合されているCodeDomについて読みました。私はそれが動的コード生成に使用されることを知っています。コード構造の分析にも使えると思いますよね?誰かがCodeDomを使用するための良い出発点、いくつかのヒント、どこから始めるべきか良いチュートリアルを持っていますか?

ありがとう

編集:または、ソースコードを簡単に解析できる他のユーティリティ(DOMのような構造)。

4

6 に答える 6

3

Gendarmeは、 Mono.Cecilの助けを借りて、いくつかのコードメトリック(一種)を実行します。おそらく、それはあなたが達成しようとしていることを助けるでしょう?

于 2009-07-08T23:19:46.733 に答える
0

CodeDom を使用する際の問題は、それが一方通行であることです。コードを生成するための API はありますが、コードを解析するための API はありません。コードを CodeDom 構造に解析する、サポートされていない/非表示の API について聞いたことがありますが、よくわかりません。

また、アセンブリ自体からどのようにコードを取得しますか? リフレクションは IL には行きませんが、クラスのメンバーにのみ行きます。

于 2009-07-08T19:40:23.913 に答える
0

この CodeProject の記事をご覧ください。あなたがやろうとしていることの始まりのようですが、いくつかの追加が必要です。この記事のサンプル コードはメンバーを解析せず、型と名前空間のみを解析するためです。

私が知っている CodeDOM の完全なパーサーは存在しません。これはBCL チーム ブログ にも記載されています。

于 2009-07-08T20:16:13.920 に答える
0

CC およびその他のさまざまなメトリックを計算するC# Metrics ツールを参照してください。

于 2009-08-08T02:47:49.720 に答える
0

あなたは.NETに関心があるので、.Net Reflectorの使用を見てください

さまざまなプラグインがあり、そのうちの 1 つは CC を含むいくつかの基本的なメトリックを計算します。

探しているものが見つからない場合は、自分で書いてみませんか。.NET Reflector には、簡単に分析できる CodeDom モデルのタイプを提供するプラグイン APIがあります (ページの下部も参照してください) 。

于 2009-11-09T15:20:04.967 に答える