C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[2]: ソース内プロシージャ数の数え方


(過去ログ 59 を表示中)

[トピック内 14 記事 (1 - 14 表示)]  << 0 >>

■33878 / inTopicNo.1)  ソース内プロシージャ数の数え方
  
□投稿者/ tkdk (1回)-(2009/03/12(Thu) 14:55:09)

分類:[VB.NET/VB2005 以降] 

はじめまして、tkdkと申します。
顧客のわけのわからない要望を解決すべく知識をお貸しください。

やりたいこと
1.あるソース内に含まれる、プロシージャ(Private Sub〜やPublic Function〜等)の数と名前を調べたい。
2.また、それぞれ各プロシージャ内で他のプロシージャやサブルーチンをいくつ使っているか(Callしているか)その数と名前が調べたい。
という2点です。
ちなみに対象ソース内では、他のSubを呼ぶときにCallを使っていません。
これらの案件は調べることは可能でしょうか?

不可能だと手作業で1000個前後ソース(それぞれ各3万ステップ)を解読し、
資料を作らなければならなくなってしまうのでお助けください。

引用返信 編集キー/
■33879 / inTopicNo.2)  Re[1]: ソース内プロシージャ数の数え方
□投稿者/ .SHO (744回)-(2009/03/12(Thu) 15:00:29)
カウントするプログラム作るとか。
引用返信 編集キー/
■33880 / inTopicNo.3)  Re[2]: ソース内プロシージャ数の数え方
□投稿者/ tkdk (2回)-(2009/03/12(Thu) 15:05:41)
No33879 (.SHO さん) に返信
> カウントするプログラム作るとか。
それを作成中なのですが、どういう条件でカウントアップすればよいのかがわかりません。
皆様でしたらどのような観点でカウントを進めていきますか?
引用返信 編集キー/
■33881 / inTopicNo.4)  Re[1]: ソース内プロシージャ数の数え方
□投稿者/ επιστημη (1820回)-(2009/03/12(Thu) 15:21:02)
επιστημη さんの Web サイト
> 1.あるソース内に含まれる、プロシージャ(Private Sub〜やPublic Function〜等)の数と名前を調べたい。

こっちなら Visual Studio Team System の"コード分析"でいいんじゃないかな。
分析結果を Excel-sheet にしてくれます。

引用返信 編集キー/
■33882 / inTopicNo.5)  Re[3]: ソース内プロシージャ数の数え方
□投稿者/ .SHO (745回)-(2009/03/12(Thu) 15:29:44)
No33880 (tkdk さん) に返信

> それを作成中なのですが、どういう条件でカウントアップすればよいのかがわかりません。
> 皆様でしたらどのような観点でカウントを進めていきますか?

まず1で、プロシージャの数と名前を調べ、2では、1で調べた名前をカウントするとか。
引用返信 編集キー/
■33883 / inTopicNo.6)  Re[2]: ソース内プロシージャ数の数え方
□投稿者/ επιστημη (1821回)-(2009/03/12(Thu) 15:41:31)
επιστημη さんの Web サイト
...で、お客様は得られた情報から何を知ろうってんでしょか?

引用返信 編集キー/
■33884 / inTopicNo.7)  Re[4]: ソース内プロシージャ数の数え方
□投稿者/ tkdk (3回)-(2009/03/12(Thu) 15:41:37)
No33882 (.SHO さん) に返信
> ■No33880 (tkdk さん) に返信
>
>>それを作成中なのですが、どういう条件でカウントアップすればよいのかがわかりません。
>>皆様でしたらどのような観点でカウントを進めていきますか?
>
> まず1で、プロシージャの数と名前を調べ、2では、1で調べた名前をカウントするとか。

お返事ありがとうございます。
ご指摘のとおりやったところ、
同一ソース内に存在するプロシージャに関してはカウントできました。
が、新たな問題が…
他ソースでcls化・dll化されたものもカウントして欲しいとの要望が出てきました。
"("や"."等で絞ってもどうしても余計なものまで引っかかってしまいます。
根本的に考え方が違うのでしょうか?
引用返信 編集キー/
■33885 / inTopicNo.8)  Re[5]: ソース内プロシージャ数の数え方
□投稿者/ .SHO (746回)-(2009/03/12(Thu) 15:47:27)
No33884 (tkdk さん) に返信

> "("や"."等で絞ってもどうしても余計なものまで引っかかってしまいます。

余計なものって何ですか?
引用返信 編集キー/
■33886 / inTopicNo.9)  Re[3]: ソース内プロシージャ数の数え方
□投稿者/ .SHO (747回)-(2009/03/12(Thu) 15:49:40)
> ...で、お客様は得られた情報から何を知ろうってんでしょか?

ソースの品質を定量化したいとか?
(そんなんで品質なんかわかるか!という問題はともかく…^^;)
引用返信 編集キー/
■33887 / inTopicNo.10)  Re[1]: ソース内プロシージャ数の数え方
□投稿者/ よねKEN (291回)-(2009/03/12(Thu) 15:51:13)
そのプロジェクトで定義したメソッド(Sub/Fuction)の数と名前、及び、
その使用状況の把握をしたい、ということでいいんですかね。
VB.NETはオブジェクト指向言語ですよ、という点があまり考慮されていない感じがしますが。

簡易的な方法としては、以下のような方法で数と名前は調べられるかなと思います。
(検証はしてませんので、あしからず)

> やりたいこと
> 1.あるソース内に含まれる、プロシージャ(Private Sub〜やPublic Function〜等)の数と名前を調べたい。

1. "End Sub"/"End Function"を検索。
2. 見つかったら、そこから逆方向に遡って、
  "End Sub"なら"Sub"を、"End Function"なら"Function"を見つける。
3. 見つけた"Sub"/"Function"の横の識別子がプロシージャの名前。
4. 次は"End Sub"/"End Function"の発見位置から、1.に戻って同様に調べる。

この要領で、プロジェクト内のすべてのソースファイル(.vb)で調べればよいかと思います。

> 2.また、それぞれ各プロシージャ内で他のプロシージャやサブルーチンをいくつ使っているか(Callしているか)その数と名前が調べたい。

簡易的にやるとしても、こっちはたぶん簡単ではないですね。
実験コードを書ける環境がないので、今のところアイディアはありません。

> という2点です。
> ちなみに対象ソース内では、他のSubを呼ぶときにCallを使っていません。
> これらの案件は調べることは可能でしょうか?

可能/不可能はもちろん可能です。ただ、どの程度簡単にできるかとその精度が問題です。

引用返信 編集キー/
■33888 / inTopicNo.11)  Re[5]: ソース内プロシージャ数の数え方
□投稿者/ よねKEN (292回)-(2009/03/12(Thu) 16:03:43)
2009/03/12(Thu) 16:08:46 編集(投稿者)

> 他ソースでcls化・dll化されたものもカウントして欲しいとの要望が出てきました。
> "("や"."等で絞ってもどうしても余計なものまで引っかかってしまいます。
> 根本的に考え方が違うのでしょうか?

プロジェクト内でModuleしか一切定義していないようなそういう特殊な状況か、
あるいはコーディング規約などで何らかの目印になる制約が規定されているとか、
でなければ、メソッドの呼び出しを一覧化するのは簡単じゃないと思いますよ。
(ある程度の精度で我慢するとしても)

特にVBの場合は、引数がなければ「()」を省略できますし、
()は配列などにも使われますので、字面だけを追っても判断は難しいです。
定義部分なら、字句解析レベルのことをやるだけでも、判断できますが、
呼び出し部は構文解析+意味解析までやらないと厳密には判断できないんじゃないでしょうか。

引用返信 編集キー/
■33889 / inTopicNo.12)  Re[5]: ソース内プロシージャ数の数え方
□投稿者/ επιστημη (1822回)-(2009/03/12(Thu) 16:26:46)
επιστημη さんの Web サイト
> 他ソースでcls化・dll化されたものもカウントして欲しいとの要望が出てきました。

.NETアセンブリならば reflention 使えば
定義されているクラス/メソッド等を列挙するのはそう難しくなさそう。
# 超手抜き版オブジェクト・ブラウザですからねー♪

引用返信 編集キー/
■33902 / inTopicNo.13)  Re[1]: ソース内プロシージャ数の数え方
□投稿者/ Jitta on the way (286回)-(2009/03/12(Thu) 19:17:25)
No33878 (tkdk さん) に返信

> 不可能だと手作業で1000個前後ソース(それぞれ各3万ステップ)を解読し、
> 資料を作らなければならなくなってしまうのでお助けください。
>


A HotDocument という製品を買えば、作る手間も省けるのでは?
引用返信 編集キー/
■34105 / inTopicNo.14)  Re[2]: ソース内プロシージャ数の数え方
□投稿者/ tkdk (4回)-(2009/03/19(Thu) 10:50:10)
皆様のご意見を取り入れ、
精度に関しては程々なものが作成できましたことを
ご報告いたします。
ありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -