- - PR -
VisualStudioで不要なメソッド等の判別方法
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-10-03 09:55
消したくなる気持ち、わかります。
やっぱり保守面でしょうか? 機能追加のためにASP.NETのプロジェクトを渡されて、 画面(aspx.vb)から呼んでるクラスのメソッドに引数を追加していたら、 使っていない画面でエラーが・・・ どうしよう・・・めんどくさい・・・適当に引数書いておくか・・・ でもだれもその画面をプロジェクトから消そうとしない・・・ って使ってないaspxが残ってるのは論外ですかね(笑) 使ってないメソッドが残っていても、多階層構造で作られている場合、 同じようなことが起こりうるのではないでしょうか。 このあとテストを十分にやるのであれば、消したい気持ち、わかります。 | ||||||||
|
投稿日時: 2007-10-03 10:31
全部消されたら我々は困りますよね。私はそういう意味だと考えました。 | ||||||||
|
投稿日時: 2007-10-03 10:39
ソリューションレベルで見た時の話でなくて?
あるソリューションにプロジェクトA,Bが存在していて、 プロジェクトAにあるクラスのメソッドはプロジェクトAでは使用してない。 プロジェクトBではプロジェクトAのクラスのメソッドを使用していた。 ような場合を想定したのかな、と。 | ||||||||
|
投稿日時: 2007-10-03 10:45
話が微妙にずれてませんか?
もともとの質問は「不要なもの」を検出したいということでした。 その前提を覆して「あなたが不要と思っているものは、実は不要ではない。だから削除してはいけない」ということですか? 私は、不要なものなら削除すべきだと思います。 | ||||||||
|
投稿日時: 2007-10-03 11:28
ちげ。 「プロジェクト内のコードで呼び出されている箇所が無い=不要」とは限らない、ということです。 既にコメントがついているように、ソリューション内の別プロジェクトでメソッドが使用されているかもしれません。 クラスライブラリであれば、別のソリューションで使用されていることもあるわけで、そういう場合は「不要」の判定がさらに困難です。 また、リフレクション経由でメソッド呼び出しが行われているような場合、「メソッドが呼び出されている箇所」を特定することすら困難です。 | ||||||||
|
投稿日時: 2007-10-03 11:34
VS の標準機能では出来ません。 using を削ってくれるツールはありますが、それ以外の操作=クラス、メソッドの削除を行うようなツールは僕は知りません。 別投稿でも書いていますが「不要」の判定がかなり難しいので、こういった操作を行うツールは存在しないか、あっても数が少ないのではないかと思います。
これも「不要」の判定が難しいと思うので、無いんじゃないかな?>ツール もちろん、VS 標準の機能ではできません。 結局「不要」の判断は人間の主観によるものが大きいので、対象がクラスであってもメソッドであっても、自動検出→削除というのは難しいはずです。 何らかの方法で「削除するべきファイル名」「削除するべきクラス名」「削除するべきメソッド名」が洗い出せれば、それらを削除することは VS のマクロで十分実現できると思います。 _________________ // 渋木宏明 (Hiroaki SHIBUKI) // http://hidori.jp/ // Microsoft MVP for Visual C# // // @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/ | ||||||||
|
投稿日時: 2007-10-03 11:48
まず、不要なものを機械的に検出するのはかなり難しいと思います。 例えばcsではどこからも呼ばれていなくても、Button1_Clickとかは消しちゃいけないし、 コードビハインドのクラスは該当するaspxが必要かどうかに依存するし、、 そのaspxが必要かどうかなんてそのWEBアプリのオペレーションによるわけだし、、 消すメリット、または消さないことによるデメリットがあるなら消すべきでしょう。 それら(保守がめんどくさいとか)と、消すのにかかる時間や、誤認して消してしまった場合の デメリットとかを考えて天秤にかけます。
もうひとつは、ちゃんと動いているものをあまりいじくるものではない、というのもあります。 | ||||||||
|
投稿日時: 2007-10-03 13:12
なるほど。みなさんのおっしゃりたいことは理解しました。
不要かどうかを判断できないものに関する削除の是非は、当然「ダメ」だと私も思ってますので、これでこの話は終わります。 (この後Flameの元となりそうな文章をバッサリ削除) |