Sonarcube не нравится моя реализация сериализуемого класса исключений - PullRequest
1 голос
/ 20 февраля 2020

SonarCube показывает мне ошибку " Обновите эту реализацию 'ISerializable', чтобы она соответствовала рекомендованному шаблону сериализации " для следующей реализации исключения:

[Serializable]
public class UnrecoverableException : Exception, ISerializable
{
    public bool Ignore { get; }

    public UnrecoverableException()
    {
    }

    public UnrecoverableException(string message, Exception innerException)
        : base(message, innerException)
    {
    }

    protected UnrecoverableException(SerializationInfo info, StreamingContext context)
        : base(info, context)
    {
        Ignore= info.GetBoolean(nameof(Ignore));
    }

    public UnrecoverableException(string message, bool ignore= false) : base(message)
    {
        Ignore= ignore;
    }

    public override void GetObjectData(SerializationInfo info, StreamingContext context)
    {
        info.AddValue(nameof(Ignore), Ignore);
        base.GetObjectData(info, context);
    }
}

не уверен, что здесь не так, как мне кажется, что полностью следующие правила, описанные здесь https://rules.sonarsource.com/csharp/tag/pitfall/RSPEC-3925

Эти правила поднимают проблему для типов, которые реализуют ISerializable, не следуя шаблону сериализации, рекомендованному Microsoft.

  • Отсутствует атрибут System.SerializableAttribute.

  • Несериализуемые поля не помечены атрибутом System.NonSerializedAttribute.

  • Конструктор сериализации отсутствует.

  • Незапечатанный тип имеет конструктор сериализации, который не защищен.

  • Герметичный Тип имеет конструктор сериализации, который не является закрытым.

  • Нераспечатанный тип имеет ISerializable.GetObjectData, который не является ни publi c, ни виртуальным.

  • Производный тип имеет серию конструктор lization, который не вызывает базовый конструктор.

  • Производный тип имеет метод ISerializable.GetObjectData, который не вызывает базовый метод.

  • Производный тип имеет сериализуемые поля, но метод ISerializable.GetObjectData не переопределяется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...