The ``++@Remote++`` annotation indicates that an interface may be called from a remote client. Therefore the parameters and return types of methods in the interface must be ``++Serializable++``.
I wrote this rule and have now a working version. Having tested it on a representative code base of 350+remote interfaces, here are the cases I had to handle :
* primitive types are allowed
* Enums are allowed
* Serializable itself is not allowed (bad practice)
* subType of java.io.Serializable are allowed
* arrays of allowed types are allowed
* parameterized types must be checked
* parameter types of parameterized types must be checked (recursively)
* handle the case of java Collections and Maps (we consider them as Serializable as only 2-3 Collections Interfaces implementations are not serializable, and as those implementations are only used for developping caches (and therefore it makes no sense to transmit them through remote services calls)... this is as a corner case, but it may raise lots of false positives
* both parameters and return types of method signatures must be checked