diff --git a/src/Qowaiv.Diagnostics.Contracts/EmptyClassAttribute.cs b/src/Qowaiv.Diagnostics.Contracts/EmptyClassAttribute.cs new file mode 100644 index 000000000..3ae63c1ac --- /dev/null +++ b/src/Qowaiv.Diagnostics.Contracts/EmptyClassAttribute.cs @@ -0,0 +1,10 @@ +namespace Qowaiv.Diagnostics.Contracts; + +/// Indicates the class is empty by design. +/// +/// Using this attribute prevents S2094 (Classes should not be empty) from +/// showing up. +/// +[AttributeUsage(AttributeTargets.Class, AllowMultiple = false)] +[Conditional("CONTRACTS_FULL")] +public class EmptyClassAttribute(string justification) : EmptyTypeAttribute(justification) { } diff --git a/src/Qowaiv.Diagnostics.Contracts/EmptyEnumAttribute.cs b/src/Qowaiv.Diagnostics.Contracts/EmptyEnumAttribute.cs new file mode 100644 index 000000000..49bf19c8e --- /dev/null +++ b/src/Qowaiv.Diagnostics.Contracts/EmptyEnumAttribute.cs @@ -0,0 +1,6 @@ +namespace Qowaiv.Diagnostics.Contracts; + +/// Indicates the enum is empty by design. +[AttributeUsage(AttributeTargets.Enum, AllowMultiple = false)] +[Conditional("CONTRACTS_FULL")] +public class EmptyEnumAttribute(string justification) : EmptyTypeAttribute(justification) { } diff --git a/src/Qowaiv.Diagnostics.Contracts/EmptyInterfaceAttribute.cs b/src/Qowaiv.Diagnostics.Contracts/EmptyInterfaceAttribute.cs new file mode 100644 index 000000000..5d7e7cb59 --- /dev/null +++ b/src/Qowaiv.Diagnostics.Contracts/EmptyInterfaceAttribute.cs @@ -0,0 +1,6 @@ +namespace Qowaiv.Diagnostics.Contracts; + +/// Indicates the class is empty by design. +[AttributeUsage(AttributeTargets.Interface, AllowMultiple = false)] +[Conditional("CONTRACTS_FULL")] +public class EmptyInterfaceAttribute(string justification) : EmptyTypeAttribute(justification) { } diff --git a/src/Qowaiv.Diagnostics.Contracts/EmptyStructAttribute.cs b/src/Qowaiv.Diagnostics.Contracts/EmptyStructAttribute.cs new file mode 100644 index 000000000..6a3e1b33c --- /dev/null +++ b/src/Qowaiv.Diagnostics.Contracts/EmptyStructAttribute.cs @@ -0,0 +1,6 @@ +namespace Qowaiv.Diagnostics.Contracts; + +/// Indicates the struct is empty by design. +[AttributeUsage(AttributeTargets.Struct, AllowMultiple = false)] +[Conditional("CONTRACTS_FULL")] +public class EmptyStructAttribute(string justification) : EmptyTypeAttribute(justification) { } diff --git a/src/Qowaiv.Diagnostics.Contracts/EmptyTestClassAttribute.cs b/src/Qowaiv.Diagnostics.Contracts/EmptyTestClassAttribute.cs new file mode 100644 index 000000000..42498f03d --- /dev/null +++ b/src/Qowaiv.Diagnostics.Contracts/EmptyTestClassAttribute.cs @@ -0,0 +1,10 @@ +namespace Qowaiv.Diagnostics.Contracts; + +/// Indicates the class is empty by design. +/// +/// Using this attribute prevents S2094 (Classes should not be empty) from +/// showing up. +/// +[AttributeUsage(AttributeTargets.Class, AllowMultiple = false)] +[Conditional("CONTRACTS_FULL")] +public sealed class EmptyTestClassAttribute(string? justification = null) : EmptyClassAttribute(justification ?? "For test purposes.") { } diff --git a/src/Qowaiv.Diagnostics.Contracts/EmptyTestEnumAttribute.cs b/src/Qowaiv.Diagnostics.Contracts/EmptyTestEnumAttribute.cs new file mode 100644 index 000000000..638c7a3a7 --- /dev/null +++ b/src/Qowaiv.Diagnostics.Contracts/EmptyTestEnumAttribute.cs @@ -0,0 +1,6 @@ +namespace Qowaiv.Diagnostics.Contracts; + +/// Indicates the enum is empty by design. +[AttributeUsage(AttributeTargets.Enum, AllowMultiple = false)] +[Conditional("CONTRACTS_FULL")] +public sealed class EmptyTestEnumAttribute(string? justification = null) : EmptyEnumAttribute(justification ?? "For test purposes.") { } diff --git a/src/Qowaiv.Diagnostics.Contracts/EmptyTestInterfaceAttribute.cs b/src/Qowaiv.Diagnostics.Contracts/EmptyTestInterfaceAttribute.cs new file mode 100644 index 000000000..07c853304 --- /dev/null +++ b/src/Qowaiv.Diagnostics.Contracts/EmptyTestInterfaceAttribute.cs @@ -0,0 +1,6 @@ +namespace Qowaiv.Diagnostics.Contracts; + +/// Indicates the class is empty by design. +[AttributeUsage(AttributeTargets.Interface, AllowMultiple = false)] +[Conditional("CONTRACTS_FULL")] +public sealed class EmptyTestInterfaceAttribute(string? justification = null) : EmptyInterfaceAttribute(justification ?? "For test purposes.") { } diff --git a/src/Qowaiv.Diagnostics.Contracts/EmptyTestStructAttribute.cs b/src/Qowaiv.Diagnostics.Contracts/EmptyTestStructAttribute.cs new file mode 100644 index 000000000..e19c66122 --- /dev/null +++ b/src/Qowaiv.Diagnostics.Contracts/EmptyTestStructAttribute.cs @@ -0,0 +1,6 @@ +namespace Qowaiv.Diagnostics.Contracts; + +/// Indicates the struct is empty by design. +[AttributeUsage(AttributeTargets.Struct, AllowMultiple = false)] +[Conditional("CONTRACTS_FULL")] +public sealed class EmptyTestStructAttribute(string? justification = null) : EmptyStructAttribute(justification ?? "For test purposes.") { } diff --git a/src/Qowaiv.Diagnostics.Contracts/EmptyTypeAttribute.cs b/src/Qowaiv.Diagnostics.Contracts/EmptyTypeAttribute.cs index d393113fa..16648a592 100644 --- a/src/Qowaiv.Diagnostics.Contracts/EmptyTypeAttribute.cs +++ b/src/Qowaiv.Diagnostics.Contracts/EmptyTypeAttribute.cs @@ -7,51 +7,3 @@ public abstract class EmptyTypeAttribute(string justification) : Attribute /// THe justification of this decoration. public string Justification { get; } = justification; } - -/// Indicates the class is empty by design. -/// -/// Using this attribute prevents S2094 (Classes should not be empty) from -/// showing up. -/// -[AttributeUsage(AttributeTargets.Class, AllowMultiple = false)] -[Conditional("CONTRACTS_FULL")] -public class EmptyClassAttribute(string justification) : EmptyTypeAttribute(justification) { } - -/// Indicates the enum is empty by design. -[AttributeUsage(AttributeTargets.Enum, AllowMultiple = false)] -[Conditional("CONTRACTS_FULL")] -public class EmptyEnumAttribute(string justification) : EmptyTypeAttribute(justification) { } - -/// Indicates the class is empty by design. -[AttributeUsage(AttributeTargets.Interface, AllowMultiple = false)] -[Conditional("CONTRACTS_FULL")] -public class EmptyInterfaceAttribute(string justification) : EmptyTypeAttribute(justification) { } - -/// Indicates the struct is empty by design. -[AttributeUsage(AttributeTargets.Struct, AllowMultiple = false)] -[Conditional("CONTRACTS_FULL")] -public class EmptyStructAttribute(string justification) : EmptyTypeAttribute(justification) { } - -/// Indicates the class is empty by design. -/// -/// Using this attribute prevents S2094 (Classes should not be empty) from -/// showing up. -/// -[AttributeUsage(AttributeTargets.Class, AllowMultiple = false)] -[Conditional("CONTRACTS_FULL")] -public sealed class EmptyTestClassAttribute(string? justification = null) : EmptyClassAttribute(justification ?? "For test purposes.") { } - -/// Indicates the enum is empty by design. -[AttributeUsage(AttributeTargets.Enum, AllowMultiple = false)] -[Conditional("CONTRACTS_FULL")] -public sealed class EmptyTestEnumAttribute(string? justification = null) : EmptyEnumAttribute(justification ?? "For test purposes.") { } - -/// Indicates the class is empty by design. -[AttributeUsage(AttributeTargets.Interface, AllowMultiple = false)] -[Conditional("CONTRACTS_FULL")] -public sealed class EmptyTestInterfaceAttribute(string? justification = null) : EmptyInterfaceAttribute(justification ?? "For test purposes.") { } - -/// Indicates the struct is empty by design. -[AttributeUsage(AttributeTargets.Struct, AllowMultiple = false)] -[Conditional("CONTRACTS_FULL")] -public sealed class EmptyTestStructAttribute(string? justification = null) : EmptyStructAttribute(justification ?? "For test purposes.") { }