コード解析ルールCA2000がVS2010によって厳密に厳しく適用されているということを嘆いているので、たくさんの質問がありますが、私はそれを適用すべきケースに入り込んだようですが、そうではありません。なぜBitmapはCA2000のルールを引き起こしますが、Imageはしませんか?
次のコードを考えてみましょう:
Image srcImage = Image.FromFile(source);
Bitmap newImage = new Bitmap(newWidth, newHeight);
using (Graphics gr = Graphics.FromImage(newImage))
{
gr.DrawImage(srcImage, new Rectangle(0, 0, newWidth, newHeight));
}
newImage.Save(destination, ImageFormat.Jpeg);
私はこの上のVisual Studio 2010でコード分析を実行する場合さて、それはおよそNEWIMAGEが配置されていない文句を言うだろう(簡単な修正、他の使用してブロックに入れて)しかし、それは約srcImage(私は決して呼び出していないDispose()メソッドもあります)については不平を言っていません。誰もがなぜコード分析がここで文句を言わないのか知っていますか?
私は最初はそうだと思っていましたが、それらのすべては、そのような引数を別の関数に渡すことによってトリガーされるルールを持っています(通常はコンストラクタが関わっていますが)。この迷惑なルール(多くの人にとって、SOの質問の数で判断する)がこのような状況ではとても寛大であるということは奇妙です。 –
うん、私はそれが迷惑であることに同意しますが、コードの問題を修正するためにコード分析に頼るのではなく、ここで何かを忘れてしまったかどうかを確認するために、 –
ええと...しかし、その種のツールの目的を破る。私がそれらを使う理由は、私が間違ったことをした場所を指摘して、このような小さなことのために巨大なコードベースの狩りをする手間を省くためです。 –