Sonarqube не нравится моя реализация сериализуемого класса исключенийC#

Место общения программистов C#
Ответить
Anonymous
 Sonarqube не нравится моя реализация сериализуемого класса исключений

Сообщение Anonymous »


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 не переопределяется.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»