CA1704(Identifiers should be spelled correctly) 코드 분석 메시지 관리를 위한 사전 정의

Visual Studio 코드 분석(Code Analysis)은 문법 오류 외에 컴파일러가 검출하지 못하는 규칙들을 코드가 준수하는지 검사해주는 도구입니다. 규칙은 프로젝트별로 미리 정의된 규칙 집합을 선택하거나 새로운 규칙 집합을 만들어 적용할 수 있습니다. 예를 들어 코드에 ‘NewsFeed’라는 어휘를 사용하면 ‘Newsfeed’를 의미하려 했는데 실수로 ‘News’와 ‘Feed’ 단어의 조합한 것은 아닌지 확인하라는 CA1702(Compound words should be cased correctly) 메시지를 보여주고 IDisposable 인터페이스를 권장되는 방식으로 구현하지 않은 경우 CA1063(Implement IDisposable correctly) 메시지를 알립니다. 이것들 외에도 수많은 규칙들을 조합해 코드 품질을 높이고 유지하는 데에 큰 도움을 받을 수 있습니다.

Visual Studio Code Analysis

CA1704(Identifiers should be spelled correctly)는 식별자에 올바른 철자를 사용하지 않았다고 판단된 경우 발생합니다. 프로그래머의 오타 실수를 줄여주죠. 하지만 어떤 때에는 프로그래머가 의도한 어휘에 대해서도 발생하곤 합니다. 제 경우에는 ‘unfollow’와 ‘followee’를 코드 분석이 인지하지 못해 CA1704가 발생했습니다.

이 때 프로그래머가 선택할 수 있는 방법 중 하나는 System.Diagnostics.CodeAnalysis.SuppressMessage 특성을 사용하는 것입니다. 직접 CA1704가 발생하는 코드에 특성을 줄 수도 있지만 Visual Studio의 코드 분석 결과에서 몇 번의 클릭으로 쉽게 처리할 수도 있습니다.

또 다른 방법은 미리 정의된 것들 이외에 사용자 정의 사전을 만드는 것입니다. 검출된 어휘가 자주 사용된다면 이 방법이 더 효율적이고 코드를 간결하게 유지할 수 있죠. 이 사전에 ‘unfollow’와 ‘followee’ 단어를 등록하면 앞으로 코드 분석에서 이 단어들에 대해 CA1704가 발생하지 않습니다.

<Dictionary>
  <Words>
    <Recognized>
      <Word>followee</Word>
      <Word>Unfollow</Word>
    </Recognized>
  </Words>
</Dictionary>

사전 파일은 자세한 사용법은 여기를 참조하세요.

남은 작업은 코드 분석이 새로운 사전을 사용하도록 설정해주는 것입니다.

  1. 하나의 프로젝트에서만 사용하는 사전이라면 해당 프로젝트에 ‘…Dictionary.xml’ 등의 이름으로 사전파일을 만듭니다.
  2. 둘 이상의 프로젝트에서 공유하는 사전이라면 솔루션 루트 디렉터리 혹은 솔루션 수준의 파일이 관리되는 디렉터리에 ‘…Dictionary.xml’ 등의 이름으로 사전파일을 만들고 사전을 적용할 각 프로젝트에 이 파일의 링크를 추가합니다. 프로젝트에 파일 링크를 추가하는 방법은 아래 그림들을 참조하세요.
    Add Existing Item
    Add As Link
  3. 추가된 사전 파일의 속성에서 사전 파일이 CodeAnalysisDictionary로 빌드되도록 설정합니다.
    CodeAnalysisDictionary

이제 코드 분석을 실행하면 ‘unfollow’와 ‘followee’ 어휘에 대해서 CA1704가 발생하지 않습니다.

Advertisements

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중