2010-06-22 4 views
2

resharper는 IDisposable을 구현하는 개체에 대한 경고를 아직 제공하지 않기 때문에 resharper 5.0에서 사용할 수있는 사용자 지정 검색 패턴을 만들고 싶습니다.Resharper IDisposable 개체에 경고하는 사용자 지정 검색 패턴

지금까지 나는이 있습니다

(그리고 일회용 객체를 처리 할 때, 난 정말 그것에 대해 걱정하지 않는다 패턴에서 내 교체 의견을 상관 없어, 난 그냥 코드에 명확한 경고를 원하는 .)

- <CustomPatterns> 
- <Pattern Severity="WARNING"> 
    <Comment>This class implements IDisposable interface.</Comment> 
    <ReplaceComment>Please use Using statement, or dispose the object manually when done using.</ReplaceComment> 
    <SearchPattern>$type$</SearchPattern> 
    <Params /> 
- <Placeholders> 
    <IdentifierPlaceholder Name="var" Type="" ExactType="False" RegEx="" CaseSensitive="True" /> 
    <TypePlaceholder Name="type" Type="System.IDisposable" ExactType="False" /> 
    <ArgumentPlaceholder Name="args" Minimal="-1" Maximal="-1" /> 
    </Placeholders> 
    </Pattern> 
- <Pattern Severity="WARNING"> 
    <Comment>This class implements IDisposable interface.</Comment> 
    <ReplaceComment>Please use Using statement, or dispose the object manually when done using.</ReplaceComment> 
    <SearchPattern>new $type$($args$)</SearchPattern> 
    <Params /> 
- <Placeholders> 
    <IdentifierPlaceholder Name="var" Type="" ExactType="False" RegEx="" CaseSensitive="True" /> 
    <TypePlaceholder Name="type" Type="System.IDisposable" ExactType="False" /> 
    <ArgumentPlaceholder Name="args" Minimal="-1" Maximal="-1" /> 
    </Placeholders> 
    </Pattern> 
    </CustomPatterns> 

이것은 변수 선언의 사례를 처리합니다.

Bitmap myBitmap = GetBitmap(); 
private Bitmap _bitmap; 

및 CTOR 호출. 내가 찾아 'var에'사용됩니다 중 검색 패턴을 정의하는 방법의 예를 찾을 수 없습니다

var myBitmap = GetBitmap(); 

, 또는 방법은 지원하지 않습니다 무엇

var myBitmap = new Bitmap(...); 

이있다 반환 유형, 즉 IDisposable 유형입니다.

나는 방법이있을 것이라고 확신하지만 나는 그것을 발견 할 수 없다.

답변

2

이러한 패턴의 문제점은 명령문을 사용하여 로컬 변수를 선언하는 경우를 제외하고 실제로 오브젝트를 처리 할 때 사라지지 않는다는 것입니다. 또한 개체 소유권을 추적하지 않습니다. 팩토리 메소드 및 통과 메소드 용. 따라서 구조화 된 패턴을 통해 만드는 것은 쓸모가 없다고 생각합니다.

어쨌든, 당신은 표현 유형으로 IDisposable을 구현

var $identifier$ = $expression$; 
$type$ $identifier$ = $expression$; 

같은 지역 변수 검사 두 가지 패턴을해야 할 수도 있습니다.

+0

물론 이해합니다. 그러나 내가 원한 것은 일회용 개체가 처음 선언 될 때 경고입니다. 쿼리 해 주셔서 감사하지만 작동하지 않는 것 같습니다. $ expression $ 만 사용하면 작동하지만 오브젝트가 사용될 때마다 경고를 표시합니다. 여기서는 선언문에서만 경고를 원합니다. – Rita

0

이 질문에 대한 직접적인 대답은 아니지만, 답변이없는 IDisposable을 찾으려면 다양한 런타임 기술이 필요합니다. Here's one such technique.

관련 문제