VisualStudio 특정 형식이나 멤버를 사용할 때 경고 표시

4916 단어 VisualStudioRoslyn

이 문서의 내용



VisualStudio 의 지원 기능을 사용해, 원하지 않는 형태나 메소드에 대해서 경고가 표시되도록(듯이) 하는 방법을 2개 소개합니다.



다음과 같은 Execute 메서드가 있다고 가정합니다.
연결을 지정하지 않으면 기본 연결을 사용하는 메서드를 제공했지만 어떤 이유로이 메서드를 사용하지 않기를 원한다고 가정합니다.
public static class DbHelper
{
    /// <summary>
    /// 指定されたコマンドを実行します。<--このメソッドを使わせたくなくなった。
    /// </summary>
    /// <param name="commandText">コマンドテキスト</param>
    public static void Execute(string commandText)
    {
        Execute(commandText, CreateDbConnection());
    }

    /// <summary>
    /// 指定されたコマンドを実行します。
    /// </summary>
    /// <param name="commandText">コマンドテキスト</param>
    /// <param name="connection">コネクション</param>
    public static void Execute(string commandText, IDbConnection connection)
    {
        // 割愛
    }

    private static IDbConnection CreateDbConnection()
    {
        // 割愛
    }
}

방법



ObsoleteAttribute 속성 적용



형태나 멤버가 폐지 예정인 것을 마크 하기 위한 속성입니다.
억제하고 싶은 형태나 멤버가 폐지 예정인 경우, 이 속성을 적용합니다.
대상의 형태나 멤버에 속성을 적용하기 때문에, 자신들이 개발하고 있는 형태와 그 형태의 멤버에게만 이 방법은 사용할 수 있습니다.

ObsoleteAttribute 속성 적용
    /// <summary>
    /// 指定されたコマンドを実行します。
    /// </summary>
    /// <param name="commandText">コマンドテキスト</param>
    [Obsolete("Execute(string, IDbConnection)を使用してください。")]
    public static void Execute(string commandText)
    {
        Execute(commandText, CreateDbConnection());
    }

대상 메서드를 사용하면 코드 편집기에 다음과 유사한 경고가 표시됩니다.


BannedApiAnalyzers 분석기 사용



Roslyn 분석기가 억제하려는 유형과 멤버에 대한 경고를 표시합니다.
ObsoleteAttribute 속성과는 달리 소스 코드에 대해서 기술하는 것은 아니기 때문에, 표준 라이브러리나 OSS 등으로 제공되고 있는 형태나 멤버에도 적용할 수 있습니다.
  • Nuget 등으로 대상 프로젝트에 Microsoft.CodeAnalysis.BannedApiAnalyzers를 추가합니다.
  • 대상 프로젝트에 BannedSymbols.txt라는 텍스트 파일을 추가합니다.
  • BannedSymbols.txt 내에 억제하고 싶은 형태나 멤버를 열거합니다. 설명 서식은 種類:シグネチャ;メッセージ 입니다. 자세한 내용은 참고 링크를 참조하십시오.

  • BannedSymbols.txt
    M:mxProject.DbHelper.Execute(System.String);Execute(string, IDbConnection)を使用してください。
    

    대상 메서드를 사용하면 코드 편집기에 다음과 유사한 경고가 표시됩니다. 일본 번역의 결과가 다소 유감입니다만, 의도는 충분히 전해진다고 생각합니다.


    참고 링크



    [Cygames Engineers 'Blog] ZLogger – .NET Core 및 Unity 용 제로 할당 구조화 된 로거
    【Qiita】How to use Microsoft.CodeAnalysis.BannedApiAnalyzers

    좋은 웹페이지 즐겨찾기