CodeQL 文档

调用已弃用方法

ID: cs/call-to-obsolete-method
Kind: problem
Security severity: 
Severity: warning
Precision: very-high
Tags:
   - changeability
   - maintainability
   - external/cwe/cwe-477
Query suites:
   - csharp-security-and-quality.qls

点击以在 CodeQL 代码库中查看查询

具有 [Obsolete] 属性的方法已弃用,不应再使用。已弃用的方法不再受支持和维护,可能无法正常工作,并且将来可能会被删除。

建议

将方法调用替换为对其他方法的调用。[Obsolete] 属性应建议要调用的替代方法。如果 [Obsolete] 属性未建议替代方法,则请阅读类文档和方法列表以找到合适的替代方法。

示例

以下示例显示了一些代码,这些代码在 Logger 类中调用了一个已弃用的方法。Log 方法具有属性 [Obsolete("Use Log(LogLevel level, string s) instead")],表示它已弃用。

using System;

class Bad
{
    void M()
    {
        Logger.Log("Hello, World!");
    }

    static class Logger
    {
        [Obsolete("Use Log(LogLevel level, string s) instead")]
        public static void Log(string s)
        {
            // ...
        }

        public static void Log(LogLevel level, string s)
        {
            // ...
        }
    }

    enum LogLevel
    {
        Info,
        Warning,
        Error
    }
}

按照属性的建议,通过调用 Logger 类中的其他方法来修复代码。

using System;

class Good
{
    void M()
    {
        Logger.Log(LogLevel.Info, "Hello, World!");
    }

    static class Logger
    {
        [Obsolete("Use Log(LogLevel level, string s) instead")]
        public static void Log(string s)
        {
            // ...
        }

        public static void Log(LogLevel level, string s)
        {
            // ...
        }
    }

    enum LogLevel
    {
        Info,
        Warning,
        Error
    }
}

参考

  • ©GitHub 公司
  • 条款
  • 隐私