// Lint options for EPOC32 and Platypus code. // Created by CharlesW 7 Oct 1997 // // See PC-lint for C/C++ manual (chapter LIVING WITH LINT) // for further details. -d__FLAT__ -d_WIN32 -si4 // Size of integers and longs: -sp4 -D__VC32__ // Use the VC version, so that it spots C-style casts // rather than macros. But also.. -d__GCC32__ // Need operator new[] with ELeave //-D_DEBUG // Compile assertions, to avoid warnings that asserts check for. -i..\inc // Standard include paths -i\epoc32\include -i..\src // not so standard include path for plfmui -i. // Hmmm -elib( ??? ) // Not interested in errors in headers ... +libdir( \epoc32\include ) // ... in this directory +fcp // All files are C++, not C (needed, since names get mangled) // These are the coding points recommended by Scott Meyers. Some are disabled // later, or partially disabled. +e424 // Inappropriate deallocation -- [12, Item 5] +e605 // Increase in pointer capability -- [12, Item 29] +e794 // Conceivable use of null pointer -- [12, Item 7] +e802 // Conceivably passing a null pointer to function -- [12, Item 7] +e1509 // base class destructor for class is not virtual -- [12, Item 14] +e1510 // base class has no destructor -- [12, Item 14] +e1511 // Member hides non-virtual member -- [12, Item 37] +e1529 // not first checking for assignment to this -- [12, Item 17] +e1534 // static variable found within inline function -- [23, Item 26] +e1536 // Exposing low access member -- [12, Item 30] +e1537 // const function returns pointer data member -- [12, Item 29 ] +e1539 // member not assigned by assignment operator -- [12, Item 16] +e1540 // pointer member freed nor zero'ed by destructor -- [12, Item 6] +e1544 // value indeterminate (order of initialization) -- [12, Item 47] +e1546 // throw() called within destuctor -- [23, Item 11] +e1547 // Assignment of array to pointer to base -- [23, Item 3] +e1549 // Exception thrown for function not declared to throw -- [23, Item 11] +e1551 // function may throw an exception in destructor -- [23, Item 11] +e1722 // assignment operator does not return a reference -- [12, Item 15] +e1729 // Initializer inversion detected for member -- [12, Item 13] +e1732 // new in constructor for class which has no assignment operator -- [12, Item 11] +e1733 // new in constructor for class which has no copy constructor -- [12, Item 11] +e1735 // Virtual function has default parameter -- [12, Item 38] +e1737 // 'Symbol' hides global operator new -- [12, Item 9] +e1739 // Binary operator should be non-member function -- [12, Item 19] +e1740 // pointer member not directly freed or zero'ed by destructor -- [12, Item 6] +e1745 // member not assigned by private assignment operator -- [12, Item 16] +e1746 // parameter of function could be made const ref -- [12, Item 22] +e1747 // binary operator returning a reference -- [12, Item 23] +e1749 // base class of class need not be virtual -- [23, Item 24] +e1752 // catch parameter Integer is not a reference -- [23, Item 13] +e1753 // Overloading special operator -- [23, Item 7] +e1754 // Expected 'Symbol' to be declared for class 'Symbol' -- [23, Item 22] +e1757 // Discarded instance of post decrement/increment -- [23, Item 6] +e1758 // Prefix increment/decrement operator returns a non-reference. -- [23, Item 6] +e1759 // Postfix increment/decrement operator returns a reference. -- [23, Item 6] +e1904 // Old-style C comment -- [12, Item 4] +e1923 // macro could become const variable -- [12, Item 1] +e1924 // C-style cast -- [23, Item 2] +e1925 // public data member -- [12, Item 20] +e1926 // 'Symbol's default constructor implicitly called -- [12, Item 12] +e1927 // 'Symbol' was not initialized in the constructor init list -- [12, Item 12] +e1928 // 'Symbol' did not appear in the ctor initializer list -- [12, Item 12] +e1929 // function returning a reference -- [12, Item 23] +e1930 // Conversion operator found -- [23, Item 5] +e1931 // Constructor can be used for implicit conversions -- [23, Item 5] +e1932 // Base class is not abstract. -- [23, Item 33] +e1934 // flags member functions operator<< and operator>> // Recommended by Lint setup: -e502 -e713 -e737 -eau // don't report on signed/unsigned mismatches -e734 // allow sub-integer loss of information -e701 -e703 // shifting int left is OK // EPOC32 coding style: -esym( 1926, C*::* ) // Ctor invoked by default in the ctor list -esym( 1928, C*, M* ) // Base class did not appear in the ctor list -esym( 1401, C*::* ) // Member not initialised by ctor -esym( 1927, C*::* ) // Member did not appear in the constructor initializer list -esym( 1744, C*::* ) // Member possibly not initialized by private constructor -esym( 1510, M* ) // base class has no destructor -esym( 1511, C*::ConstructL, C*::NewL, C*::NewLC ) // Member hides non-virtual member -esym( 765, E32Dll, NewApplication ) // Function could be made static -esym( 714, E32Dll, NewApplication ) // Function not referenced -esym( 1925, T*::* ) // Item is a public data member -esym( 613, C*::i* ) // Possible use of null pointer (would be better to use the following...) -function( operator new( r ) ) // Assume new is always successful - doesn't work -function( operator new[]( r ) ) // Assume new[] is always successful -emacro( 413, _FOFF ) // Likely use of null pointer -emacro( 506, *ASSERT* ) // Constant value Boolean -emacro( 552, *ASSERT* ) // Expected void type, assignment, increment or decrement -emacro( 665, *_CAST ) // Unparenthesized parameter in macro // The following also tells Lint that anything tested by __ASSERT is true: -function( exit, User::Exit, User::Panic, User::Abort, User::Invariant, *Panic* ) // All exit. -function( __assert, User::LeaveIfNull ) // Exits if null. -e655 // bit-wise operation uses compatible enum's (i.e. using enums for flag values) -e1904 // Old-style C comment -e1704 // Private Constructor -e1725 // class member is a reference -e537 // Repeated include file -e1932 // Base class is not abstract -e1712 // default constructor not defined for class -e763 // Redundant declaration of symbol (i.e. same class forward declared twice) -e730 // Boolean argument to function -e1702 // operator is both an ordinary function and a member function -e788 // enum constant not used within *defaulted* switch // Used a lot in Eikon code: -e641 // Converting enum to int // Platypus common problems - mostly harmless -e1736 // Redundant access specifier -e1931 // Constructor can be used for implicit conversions -e1924 // C-style cast -e1705 // static class members may be accessed using scope -e534 // Ignoring return value of function -e732 // Loss of sign (assignment) (int to unsigned int) // Indentation stuff -e539 // Did not expect positive indentation -e525 // Negative indentation from previous line -e725 // Expected positive indentation from prev line // Boring warnings we get when we do only a few files at a time. -e757 // global declarator not referenced -e1714 // Member function not referenced -e1526 // Member function not defined -e1716 // Virtual member function not referenced -e768 // global struct member not referenced -e758 // global class not referenced -e769 // global enumeration constant not referenced -e755 // global macro not referenced -e526 // function not defined -e1711 // Class has a virtual function but is not inherited