none
FxCop ruleset 중 CA2227 경고에 대한 SurppressMessage 할 순 없을까요? RRS feed

  • 질문

  • 안녕하세요?

    VisualStudio Professanal 2010을 사용하여 프로젝트 중입니다.

     

    Code Analysis 도구로 FxCop을 사용하고 있습니다. ruleset 파일을 통해 정책을 적용하게 되는데요.

    CA2227 정책의 경우 Collection의 경우 프로퍼티의 Set을 하지 못하게 하는 정책입니다.

     

    저희는 이 정책이 필요하지만, 일부 클래스(다른 프로젝트)에서는 프로퍼티에 Set을 사용해야하는 경우가 있습니다.

    이 경우.. ruleset 파일을 프로젝트 별로 구성하면 쉽게 해결이 되지만 ruleset파일 수정 없이 몇몇 경우에만 제외하고 싶은 경우(경고 메세지를 받고 싶지 않은 경우)

    다음과 같은 어트리뷰트를 사용하면 되는 것으로 알고 있습니다.

      [SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly", Justification = "This entire type is meant to be mutable.")]

     

    하지만 CA2227의 경우 이 어트리뷰트를 사용해도 경고를 막을 수 없는데... 혹시 이런 경우 해결 해 보신 분이나.

    공식적으로 CA2227의 경우에는  SuppressMessage로 경고를 막을 수 없다는 문서를 아시는 분 계시나요?

    (ruleset 파일 수정으로 해결 하는 것은 공식적인 문서가 있을 경우에만 허용 될 듯 합니다.)

     

    긴 글 읽어주셔서 감사합니다. 좋은 하루 보내세요.

     

    2011년 8월 18일 목요일 오전 8:25

모든 응답

  • 안녕하십니까? crynut84

    Microsoft MSDN Forum 사이트를 방문해 주셔서 감사합니다.

     

    문의 하신 “FxCop ruleset CA2227 경고에 대한 SurppressMessage 할 순 없을까요?”에 대한 답변을 드리겠습니다.

     

    FAQ: Why does FxCop ignore my in-code (SuppressMessageAttribute) suppressions? [David Kean]

    The SuppressMessage attribute is what is called a 'conditional' attribute. A conditional attribute is an attribute that is only included in metadata of your assembly if a certain compilation symbol is defined at compile time. The SuppressMessage attribute itself requires the CODE_ANALYSIS symbol to be present and by default, this is not included in non-team system projects.”

    http://blogs.msdn.com/b/codeanalysis/archive/2006/03/23/faq-why-does-fxcop-ignore-my-in-code-suppressmessageattribute-suppressions-david-kean.aspx

    , SuppressMessage attribute conditional attribute이므로, 컴파일 타임에 특정 심볼이 정의되어 있어야만 metadata에 포함됩니다.

    따라서, SuppressMessage attribute를 사용하시려면, FAQ를 참고하셔서 먼저 CODE_ANALYSIS라는 심볼을 정의하시고 시도해 보시기 바랍니다.

    제가 문제에 대해 더 알아야 할 것이 있다면 응답 주시면 감사하겠습니다.

    제시해 드린 답변이 도움이 되었기를 바랍니다.

    2011년 8월 25일 목요일 오전 1:00
    중재자