mirror of
https://github.com/space-wizards/RobustToolbox.git
synced 2026-09-15 23:02:34 +02:00
* Add analyzers to detect some prototype misuse Detects people marking prototype as NetSerializable. Detects people creating new prototype instances themselves. * Update Robust.Analyzers/PrototypeNetSerializableAnalyzer.cs Co-authored-by: Tayrtahn <tayrtahn@gmail.com> --------- Co-authored-by: Tayrtahn <tayrtahn@gmail.com>
55 lines
1.5 KiB
C#
55 lines
1.5 KiB
C#
using System;
|
|
#if !ROBUST_ANALYZERS_TEST
|
|
using JetBrains.Annotations;
|
|
using Robust.Shared.Serialization.Manager.Attributes;
|
|
#endif
|
|
|
|
namespace Robust.Shared.Prototypes;
|
|
|
|
/// <summary>
|
|
/// Quick attribute to give the prototype its type string.
|
|
/// To prevent needing to instantiate it because interfaces can't declare statics.
|
|
/// </summary>
|
|
[AttributeUsage(AttributeTargets.Class, Inherited = false)]
|
|
#if !ROBUST_ANALYZERS_TEST
|
|
[BaseTypeRequired(typeof(IPrototype))]
|
|
[MeansImplicitUse]
|
|
[MeansDataDefinition]
|
|
[Virtual]
|
|
#endif
|
|
public class PrototypeAttribute : Attribute
|
|
{
|
|
/// <summary>
|
|
/// Override for the name of this kind of prototype. If not specified, this is automatically inferred via <see cref="PrototypeManager.CalculatePrototypeName"/>
|
|
/// </summary>
|
|
public string? Type { get; internal set; }
|
|
public readonly int LoadPriority = 1;
|
|
|
|
public PrototypeAttribute(string? type = null, int loadPriority = 1)
|
|
{
|
|
Type = type;
|
|
LoadPriority = loadPriority;
|
|
}
|
|
|
|
public PrototypeAttribute(int loadPriority)
|
|
{
|
|
Type = null;
|
|
LoadPriority = loadPriority;
|
|
}
|
|
}
|
|
|
|
[AttributeUsage(AttributeTargets.Class, Inherited = false)]
|
|
#if !ROBUST_ANALYZERS_TEST
|
|
[BaseTypeRequired(typeof(IPrototype))]
|
|
[MeansImplicitUse]
|
|
[MeansDataDefinition]
|
|
[MeansDataRecord]
|
|
#endif
|
|
public sealed class PrototypeRecordAttribute : PrototypeAttribute
|
|
{
|
|
public PrototypeRecordAttribute(string type, int loadPriority = 1) : base(type, loadPriority)
|
|
{
|
|
}
|
|
}
|
|
|