
C#の静的コード解析ツールについて調査しています。
そこで一点疑問なのですが、これらのツールでは何が検知できるのでしょうか。
例えば到達不可能なコードパスや、未初期化変数の参照等、
解析ツールの紹介でよく見られる「検知できること」は、
そもそもVisual Studioがビルド時にエラーや警告として教えてくれます。
C#の静的コード解析ツールは、こういったIDEが検知するバグ以外に、
どういったものを見つけてくれるのでしょうか。
製品によって異なるということは承知していますが、
何かご存知の方いらっしゃいましたら、一例だけでも教えて頂けるとありがたいです。
No.1ベストアンサー
- 回答日時:
*有償版Visual Studio持ってません(昔MSが公開していた、FxCopが有償版にしかつかなくなったらしい)
*ってことで、Monoの「コンパイラ」と、付属する「静的分析ツール」であるGendarme( http://www.mono-project.com/Gendarme )を使って比較してみました。コンパイラがエラー・警告を出さなかったコードです。ちなみにコンパイラさんはreturn falseがないときに叱ってくれました。
using System;
namespace Q6759755
{
class MainClass
{
public static void Main (string[] args)
{
hoge();
}
public static bool hoge(){
int i = 5;
if(i % 2 == 1){
return true;
}
return false;
}
}
}
=========================
静的コード分析ツールは、こんなことにまで口を出してきました。(ちなみに、コードじゃなくて引数に渡すのはアセンブリ)
>This type contains only static fields and methods and should be static.
この型はstaticなフィールドとメソッドしか含まれていないのでstatic classとして宣言すべきです
とか
>This identifier (namespace, type, or method) violates the .NET naming conventions.
この識別子名(名前空間名とか型名とかメソッド名とか)が.NETの命名規則に違反しています
>By existing naming conventions, all the method and property names should all be pascal-cased (e.g. MyOperation). Rename 'hoge' to 'Hoge'.
命名規則によれば、メソッド名やプロパティ名はcamel-caseなんだからhogeじゃなくてHogeだろ
とか
>The method contains one or more unused parameters.
使ってない引数あるじゃないか。関数の定義からそもそも引数を取っ払うように設計見直したら?とか(Mainメソッドの仮引数argsを使ってないから。ちなみにMainメソッドは引数なしや戻り値intでもOK)
#他に書かなかったけど、ログによると、なんかクラス名も悪いらしい。staticにすれば詳しい分析見られるらしいけど、面倒。
#CLSCompliantがないとかComVisibleがないとかとも言われる。前者はともかく後者にはあまり肯定的じゃないんだけどなあ

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
JSPで<SELECT>の中にDBから持っ...
-
boolean型のフィールドとゲッタ...
-
VBPをダブルクリックするとたま...
-
C#.net Define文
-
VBScriptからストアドプロシー...
-
DataGridViewでセルクリックイ...
-
JAVAプログラムのdoGet()の中身...
-
System.load() と System.loa...
-
Excel VBA シェイプの原型のサ...
-
ODBCでMoveNextがうまく動作し...
-
setMinimumSizeについて
-
FEM解析の読み方は?
-
配列のメソッド
-
Excel VBA でExcelを終了したい...
-
Application.Wait の参照設定
-
【sendkeysメソッドが動かずに...
-
Refreshメソッドの使い方
-
タグチメソッドと実験計画法の違い
-
エクセルVBAのInputBoxメソ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBAで、条件に一致する...
-
配列のメソッド
-
mainメソッドのthrows節で設定...
-
final修飾子を使っているのに、...
-
0歳児の指しゃぶりに関して
-
javascriptからjavaを呼び出したい
-
DataGridViewでセルクリックイ...
-
JSPで<SELECT>の中にDBから持っ...
-
boolean型のフィールドとゲッタ...
-
Labelコントロールに数字を代入...
-
ウィンドウを最前面にできません
-
処理内容がほぼ同じメソッドの...
-
eclipse-Tomcatでのデバッグに...
-
CALLされていないメソッドを見...
-
FEM解析の読み方は?
-
エクセルVBAにおけるON TIMEメ...
-
Application.Wait の参照設定
-
コマンドプロンプト実行後に画...
-
VBA コピーが出来ません…!
-
drawStringで文字間隔の調整
おすすめ情報