splint - A tool for statically checking C programs
splint [options]
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.
-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.
If you need to get in contact with the authors send email to info@splint.org or visit <http://www.splint.org>. splint(1)
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 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.
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.
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.