splint(1)


NAME

   splint - A tool for statically checking C programs

SYNOPSIS

   splint [options]

DESCRIPTION

   splint  is  a  tool  for  statically  checking  C programs for security
   vulnerabilities and common programming mistakes. With  minimal  effort,
   splint  can  be used as a better lint. If additional effort is invested
   adding annotations to programs, splint can perform stronger checks than
   can  be done by any standard lint.  For full documentation, install the
   splint-doc-html Debian package.  This man page only covers a few of the
   available options.

OPTIONS

   -help Shows help

   Initialization

   These  flags  control directories and files used by splint. They may be
   used from the command line or in an options file, but may not  be  used
   as  control  comments in the source code. Except where noted. they have
   the same meaning preceded by - or +.

   -tmpdir directory
         Set directory for writing temp files. Default is /tmp/.

   -I directory
         Add directory to path searched for C include files. Note there is
         no space after the I, to be consistent with C preprocessor flags.

   -S directory
         Add directory to path search for .lcl specification files.

   -f file
         Load  options  file <file>. If this flag is used from the command
         line, the default ~/.splintrc file is not loaded. This  flag  may
         be used in an options file to load in another options file.

   -nof  Prevents  the default options files (./.splintrc and ~/.splintrc)
         from being loaded. (Setting  -nof  overrides  +nof,  causing  the
         options files to be loaded normally.)

   -systemdirs directories
         Set  directories  for  system  files (default is "/usr/include").
         Separate       directories       with        colons        (e.g.,
         "/usr/include:/usr/local/lib").  Flag settings propagate to files
         in a system directory. If -systemdirerrors is set, no errors  are
         reported for files in system directories.

   Pre-processor

   These  flags  are  used  to define or undefine pre-processor constants.
   The -I<directory> flag is also passed to the C pre-processor.

   -D initializer
         Passed to the C pre-processor.

   -U initializer
         Passed to the C pre-processor

   Libraries These flags control the creation and use of libraries.

   -dump file
         Save state in <file> for loading. The default extension  .lcd  is
         added if <file> has no extension.

   -load file
         Load  state from <file> (created by -dump). The default extension
         .lcd is added if <file> has no extension. Only one  library  file
         may be loaded.

         By  default,  the standard library is loaded if the -load flag is
         not used to load a user library. If no user  library  is  loaded,
         one  of  the  following  flags  may be used to select a different
         standard library. Precede the flag by +  to  load  the  described
         library (or prevent a library from being loaded using nolib). See
         Apppendix F for information on the provided libraries.

   -nolib
         Do not load any library. This prevents the standard library  from
         being loaded.

   -ansi-lib
         Use the ANSI standard library (selected by default).

   -strict-lib
         Use strict version of the ANSI standard library.

   -posix-lib
         Use the POSIX standard library.

   -posix-strict-lib
         Use the strict version of the POSIX standard library.

   -1-lib
         Use UNIX version of standard library.

   -1-strict-lib
         Use the strict version of the UNIX standard library.

   Output

   These  flags  control what additional information is printed by splint.
   Setting +<flag> causes the described information to be printed; setting
   -<flag> prevents it. By default, all these flags are off.

   -usestderr
         Send  error messages to standard error (instead of standard out).
         This flag has been replaced by more precise flags for controlling
         the   warning,   status   message   and   fatal   error   streams
         independently.  See the output of splint +usestderr

   -showsummary
         Show a summary of all errors reported and suppressed.  Counts  of
         suppressed  errors  are  not  necessarily correct since turning a
         flag off may prevent  some  checking  from  being  done  to  save
         computation,  and  errors  that  are  not  reported may propagate
         differently from when they are reported.

   -showscan
         Show file names as they are processed.

   -showalluses
         Show list of uses of all external identifiers sorted by number of
         uses.

   -stats
         Display number of lines processed and checking time.

   -timedist
         Display distribution of where checking time is spent.

   -quiet
         Suppress  herald  and  error  count. (If quiet is not set, splint
         prints out a herald  with  version  information  before  checking
         begins,  and  a  line  summarizing  the  total  number  of errors
         reported.)

   -whichlib
         Print out the standard library filename and creation information.

   -limit number
         At most  <number>  similar  errors  are  reported  consecutively.
         Further  errors  are suppressed, and a message showing the number
         of suppressed messages is printed.

   Expected Errors

   Normally, splint will expect to report no errors. The exit status  will
   be success (0) if no errors are reported, and failure if any errors are
   reported. Flags can be used to set  the  expected  number  of  reported
   errors.   Because  of  the provided error suppression mechanisms, these
   options should probably not be used for final  checking  real  programs
   but may be useful in developing programs using make.

   -expect <number>
         Exactly  <number> code errors are expected. splint will exit with
         failure exit status unless <number> code errors are detected.

   -Message Format
         These flags control how messages are printed. They may be set  at
         the  command  line,  in  options  files,  or locally in syntactic
         comments. The linelen and limit flags may be preceded by +  or  -
         with  the  same  meaning;  for  the  other  flags, + turns on the
         describe printing and - turns it off. The box to the left of each
         flag gives its default value.

   -showcolumn
         Show column number where error is found. Default: +

   -showfunc
         Show name of function (or macro) definition containing error. The
         function name is printed once before the first  message  detected
         in that function. Default: +

   -showallconjs
         Show all possible alternate types (see Section 8.2.2). Default: -

   -paren-file-format
         Use file(line) format in messages.

   -hints
         Provide  hints  describing  an  error  and  how  a message may be
         suppressed for the first error  reported  in  each  error  class.
         Default: +

   -forcehints
         Provide  hints  for  all  errors  reported,  even if the hint has
         already been displayed for the same error class. Default: -

   -linelen number
         Set length of maximum message line to <number> characters. splint
         will  split  messages  longer  than <number> characters long into
         multiple lines. Default: 80

   Mode Selector Flags

   Mode selects flags set the mode checking flags  to  predefined  values.
   They  provide  a  quick coarse-grain way of controlling what classes of
   errors are reported. Specific checking flags may be set  after  a  mode
   flag  to  override  the  mode settings. Mode flags may be used locally,
   however the mode settings will  override  specific  command  line  flag
   settings.  A  warning  is  produced if a mode flag is used after a mode
   checking flag has been set.

   These are brief descriptions to give a general idea of what  each  mode
   does.  To see the complete flag settings in each mode, use splint -help
   modes. A mode flag has the same effect when used with either + or -.

   -weak Weak checking,  intended  for  typical  unannotated  C  code.  No
         modifies   checking,  macro  checking,  rep  exposure,  or  clean
         interface checking is done. Return values  of  type  int  may  be
         ignored.  The  types  bool, int, char and user-defined enum types
         are all equivalent. Old style declarations are unreported.

   -standard
         The default mode.  All  checking  done  by  weak,  plus  modifies
         checking,  global  alias  checking,  use  all  parameters,  using
         released storage,  ignored  return  values  or  any  type,  macro
         checking,  unreachable  code,  infinite  loops,  and fall-through
         cases. The types bool, int and  char  are  distinct.   Old  style
         declarations are reported.

   -checks
         Moderately  strict  checking. All checking done by standard, plus
         must modification checking, rep exposure,  return  alias,  memory
         management and complete interfaces.

   -strict
         Absurdly  strict  checking.  All  checking  done  by checks, plus
         modifications and global variables used in unspecified functions,
         strict  standard  library,  and  strict  typing of C operators. A
         special reward will be presented to the first person to produce a
         real program that produces no errors with strict checking.

AUTHOR

   If  you  need  to  get  in  contact  with  the  authors  send  email to
   info@splint.org or visit <http://www.splint.org>.

                                                                 splint(1)





Opportunity


Personal Opportunity - Free software gives you access to billions of dollars of software at no cost. Use this software for your business, personal use or to develop a profitable skill. Access to source code provides access to a level of capabilities/information that companies protect though copyrights. Open source is a core component of the Internet and it is available to you. Leverage the billions of dollars in resources and capabilities to build a career, establish a business or change the world. The potential is endless for those who understand the opportunity.

Business Opportunity - Goldman Sachs, IBM and countless large corporations are leveraging open source to reduce costs, develop products and increase their bottom lines. Learn what these companies know about open source and how open source can give you the advantage.





Free Software


Free Software provides computer programs and capabilities at no cost but more importantly, it provides the freedom to run, edit, contribute to, and share the software. The importance of free software is a matter of access, not price. Software at no cost is a benefit but ownership rights to the software and source code is far more significant.


Free Office Software - The Libre Office suite provides top desktop productivity tools for free. This includes, a word processor, spreadsheet, presentation engine, drawing and flowcharting, database and math applications. Libre Office is available for Linux or Windows.





Free Books


The Free Books Library is a collection of thousands of the most popular public domain books in an online readable format. The collection includes great classical literature and more recent works where the U.S. copyright has expired. These books are yours to read and use without restrictions.


Source Code - Want to change a program or know how it works? Open Source provides the source code for its programs so that anyone can use, modify or learn how to write those programs themselves. Visit the GNU source code repositories to download the source.





Education


Study at Harvard, Stanford or MIT - Open edX provides free online courses from Harvard, MIT, Columbia, UC Berkeley and other top Universities. Hundreds of courses for almost all major subjects and course levels. Open edx also offers some paid courses and selected certifications.


Linux Manual Pages - A man or manual page is a form of software documentation found on Linux/Unix operating systems. Topics covered include computer programs (including library and system calls), formal standards and conventions, and even abstract concepts.