2009-11-18 4 views
33

우리는 C# 프로젝트에서 StyleCop을 사용하고 있습니다. 어떤 경우에는 규칙을 피하기를 원합니다. StyleCop이 무시하도록 파일의 처음에 // <auto-generated />을 추가 할 수 있습니다. 그러나 전체 파일에 대한 규칙을 무시하고 싶지는 않습니다. 코드 내의 블록 만 있습니다.특정 줄에 대해 StyleCop 사용 안 함

어떻게하면 특정 줄에 대해 StyleCop을 비활성화 할 수 있습니까?

답변

35

코드 블록에 특성을 추가하여 규칙을 억제 할 수 있습니다. 여기 아래에 링크 된 블로그 게시물에서 클래스에 대한 간단한 예입니다,하지만 당신은 개별적으로 다양한 회원에 작업을 수행 할 수 있습니다

[SuppressMessage("Microsoft.StyleCop.CSharp.DocumentationRules", "SA1600:ElementsMustBeDocumented")] 
public class MyUndocumentedClass 
{ 
    public void MyUndocumentedMethod {} 
} 

은 MSDN 블로그 게시물에서 quick overview 및 MSDN에 fuller description of the attributes있다.

+0

감사합니다! 내가 더 간단한 접근 방법을 원했지만 이것은 효과가있다. 스타일 이름 등의 올바른 텍스트를 찾는 대신 "이 줄에 대해 StyleCop 무시"라고 말할 수있는 방법이 필요했습니다. 가능한지보기를 기다리고 있습니다. – stiank81

+2

AFAIK 불가능합니다. 메시지를 억제 할 수있는 능력은 그 자체로 매우 최근의 것입니다. – FinnNk

+0

감사. 당신은 아마 바로 그때지만, 조금 더 이상 질문을 떠날 것입니다. – stiank81

11

오래된 질문은 내가 알고 있지만 답을 찾고에 내가 stylecop 4.4 지금 같은 것을 넣을 수 있다는 것을 발견 - 방법 또는 이들 라인 중 하나를 :

[SuppressMessage("Microsoft.StyleCop.CSharp.DocumentationRules", "*", Justification = "Risky to change manually")] 
[SuppressMessage("Microsoft.StyleCop.CSharp.SpacingRules", "*", Justification = "Risky to change manually")] 
[SuppressMessage("Microsoft.StyleCop.CSharp.MaintainabilityRules", "*", Justification = "Risky to change manually")] 
[SuppressMessage("Microsoft.StyleCop.CSharp.LayoutRules", "*", Justification = "Risky to change manually")] 
[SuppressMessage("Microsoft.StyleCop.CSharp.NamingRules", "*", Justification = "Risky to change manually")] 
[SuppressMessage("Microsoft.StyleCop.CSharp.ReadabilityRules‌​", "*", Justification = "Risky to change manually")] 
[SuppressMessage("Microsoft.StyleCop.CSharp.OrderingRules", "*", Justification = "Risky to change manually")] 
  • 참고 : 나는 규칙 범주 중 하나 또는 두 개가 누락되었을 수 있습니다.
+1

내게 트릭이 있었어. 참고로, 나는 "Microsoft.StyleCop.CSharp"가 네임 스페이스에 중복되어 있기 때문에 마지막 두 메시지를 편집했습니다. –

+1

최근 라이브러리 클래스에 이것을 추가해야하고 [SuppressMessage (" –

+1

주문 규칙은 다음과 같이 추가해야 할 수도 있습니다.'[SuppressMessage ("Microsoft.StyleCop.CSharp.OrderingRules", "Microsoft.StyleCop.CSharp.ReadabilityRules", "*", Justification = "This is library code" , "*", Justification = "수동으로 변경하는 위험")]' –

5

guy은 일반적으로 해킹을 무시하는 것으로 보입니다. 그는 파일의 상단에 이러는 제안 - 테스트 당신은 그냥 예를 들어, 주로 구현되지 않은 인터페이스에 부착 보일러의 부하를 휘젓는 경우에 대한

//------------------------------------------------------------------------------ 
// <auto-generated> 
// This code was generated by a tool. 
// </auto-generated> 
//------------------------------------------------------------------------------ 

핸디 R 번호와 협력.

0

지역 코드 생성 코드 사이에 코드 부분을 삽입 할 수 있으며 생략됩니다.

0

은 다음 StyleCop 속성을 가진 클래스 나 메소드를 장식 :

[GeneratedCode("Tool Goes Here", "Message Goes Here")]