CodeQL 文档

字段掩盖了超类中的字段

ID: cs/field-masks-base-field
Kind: problem
Security severity: 
Severity: warning
Precision: high
Tags:
   - reliability
   - readability
   - naming
Query suites:
   - csharp-security-and-quality.qls

点击查看 CodeQL 代码库中的查询

此规则识别隐藏超类中字段的字段,因为该字段具有相同的名称,此外,子类中没有方法使用 super.field 直接引用超类中的字段。在子类中重新定义字段是一个常见错误。

建议

检查该字段是否确实应该在子类中重新定义。如果应该重新定义,请考虑更改其名称,以更清楚地说明该字段的作用。

示例

在此示例中,Employee 中的“name”属性掩盖了 Person 中的“name”属性。这可能不是预期的结果。

class Person
{
    private string name;
    public Person() { }
    public Person(string name)
    {
        this.name = name;
    }
}
class Employee : Person
{
    private string name; // BAD
    private string department;
    public Employee(string name, string department)
    {
        this.name = name;
        this.department = department;
    }
}

参考

  • ©GitHub 公司
  • 条款
  • 隐私