I've made some minor edits, but I'm confused by your "raises an issue" sentence. First, there's nothing previously mentioned in the description about base vs object. Are you saying the rule only raises an issue for classes that aren't direct extensions of ``++Object++``? Second, don't you want to raise an issue _any time_ a reference check isn't done? Even if you're writing the method for a class that extends ``++Object++`` it seems that an immediate reference check is a good idea...?
\[~ann.campbell.2] I changed the SQALE characteristics and the labels on the rule.
Yes, the aim was to say that the rule only raises an issue for classes that aren't direct extensions of ``++Object++``. More specifically it raises issues on ``++base.Equals++`` calls in ``++if (base.Equals(other)){return true;}++`` that are inside an ``++override bool Equals++`` in classes that aren't direct extensions of ``++Object++``.
I don't think that we should add a rule to check for the existence of this reference equality check. There are multiple ways of doing it, so we might not be able to recognize all patterns, and also, MSDN suggests another way of implementing ``++Equals++`` override. However, this pattern is found in several places, and it's error-prone, because it works if you extend ``++Object++`` directly, but if you introduce a new base class, then it suddenly fails to work.