По своей природе StyleCop действительно работает только с содержимым файла и не может использовать информацию из самой сборки.
Но, если вы спросите об "альтернативном подходе для определения исключений", естьправило в StyleCop + , которое выполняет проверку очень близко к вашей.Вы указываете список базовых классов (Attribute
, Exception
, EventArgs
и Stream
по умолчанию), и это гарантирует, что все классы, унаследованные от них, имеют имя, которое заканчивается на ...Attribute
, ...Exception
ии т. д.
Проверка работает следующим образом.Если имя базового класса заканчивается строкой из списка, это гарантирует, что имя унаследованного класса также должно заканчиваться той же строкой.Например, если он встречает Class2 : InvalidOperationException
или Class2 : SomeUnknownException
, это вызовет нарушение в обоих случаях.
Если вы будете следовать этому правилу, все ваши унаследованные классы всегда будут иметь правильные имена, даже если они являются множественными-inherited.Единственное, что не может быть проверено таким образом, - это ситуация, когда вы имеете дело с некоторыми классами не из «вашей» сборки, которые уже нарушили это правило.Например, если какая-то сборка имеет Class2 : Exception
, и вы ссылаетесь на эту сборку как на двоичный файл (и у вас нет возможности проверить его с помощью StyleCop), то вы не сможете проверить, должен ли ваш Class3
унаследованный от Class2
иметь префикс ...Exception
.
Но практика показывает, что последняя проблема встречается довольно редко, поэтому описанный выше метод очень хорошо работает для StyleCop.