Not only the tool NDepend can tell you where you have side effect, but it can also ensure automatically that a class is immutable (i.e no side effect on its object instances) or a method is pure (i.e no side effects during the execution of the method.
In short, trick is to define an attribute, such as, MyNamespace.ImmutableAttribute
and to tag classes that you wish to be immutable.
[Immutable]class MyImmutableClass {...}
If the class is not immutable, or more likely, if one day a developer modifies it and breaks its immutability, then the following NDepend CQL Rules will suddenly warn:
WARN IF Count > 0 IN SELECT TYPES WHERE !IsImmutable AND HasAttribute "MyNamespace.ImmutableAttribute"
I wrote a complete article on immutability/purity/side-effects and NDepend usage:
Immutable Types: Understand Them And Use Them