There are 2 ways to implement this rule, both having their pros and cons:
1) Work on the AST. We know that a class is an exception if its name ends with 'Exception', which is not 100% accurate. But then we can report the issues exactly on the line of each field.
2) We work on the bytecode, we know for sure if a class is an exception or not, but we cannot log the issues on the lines where the fields are declared.
I've opted for the solution 1) for the time being.
Obviously, we'll be able to improve this rule one the symbol table will be available from AST checks to get rid off the approximation.