[Date Prev][Date Next][Thread Prev][Thread Next][Author Index][Date Index][Thread Index]

current xlint++ specs



This is the current list of things that xlint++ should catch.
 Let me know of any that can go away or any that I've missed.
 
 - roland
   

  1) member functions declared LEAF but redefined
     in a subclass
   
  2) non COPY classes between two COPY classes in
     an inheritance chain
   
  3) public or protected data
   
  4) DEFERRED members in non-DEFERRED sections.
   
  5) non-DEFERRED members in DEFERRED sections.
   
  6) all DEFERRED FUNCTIONS should be VIRTUAL
   
  7) DEFERRED member functions which aren't redefined on the path
     to all concrete subclasses (a concrete subclass is a subclass
     without a DEFERRED section.)
   
  8) unions
   
  9) structs
   
 10) single argument constructors
   
 11) global variables
   
 12) static local variables
   
 13) PROXY classes w/out virtual destructors
   
 14) hard casts (not using CAST macro)
   	
 15) pointer arithmetic
   
 16) an attempt to directly instantiate a DEFERRED class.
   
 17) destructor in class w/ no constructor
   
 18) assignment to "this"
   
 19) assignments between pointers-to-pointers
     which don't point at the same exact type
   
 20) any use of references
   
 21) misplaced NOWAIT: NOWAIT should only occur in a PROXY section
     as a DEFFERED_SUBR overloadings of it in subclasses should have
     no output args
   
 22) CLASS - DEFINE_CLASS type mismatch
   
 23) subclasses of classes with constructor bombs
     that do not themselves have constructor bombs
   
 24) assignment (or ptr param) to automatic variables in scope
     of BLAST shielding
   
 25) assignment to a parameter variable in function body
   
 26) instVariables not initialized by constructor
   
 27) NOT_TYPE CLASS(EQObject,Object) used in a type declaration
     (Question: does this only exclude 'typedef EQO foo;' or also
      'EQO foo;' If the latter, how does such a class get used ?)
   
 28) Clasess implementing isEqual using object identity (pointer
     comparison) passed by COPY ()* it must be pass by PROXY **)
   
 29) operands of '%' must be class type or 'unsigned'
   
 30) unstublifiable member ( All instance vars in COPY sections &
     all function arguments in PROXY sections must be STUBLIFIABLE.
     A class is stublifiable iff	1) it has a COPY section or
     2) it has a PROXY section or 3) it has a DEFERRED section &
     all its immediate children are stublifiable.
     (Question: what about non-class types ?) 
   
 31) pointers to functions