다음을 통해 공유


연습: 관리 코드의 코드 오류 분석

이 연습에서는 코드 분석 도구를 사용하여 관리되는 프로젝트의 코드 오류를 분석합니다.

이 연습에서는 코드 분석을 사용하여 .NET 관리 코드 어셈블리가 Microsoft .NET Framework 디자인 지침에 맞는지 분석하는 프로세스를 단계별로 설명합니다.

이 연습에서는 다음을 수행합니다.

  • 코드 오류 경고를 분석 및 수정합니다.

사전 요구 사항

  • Visual Studio Premium.

클래스 라이브러리 만들기

클래스 라이브러리를 만들려면

  1. Visual Studio의 파일 메뉴에서 새로 만들기를 클릭한 다음 프로젝트를 클릭합니다.

  2. 새 프로젝트 대화 상자의 프로젝트 형식에서 Visual C#을 클릭합니다.

  3. 템플릿에서 클래스 라이브러리를 선택합니다.

  4. 이름 텍스트 상자에 CodeAnalysisManagedDemo를 입력하고 확인을 클릭합니다.

  5. 프로젝트를 만든 후 Class1.cs 파일을 엽니다.

  6. Class1.cs의 기존 텍스트를 다음 코드로 바꿉니다.

    //CodeAnalysisManagedDemo
    //Class1.cs
    using System;
    namespace testCode
    {
        
        public class demo : Exception
        {
            
            public static void Initialize(int size) { }
            protected static readonly int _item;
            public static int item { get { return _item; } }
        }
    }
  7. Class1.cs 파일을 저장합니다.

프로젝트 분석

관리되는 프로젝트의 코드 오류를 분석하려면

  1. 솔루션 탐색기에서 CodeAnalysisManagedDemo 프로젝트를 선택합니다.

  2. 프로젝트 메뉴에서 속성을 선택합니다.

    CodeAnalysisManagedDemo 속성 페이지가 표시됩니다.

  3. 코드분석을 클릭합니다.

  4. 사용빌드에 코드 분석 (CODE_ANALYSIS 상수 정의)을 선택 합니다. 

  5. 이 규칙 집합 실행 드롭다운 목록에서 Microsoft 모든 규칙을 선택합니다.

  6. 파일 메뉴에서 선택한 항목 저장을 클릭한 다음 ManagedDemo 속성 페이지를 닫습니다.

  7. 빌드 메뉴에서 ManagedDemo 빌드를 클릭합니다.

    CodeAnalysisManagedDemo 프로젝트 빌드 경고가 보고 되는 코드 분석출력 windows.

    경우는 코드 분석 창이 나타나지 않습니다 경우에 분석 메뉴를 선택 Windows코드 분석을 선택.

코드 분석 문제 해결

코드 분석 규칙 위반을 해결하려면

  1. 보기 메뉴에서 오류 목록을 클릭합니다.

    선택한 개발자 프로필에 따라 보기 메뉴의 다른 창을 가리킨 다음 오류 목록을 클릭해야 할 수도 있습니다.

  2. 솔루션 탐색기에서 모든 파일 표시를 클릭합니다.

  3. 그런 다음 속성 노드를 확장하고 AssemblyInfo.cs 파일을 엽니다.

  4. 다음 표를 사용하여 경고를 해결합니다.

경고

경고 해결 방법

CA1014: CLSCompliantAttribute로 어셈블리 표시: Microsoft.Design: 'demo'는 CLSCompliantAttribute로 표시되어야 하고 그 값은 참이어야 합니다.

  1. AssemblyInfo.cs 파일에 usingSystem; 코드를 추가합니다.

  2. 그런 다음 AssemblyInfo.cs 파일의 끝에 [assembly: CLSCompliant(true)] 코드를 추가합니다.

  3. 프로젝트를 다시 빌드합니다.

CA1032: 표준 예외 생성자를 구현하십시오.: Microsoft.Design: public demo(String) 생성자를 이 클래스에 추가하십시오.

  • public demo (String s) : base(s) { } 생성자를 demo 클래스에 추가합니다.

CA1032: 표준 예외 생성자를 구현하십시오.: Microsoft.Design: public demo(String, Exception) 생성자를 이 클래스에 추가하십시오.

  • public demo (String s, Exception e) : base(s, e) { } 생성자를 demo 클래스에 추가합니다.

CA1032: 표준 예외 생성자를 구현하십시오.: Microsoft.Design: protected demo(SerializationInfo, StreamingContext) 생성자를 이 클래스에 추가하십시오.

  1. Class1.cs 파일의 시작 부분에 using System.Runtime.Serialization; 코드를 추가합니다.

  2. 그런 다음 protected demo (SerializationInfo info, StreamingContext context) : base(info, context) { } to the class demo. 생성자를 추가합니다.

  3. 프로젝트를 다시 빌드합니다.

CA1032: 표준 예외 생성자를 구현하십시오.: Microsoft.Design: public demo() 생성자를 이 클래스에 추가하십시오.

  1. public demo () : base() { } 생성자를 demo 클래스에 추가합니다.

  2. 프로젝트를 다시 빌드합니다.

CA1709: 식별자는 정확한 대/소문자를 사용해야 합니다.: Microsoft.Naming: 네임스페이스 이름 'testCode'의 대/소문자를 'TestCode'(으)로 수정하십시오.

  • testCode 네임스페이스의 대/소문자를 TestCode로 변경합니다.

CA1709: 식별자는 정확한 대/소문자를 사용해야 합니다.: Microsoft.Naming: 형식 이름 'demo'의 대/소문자를 'Demo'(으)로 수정하십시오.

  • 멤버 이름을 Demo로 변경합니다.

CA1709: 식별자는 정확한 대/소문자를 사용해야 합니다.: Microsoft.Naming: 멤버 이름 'item'의 대/소문자를 'Item'(으)로 수정하십시오.

  • 멤버 이름을 Item으로 변경합니다.

CA1710: 식별자에는 올바른 접미사를 사용해야 합니다.: Microsoft.Naming: 'testCode.demo'이(가) 'Exception'(으)로 끝나도록 이름을 바꾸십시오.

  • 클래스의 이름과 생성자를 DemoException으로 변경합니다.

CA2210: 어셈블리에는 올바른 강력한 이름을 사용해야 합니다.: 강력한 이름의 키로 'ManagedDemo'을(를) 서명하십시오.

  1. 프로젝트 메뉴에서 ManagedDemo 속성을 클릭합니다.

    프로젝트 속성이 나타납니다.

  2. 서명을 클릭합니다.

  3. 어셈블리 서명 확인란을 선택합니다.

  4. 강력한 이름 키 파일 선택 목록에서 <새로 만들기...>를 선택합니다.

    강력한 이름 키 만들기 대화 상자가 나타납니다.

  5. 키 파일 이름에 TestKey를 입력합니다.

  6. 암호를 입력한 다음 확인을 클릭합니다.

  7. 파일 메뉴에서 선택한 항목 저장을 클릭한 다음 속성 페이지를 닫습니다.

  8. 프로젝트를 다시 빌드합니다.

CA2237: ISerializable 형식을 SerializableAttribute로 표시하십시오.: Microsoft.Usage: 이 형식이 ISerializable을 구현할 때 'demo' 형식에 [Serializable] 특성을 추가하십시오.

  1. demo 클래스에 [Serializable ()] 특성을 추가합니다.

  2. 프로젝트를 다시 빌드합니다.

변경을 완료 한 후 Class1.cs 파일에 다음과 같은 모양이 됩니다.

//CodeAnalysisManagedDemo
//Class1.cs
using System;
using System.Runtime.Serialization;


namespace TestCode
{

    [Serializable()] 
    public class DemoException : Exception
    {
        public DemoException () : base() { }
        public DemoException(String s) : base(s) { }
        public DemoException(String s, Exception e) : base(s, e) { }
        protected DemoException(SerializationInfo info, StreamingContext context) : base(info, context) { }

        public static void Initialize(int size) { }
        protected static readonly int _item;
        public static int Item { get { return _item; } }
    }
}

코드 분석 경고 제외

코드 오류 경고를 제외하려면

  1. 나머지 경고 각각에 대해 다음과 같이 하십시오.

    1. 이 창에서 코드 분석 경고를 선택 합니다.

    2. 선택 작업, 다음 선택 메시지를 표시 하지 않습니다, 다음 선택 프로젝트 비 표시 오류 파일에.

    자세한 내용은 방법: 메뉴 항목을 사용하여 경고 표시 안 함을 참조하십시오.

  2. 프로젝트를 다시 빌드합니다.

    경고나 오류가 표시되지 않고 프로젝트가 빌드됩니다.