Sonarqube не нравится моя реализация сериализуемого класса исключений ⇐ C#
-
Anonymous
Sonarqube не нравится моя реализация сериализуемого класса исключений
SonarCube показывает мне ошибку «Обновите эту реализацию ISerializable, чтобы она соответствовала рекомендуемому шаблону сериализации» для следующей реализации исключения:
[Сериализуемый] общедоступный класс UnrecoverableException: Exception, ISerializable { public bool Игнорировать { get; } публичное UnrecoverableException() { } public UnrecoverableException (строковое сообщение, внутреннее исключение Exception) : база (сообщение, внутреннее исключение) { } protected UnrecoverableException (информация SerializationInfo, контекст StreamingContext) : база(информация, контекст) { Ignore= info.GetBoolean(nameof(Ignore)); } public UnrecoverableException (строковое сообщение, bool ignore = false): base (сообщение) { Игнорировать = игнорировать; } общедоступное переопределение void GetObjectData (информация SerializationInfo, контекст StreamingContext) { info.AddValue(nameof(Игнорировать), Игнорировать); base.GetObjectData(информация, контекст); } } не уверен, что здесь не так, мне кажется, это полностью соответствует правилам, описанным здесь https://rules.sonarsource.com/csharp/ta ... RSPEC-3925
Эти правила вызывают проблемы с типами, которые реализуют ISerializable без соблюдения шаблона сериализации, рекомендованного Microsoft.
[*]
Атрибут System.SerializableAttribute отсутствует.
[*]
Несериализуемые поля не помечаются атрибутом System.NonSerializedAttribute.
[*]
Конструктор сериализации отсутствует.
[*]
Незапечатанный тип имеет незащищенный конструктор сериализации.
[*]
Запечатанный тип имеет конструктор сериализации, который не является закрытым.
[*]
Незапечатанный тип имеет ISerializable.GetObjectData, который не является одновременно общедоступным и виртуальным.
[*]
Производный тип имеет конструктор сериализации, который не вызывает базовый конструктор.
[*]
Производный тип имеет метод ISerializable.GetObjectData, который не вызывает базовый метод.
[*]
Производный тип имеет сериализуемые поля, но метод ISerializable.GetObjectData не переопределяется.
SonarCube показывает мне ошибку «Обновите эту реализацию ISerializable, чтобы она соответствовала рекомендуемому шаблону сериализации» для следующей реализации исключения:
[Сериализуемый] общедоступный класс UnrecoverableException: Exception, ISerializable { public bool Игнорировать { get; } публичное UnrecoverableException() { } public UnrecoverableException (строковое сообщение, внутреннее исключение Exception) : база (сообщение, внутреннее исключение) { } protected UnrecoverableException (информация SerializationInfo, контекст StreamingContext) : база(информация, контекст) { Ignore= info.GetBoolean(nameof(Ignore)); } public UnrecoverableException (строковое сообщение, bool ignore = false): base (сообщение) { Игнорировать = игнорировать; } общедоступное переопределение void GetObjectData (информация SerializationInfo, контекст StreamingContext) { info.AddValue(nameof(Игнорировать), Игнорировать); base.GetObjectData(информация, контекст); } } не уверен, что здесь не так, мне кажется, это полностью соответствует правилам, описанным здесь https://rules.sonarsource.com/csharp/ta ... RSPEC-3925
Эти правила вызывают проблемы с типами, которые реализуют ISerializable без соблюдения шаблона сериализации, рекомендованного Microsoft.
[*]
Атрибут System.SerializableAttribute отсутствует.
[*]
Несериализуемые поля не помечаются атрибутом System.NonSerializedAttribute.
[*]
Конструктор сериализации отсутствует.
[*]
Незапечатанный тип имеет незащищенный конструктор сериализации.
[*]
Запечатанный тип имеет конструктор сериализации, который не является закрытым.
[*]
Незапечатанный тип имеет ISerializable.GetObjectData, который не является одновременно общедоступным и виртуальным.
[*]
Производный тип имеет конструктор сериализации, который не вызывает базовый конструктор.
[*]
Производный тип имеет метод ISerializable.GetObjectData, который не вызывает базовый метод.
[*]
Производный тип имеет сериализуемые поля, но метод ISerializable.GetObjectData не переопределяется.
Мобильная версия