1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270
|
.\" $Id: splint.1,v 1.2 2003/03/31 18:19:38 drl7x Exp $
.TH splint 1 "A tool for statically checking C programs"
.SH NAME
splint \- A tool for statically checking C programs
.SH SYNOPSIS
.BR splint
[options]
.SH DESCRIPTION
.BR 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(1).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, please see
http://www.splint.org. This man page only covers a few of the available
options.
.SH OPTIONS
.TP 6
.B \-help
Shows help
.PP
.B 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 +.
.TP 6
.BI \-tmpdir " directory"
Set directory for writing temp files. Default is /tmp/.
.TP 6
.BI \-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.
.TP 6
.BI \-S " directory"
Add directory to path search for .lcl specification files.
.TP 6
.BI \-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.
.TP 6
.B \-nof
Prevents the default options files (./.splintrc and ~/.splintrc) from being loaded. (Setting
-nof overrides +nof, causing the options files to be loaded normally.)
.TP 6
.BI \-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.
.PP
.B 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.
.TP 6
.BI \-D " initializer"
Passed to the C pre-processor.
.TP 6
.BI \-U " initializer"
Passed to the C pre-processor
.PP
.B Libraries
These flags control the creation and use of libraries.
.TP 6
.BI \-dump " file"
Save state in <file> for loading. The default extension .lcd is added if <file> has no extension.
.TP 6
.BI \-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.
.TP 6
.B \-nolib
Do not load any library. This prevents the standard library from being loaded.
.TP 6
.B \-ansi-lib
Use the ANSI standard library (selected by default).
.TP 6
.B \-strict-lib
Use strict version of the ANSI standard library.
.TP 6
.B \-posix-lib
Use the POSIX standard library.
.TP 6
.B \-posix-strict-lib
Use the strict version of the POSIX standard library.
.TP 6
.B \-1-lib
Use UNIX version of standard library.
.TP 6
.B \-1-strict-lib
Use the strict version of the UNIX standard library.
.PP
.B 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.
.TP 6
.B \-usestderr
Send error messages to standard error (instead of standard out).
.TP 6
.B \-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.
.TP 6
.B \-showscan
Show file names are they are processed.
.TP 6
.B \-showalluses
Show list of uses of all external identifiers sorted by number of uses.
.TP 6
.B \-stats
Display number of lines processed and checking time.
.TP 6
.B \-timedist
Display distribution of where checking time is spent.
.TP 6
.B \-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.)
.TP 6
.B \-whichlib
Print out the standard library filename and creation information.
.TP 6
.BI \-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.
.PP
.B 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.
.TP 6
.B \-expect <number>
Exactly <number> code errors are expected. Splint will exit with failure exit status unless
<number> code errors are detected.
.TP 6
.B \-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.
.TP 6
.B \-showcolumn
Show column number where error is found. Default: +
.TP 6
.B \-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: +
.TP 6
.B \-showallconjs
Show all possible alternate types (see Section 8.2.2). Default: -
.TP 6
.B \-paren-file-format
Use file(line) format in messages.
.TP 6
.B \-hints
Provide hints describing an error and how a message may be suppressed for the first error
reported in each error class. Default: +
.TP 6
.B \-forcehints
Provide hints for all errors reported, even if the hint has already been displayed for the same error
class. Default: -
.TP 6
.BI \-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
.PP
.B 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 -.
.TP 6
.B \-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.
.TP 6
.B \-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.
.TP 6
.B \-checks
Moderately strict checking. All checking done by standard, plus must modification checking, rep
exposure, return alias, memory management and complete interfaces.
.TP 6
.B \-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.
.SH AUTHOR
If you need to get in contact with the authors send email to
.UR mailto:info@splint.org
.UE
or visit
.UR http://www.splint.org
.UE
.SH "SEE ALSO"
lint(1)
|