home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / lcl2-24b.zip / README < prev   
Text File  |  1999-02-18  |  4KB  |  109 lines

  1. lclint 2.4b for OS/2
  2. ====================
  3.  
  4. Contents:
  5. ---------
  6.  
  7.  What is LCLint?
  8.  Installation
  9.  
  10. What is LCLint? 
  11. ---------------
  12.  
  13. [taken from the README file shipping with LCLint 2.3]
  14.  
  15. LCLint is a tool for statically checking C programs.  With minimal
  16. effort, LCLint can be used as a better lint.  If additional effort is
  17. invested adding annotations to programs, LCLint can perform stronger
  18. checks than can be done by any standard lint.
  19.  
  20. LCLint does many of the traditional lint checks including unused
  21. declarations, type inconsistencies, use-before-definition, unreachable
  22. code, ignored return values, execution paths with no return, likely
  23. infinite loops, and fall-through cases.  Our main focus, however, is on
  24. more powerful checks that are made possible by additional information
  25. given in source code annotations.  Annotations are stylized comments
  26. that document certain assumptions about functions, variables,
  27. parameters, and types.  They may be used to indicate where the
  28. representation of a user-defined type is hidden, to limit where a global
  29. variable may be used or modified, to constrain what a function
  30. implementation may do to its parameters, and to express checked
  31. assumptions about variables, types, structure fields, function
  32. parameters, and function results.  In addition to the checks
  33. specifically enabled by annotations, many of the traditional lint checks
  34. are improved by exploiting this additional information.
  35.  
  36. Some problems detected by LCLint include:
  37.  
  38. o Violations of information hiding.  A user-defined type can be declared
  39.   as abstract, and a message is reported where code inappropriately
  40.   depends on the representation of the type.
  41.  
  42. o Inconsistent modification of caller-visible state.  Functions can be
  43.   annotated with information on what caller-visible state may be modified
  44.   by the function, and an error is reported if the modifications produces
  45.   by the function contradict its declaration.  
  46.  
  47. o Inconsistent use of global variables.  Information on what global and
  48.   file scope variables a function may use can be added to function
  49.   declarations, and a message is reported if the implementation of the
  50.   function uses other global variables or does not uses every global
  51.   variable listed in its declaration.  
  52.  
  53. o Memory management errors.  Instances where storage that has been
  54.   deallocated is used, or where storage is not deallocated (memory leaks).
  55.  
  56. o Dangerous data sharing or unexpected aliasing.  Parameters to a
  57.   function share storage in a way that may lead to undefined or undesired
  58.   behavior, or a reference to storage within the representation of an
  59.   abstract type is created.  
  60.  
  61. o Using possibly undefined storage or returning storage that is not
  62.   completely defined (except as documented).  
  63.  
  64. o Dereferencing a possibly null pointer.  
  65.  
  66. o Dangerous macro implementations or invocations. 
  67.  
  68. o Violations of customizable naming conventions. 
  69.  
  70. o Program behavior that is undefined because it depends on order of
  71.   evaluation, likely infinite loops, fall-through cases, incomplete logic,
  72.   statements with no effect, ignored return values, unused declarations,
  73.   and exceeding certain standard limits.  
  74.  
  75. LCLint checking can be customized to select what classes of errors are
  76. reported using command line flags and stylized comments in the code.
  77.  
  78. For more information, please visit the LCLint home page at
  79.  
  80.     http://larch-www.lcs.mit.edu:8001/larch/lclint/
  81.  
  82. We are very interested in hearing about your experiences using LCLint.
  83. Send any questions or comments to lclint@larch.lcs.mit.edu.
  84.  
  85. There are two mailing lists associated with LCLint:
  86.  
  87.    lclint-announce@larch.lcs.mit.edu
  88.  
  89.       Reserved for announcements of new releases and bug fixes.
  90.  
  91.    lclint-interest@larch.lcs.mit.edu
  92.  
  93.       Informal discussions on the use and development of lclint.
  94.  
  95. Send a (human-readable) message to lclint-request@larch.lcs.mit.edu to
  96. subscribe to a list.  Everyone who uses lclint should subscribe to
  97. lclint-announce, to be informed of new releases.
  98.  
  99.  
  100. Installation:
  101. -------------
  102.  
  103. This archive contains two further archives, one providing all files needed
  104. to run LCLint, the other containing the user's guide in OS/2 INF format.
  105.  
  106. To install LCLint refer to the README.OS2 file which is part of the first
  107. ZIP-file formerly mentioned. The user's guide should just be copied into 
  108. any directory mentioned in the BOOKSHELF environment variable.
  109.