코드 분석 규칙 CA2000이 VS2010에 의해 너무 엄격하게 적용된다는 사실을 안타까워하면서 많은 질문이 제기되었지만, 적용해야하는 경우가있는 것처럼 보였습니다.왜 비트 맵은 CA2000 규칙을 발생 시키지만 이미지는 그렇지 못합니까?
다음과 같은 코드를 생각해 지금이에 비주얼 스튜디오 2010의 코드 분석을 실행하면
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);
를, 그것을 (쉽게 수정 다른 사용하여 블록에 넣어)에 대한 newImage 배치되지 않는 불평합니다 , 그러나 그것은 srcImage에 대해서 불평하지 않습니다 (또한 절대로 호출하지 않는 Dispose() 메소드가 있음). 누구든지 코드 분석이 여기에 불평하지 않는 이유를 알고 있습니까?
처음에 생각했지만 다른 CA2000 질문을 봤는데 꽤 많이 들었습니다. 그들 모두는 다른 함수에 인수를 전달하는 것과 같은 규칙에 의해 트리거됩니다 (일반적으로 생성자가 관련되어 있음에도 불구하고). 이 성가신 규칙 (많은 사람들에게 SO 질문의 수로 판단)이이 상황에서 용서할 수 있다는 것이 이상합니다. –
그래, 나는 그것이 성가신 것에 동의한다. 그러나 우리는 코드 분석을 사용하여 코드 문제를 해결하기 위해 코드 분석에 의존하지 않고 "이중화 체크"를 사용하고 여기저기서 무언가를 잊어 버렸는지 확인해야한다. –
그래 ... 그런 종류의 도구는 그런 도구의 목적에 어긋난다. 내가 그들을 사용하는 이유는 내가 뭔가 잘못한 위치를 지적 할 수 있기 때문에 이와 같은 작은 일을 위해 거대한 코드 기반 사냥을하는 데 어려움을 겪지 않도록하기 위해서입니다. –