Avoid empty Unity message
Unity messages are called by the runtime even if they don't contain any code.
How to fix
Remove matched methods to avoid unnecessary processing.
CQLinq source
This rule is written in CQLinq, C# LINQ over the NDepend code model. It ships with every new NDepend project: you can read it, adapt it, or use it as a starting point for your own custom rules.
// <Name>Avoid empty Unity message</Name>
// <Id>ND3202:AvoidEmptyUnityMessage</Id>
warnif count > 0
from t in Application.Types
where t.DeriveFrom("UnityEngine.MonoBehaviour".AllowNoMatch())
from m in t.InstanceMethods where
!m.IsConstructor &&
!m.IsPropertyGetter &&
!m.IsPropertySetter &&
m.NbLinesOfCode == 0 &&
m.SimpleNameEqualsAny("Start","Update","FixedUpdate","LateUpdate",
"OnGUI","OnDisable","OnEnable")
select new {
m,
Debt = 5.ToMinutes().ToDebt(),
Severity = Severity.Low
}
//<Expl>
// The *{0}* is an empty Unity message and is still called by the runtime.
// Comment it or remove it.
//</Expl>
//<Desc>
// Unity messages are called by the runtime even if they don't contain any code.
//</Desc>
//<HowToFix>
// Remove matched methods to avoid unnecessary processing.
//</HowToFix>
Open in the interactive Rules Explorer · All default rules
API Usage / Unity: all 9 items
- Classes tagged with InitializeOnLoad should have a static constructor ND3200
- Avoid using non-generic GetComponent ND3201
- Avoid empty Unity message ND3202
- Avoid using Time.fixedDeltaTime with Update ND3203
- Use CreateInstance to create a scriptable object ND3204
- The SerializeField attribute is redundant on public fields ND3205
- InitializeOnLoadMethod should tag only static and parameterless methods ND3206
- Prefer using SetPixels32() over SetPixels() ND3207
- Don't use System.Reflection in performance critical messages ND3208