]> andersk Git - splint.git/commitdiff
Fixed problem with identifyFlag revealed by splint -help flags full
authorevans1629 <evans1629>
Thu, 10 Jan 2002 19:04:42 +0000 (19:04 +0000)
committerevans1629 <evans1629>
Thu, 10 Jan 2002 19:04:42 +0000 (19:04 +0000)
(reported by Jim Zelenka)

Added tests to help test to check -help flags full and -help flags
manual.

Makefile.in
doc/Makefile.in
src/Headers/cstring.h
src/cstring.c
src/flags.c
test/Makefile.am
test/Makefile.in
test/help.expect

index ce34853f0a9e0eab778f0612faced0b3dadb05af..f2ceb6e09fd2117960276435efb1610d60bb3ef9 100644 (file)
@@ -99,10 +99,10 @@ RECURSIVE_TARGETS = info-recursive dvi-recursive install-info-recursive \
        uninstall-info-recursive all-recursive install-data-recursive \
        install-exec-recursive installdirs-recursive install-recursive \
        uninstall-recursive check-recursive installcheck-recursive
-DIST_COMMON = README ./stamp-h.in ChangeLog Makefile.am Makefile.in \
-       acinclude.m4 aclocal.m4 config.hin config/config.guess \
-       config/config.sub config/depcomp config/install-sh \
-       config/missing config/mkinstalldirs configure configure.ac
+DIST_COMMON = README ./stamp-h.in Makefile.am Makefile.in acinclude.m4 \
+       aclocal.m4 config.hin config/config.guess config/config.sub \
+       config/depcomp config/install-sh config/missing \
+       config/mkinstalldirs configure configure.ac
 DIST_SUBDIRS = $(SUBDIRS)
 all: config.h
        $(MAKE) $(AM_MAKEFLAGS) all-recursive
index a0ba9864d41415b66d90879b25216c9e773a8fef..366dcb7afd380b573b967675bdc858bf35c66ae6 100644 (file)
@@ -87,8 +87,8 @@ install_sh = @install_sh@
 
 AUTOMAKE_OPTIONS = 1.5 foreign
 
+splintlibdir = $(pkgdatadir)/man
 
-#this is just a hack to get make dist to work.
 EXTRA_DIST = splint.1
 subdir = doc
 mkinstalldirs = $(SHELL) $(top_srcdir)/config/mkinstalldirs
@@ -207,6 +207,7 @@ uninstall-am: uninstall-info-am
 
 
 all:
+       @echo "Nothing to make in doc"
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
index bc747504da169d9b31cff5d08acd90b8769632fe..958aa6aa082fc9da53847c082526e08ba2fb0cc5 100644 (file)
@@ -49,7 +49,10 @@ extern cmpcode cstring_genericEqual (cstring p_s, cstring p_t,
 /* evans 2001-09-09 - removed conditional compilation on this (for WIN32, OS2) */
 extern void cstring_replaceAll (cstring p_s, char p_old, char p_snew) /*@modifies p_s@*/ ;
 
-extern void cstring_replaceLit (/*@unique@*/ cstring p_s, char *p_old, char *p_snew) /*@requires maxRead(p_snew) >= 0 /\ maxRead(p_old) >= 0 /\ maxRead(p_old) >= maxRead(p_snew) @*/;
+extern void cstring_replaceLit (/*@unique@*/ cstring p_s, char *p_old, char *p_snew) 
+   /*@modifies p_s@*/
+   /*@requires maxRead(p_snew) >= 0 /\ maxRead(p_old) >= 0 /\ maxRead(p_old) >= maxRead(p_snew) @*/;
+
 extern char cstring_firstChar (cstring p_s) /*@*/ ;
 extern char cstring_secondChar (cstring p_s) /*@*/ ;
 extern char cstring_lastChar (cstring p_s) /*@*/ ;
index 5213e341862be87a4bd9a0e99385df444a6ee789..fed415514c09be13da8f0d8615b6ba9f9fd3cdc5 100644 (file)
@@ -212,11 +212,11 @@ void cstring_replaceAll (cstring s, char old, char snew)
           }
 }
 
-void cstring_replaceLit (/*@unique@*/ cstring s, char *old, char *snew) /*@requires maxRead(snew) >= 0 /\ maxRead(old) >= 0 /\ maxRead(old) >= maxRead(snew) @*/
+void cstring_replaceLit (/*@unique@*/ cstring s, char *old, char *snew) 
+   /*@requires maxRead(snew) >= 0 /\ maxRead(old) >= 0 /\ maxRead(old) >= maxRead(snew) @*/
 {
-  
   llassert (strlen (old) >= strlen (snew));
-
+  
   if (cstring_isDefined (s))
     {
       char *sp = strstr (s, old);
@@ -225,12 +225,15 @@ void cstring_replaceLit (/*@unique@*/ cstring s, char *old, char *snew) /*@requi
        {
          int lendiff = size_toInt (strlen (old) - strlen (snew));
          char *tsnew = snew;
-         
+
+         llassert (lendiff >= 0);
+
          while (*tsnew != '\0')
            {
+             llassert (*sp != '\0');
              *sp++ = *tsnew++;
            }
-
+         
          if (lendiff > 0)
            {
              while (*(sp + lendiff) != '\0')
index fc272e012119ece85e0aba9921765300e6a23cf7..1ec7017b0968656d20a54133ce2c13542faa98a4 100644 (file)
@@ -902,10 +902,11 @@ flagcode_unparse (flagcode code)
 **    length        -> len
 */
 
-static void
+static /*@only@*/ cstring
 canonicalizeFlag (cstring s)
 {
   int i = 0;
+  cstring res = cstring_copy (s);
   static bn_mstring transform[] = 
     { 
       "function", "fcn",
@@ -936,15 +937,16 @@ canonicalizeFlag (cstring s)
   /*drl bee: ia*/
   while ((current = transform[i]) != NULL)
     {
-      if (cstring_containsLit (s, current))
+      if (cstring_containsLit (res, current))
        {
-         cstring_replaceLit (s, current, transform[i+1]);
+         cstring_replaceLit (res, current, transform[i+1]);
        }
       i += 2;
     }
 
   /* remove whitespace, -'s, and _'s */
-  cstring_stripChars (s, " -_");
+  cstring_stripChars (res, " -_");
+  return res;
 }
 
 flagcode
@@ -962,6 +964,9 @@ flags_identifyFlagQuiet (cstring s)
 static flagcode
 flags_identifyFlagAux (cstring s, bool quiet)
 {
+  cstring cflag;
+  flagcode res;
+
   if (cstring_length (s) == 0) {
     /* evs 2000-06-25: A malformed flag. */
     return INVALID_FLAG;
@@ -987,229 +992,216 @@ flags_identifyFlagAux (cstring s, bool quiet)
       return FLG_UNDEFINE;    /* no space after -D */
     }
 
-  canonicalizeFlag (s);
+  cflag = canonicalizeFlag (s);
+  res = INVALID_FLAG;
 
   allFlags (f)
     {
-      if (cstring_equal (cstring_fromChars (f.flag), s))
+      if (cstring_equal (cstring_fromChars (f.flag), cflag))
        {
-         return (f.code);
+         res = f.code;
+         break;
        }
     } end_allFlags;
-
-  /*
-  ** Synonyms
-  */
-
-  if (cstring_equalLit (s, "pred"))
-    {
-      return FLG_PREDBOOL;
-    }
-
-  if (cstring_equalLit (s, "modobserverstrict"))
-    {
-      return FLG_MODOBSERVERUNCON;
-    }
-
-  if (cstring_equalLit (s, "czechnames"))
-    {
-      return FLG_CZECH;
-    }
-
-  if (cstring_equalLit (s, "slovaknames"))
-    {
-      return FLG_SLOVAK;
-    }
-
-  if (cstring_equalLit (s, "czechoslovaknames"))
-    {
-      return FLG_CZECHOSLOVAK;
-    }
-
-  if (cstring_equalLit (s, "globunspec")
-          || cstring_equalLit (s, "globuncon"))
-    {
-      return FLG_GLOBUNSPEC;
-    }
-
-  if (cstring_equalLit (s, "modglobsunspec")
-          || cstring_equalLit (s, "modglobsuncon")
-          || cstring_equalLit (s, "modglobsnomods"))
-    {
-      return FLG_MODGLOBSUNSPEC;
-    }
-
-  if (cstring_equalLit (s, "export"))
-    {
-      return FLG_EXPORTANY;
-    }
-
-  if (cstring_equalLit (s, "macrospec"))
-    {
-      return FLG_MACRODECL;
-    }
   
-  if (cstring_equalLit (s, "ansireservedlocal"))
-    {
-      return FLG_ANSIRESERVEDLOCAL;
-    }
-
-  if (cstring_equalLit (s, "warnposix"))
-    {
-      return FLG_WARNPOSIX;
-    }
-
-  if (cstring_equalLit (s, "defuse"))
+  if (res == INVALID_FLAG)
     {
-      return FLG_USEDEF;
-    }
-
-  if (cstring_equalLit (s, "macroundef"))
-    {
-      return FLG_MACROUNDEF;
-    }
-
-  if (cstring_equalLit (s, "showcol"))
-    {
-      return FLG_SHOWCOL;
-    }
-
-  if (cstring_equalLit (s, "intbool"))
-    {
-      return FLG_BOOLINT;
-    }
-
-  if (cstring_equalLit (s, "intchar"))
-    {
-      return FLG_CHARINT;
-    }
-
-  if (cstring_equalLit (s, "intenum"))
-    {
-      return FLG_ENUMINT;
-    }
-
-  /*
-  ** Backwards compatibility for our American friends...
-  */
-
-  if (cstring_equalLit (s, "ansilib"))
-    {
-      return FLG_ANSILIB;
-    }
-
-  if (cstring_equalLit (s, "ansistrictlib"))
-    {
-      return FLG_STRICTLIB;
-    }
-
-  if (cstring_equalLit (s, "skipansiheaders"))
-    {
-      return FLG_SKIPANSIHEADERS;
-    }
-
-  if (cstring_equalLit (s, "ansireserved"))
-    {
-      return FLG_ANSIRESERVED;
-    }
-
-  if (cstring_equalLit (s, "ansireservedinternal"))
-    {
-      return FLG_ANSIRESERVEDLOCAL;
-    }
-
-  /*
-  ** Obsolete Flags
-  */
-  
-  if (cstring_equalLit (s, "accessunspec"))
-    {
-      if (!quiet) 
+      /*
+      ** Synonyms
+      */
+      
+      if (cstring_equalLit (cflag, "pred"))
        {
-         llerror_flagWarning 
-           (cstring_makeLiteral
-            ("accessunspec flag is no longer supported.  It has been replaced by accessmodule, accessfile and "
-             "accessfunction to provide more precise control of accessibility "
-             "of representations.  For more information, "
-             "see splint -help accessmodule"));
+         res = FLG_PREDBOOL;
+       }
+      else if (cstring_equalLit (cflag, "modobserverstrict"))
+       {
+         res = FLG_MODOBSERVERUNCON;
+       }
+      else if (cstring_equalLit (cflag, "czechnames"))
+       {
+         res = FLG_CZECH;
        }
+      else if (cstring_equalLit (cflag, "slovaknames"))
+       {
+         res = FLG_SLOVAK;
+       }
+      else if (cstring_equalLit (cflag, "czechoslovaknames"))
+       {
+         res = FLG_CZECHOSLOVAK;
+       }
+      else if (cstring_equalLit (cflag, "globunspec")
+              || cstring_equalLit (cflag, "globuncon"))
+       {
+         res = FLG_GLOBUNSPEC;
+       }
+      else if (cstring_equalLit (cflag, "modglobsunspec")
+              || cstring_equalLit (cflag, "modglobsuncon")
+              || cstring_equalLit (cflag, "modglobsnomods"))
+       {
+         res = FLG_MODGLOBSUNSPEC;
+       }
+      else if (cstring_equalLit (cflag, "export"))
+       {
+         res = FLG_EXPORTANY;
+       }
+      else if (cstring_equalLit (cflag, "macrospec"))
+       {
+         res = FLG_MACRODECL;
+       }
+      else if (cstring_equalLit (cflag, "ansireservedlocal"))
+       {
+         res = FLG_ANSIRESERVEDLOCAL;
+       }
+      else if (cstring_equalLit (cflag, "warnposix"))
+       {
+         res = FLG_WARNPOSIX;
+       }
+      else if (cstring_equalLit (cflag, "defuse"))
+       {
+         res = FLG_USEDEF;
+       }
+      else if (cstring_equalLit (cflag, "macroundef"))
+       {
+         res = FLG_MACROUNDEF;
+       }
+      else if (cstring_equalLit (cflag, "showcol"))
+       {
+         res = FLG_SHOWCOL;
+       }
+      else if (cstring_equalLit (cflag, "intbool"))
+       {
+         res = FLG_BOOLINT;
+       }
+      else if (cstring_equalLit (cflag, "intchar"))
+       {
+         res = FLG_CHARINT;
+       }
+      else if (cstring_equalLit (cflag, "intenum"))
+       {
+         res = FLG_ENUMINT;
+       }
+      /*
+      ** Backwards compatibility for our American friends...
+      */
       
-      return SKIP_FLAG;
-    }
-  else if (cstring_equalLit (s, "ansilimits"))
-    {
+      else if (cstring_equalLit (cflag, "ansilib"))
+       {
+         res = FLG_ANSILIB;
+       }
+      else if (cstring_equalLit (cflag, "ansistrictlib"))
+       {
+         res = FLG_STRICTLIB;
+       }
+      else if (cstring_equalLit (cflag, "skipansiheaders"))
+       {
+         res = FLG_SKIPANSIHEADERS;
+       }
+      else if (cstring_equalLit (cflag, "ansireserved"))
+       {
+         res = FLG_ANSIRESERVED;
+       }
+      else if (cstring_equalLit (cflag, "ansireservedinternal"))
+       {
+         res = FLG_ANSIRESERVEDLOCAL;
+       }
+      
+      /*
+      ** Obsolete Flags
+      */
+      
+      else if (cstring_equalLit (cflag, "accessunspec"))
+       {
+         if (!quiet) 
+           {
+             llerror_flagWarning 
+               (cstring_makeLiteral
+                ("accessunspec flag is no longer supported.  It has been replaced by accessmodule, accessfile and "
+                 "accessfunction to provide more precise control of accessibility "
+                 "of representations.  For more information, "
+                 "see splint -help accessmodule"));
+           }
+         
+         res = SKIP_FLAG;
+       }
+      else if (cstring_equalLit (cflag, "ansilimits"))
+       {
          llerror_flagWarning 
            (cstring_makeLiteral
             ("ansilimits flag is no longer supported.  It has been replaced by ansi89limits and "
              "iso99limits to select either the lower translation limits imposed by the ANSI89 "
              "standard or the typically higher limits prescribed by ISO C99."));
-
-      return SKIP_FLAG;
-    }
-  else if (cstring_equalLit (s, "staticmods"))
-    {
-      if (!quiet) 
+         
+         res = SKIP_FLAG;
+       }
+      else if (cstring_equalLit (cflag, "staticmods"))
        {
-         llerror_flagWarning 
-           (cstring_makeLiteral
-            ("staticmods flag is obsolete.  You probably "
-             "want impcheckmodstatics.  For more information, "
-             "see splint -help impcheckmodstatics"));
+         if (!quiet) 
+           {
+             llerror_flagWarning 
+               (cstring_makeLiteral
+                ("staticmods flag is obsolete.  You probably "
+                 "want impcheckmodstatics.  For more information, "
+                 "see splint -help impcheckmodstatics"));
+           }
+         
+         res = SKIP_FLAG;
        }
-
-      return SKIP_FLAG;
-    }
-  else if (cstring_equalLit (s, "bool"))
-    {
-      if (!quiet) 
+      else if (cstring_equalLit (cflag, "bool"))
        {
-         llerror_flagWarning
-           (cstring_makeLiteral ("bool flag is obsolete.  It never really "
-                                 "made sense in the first place."));
+         if (!quiet) 
+           {
+             llerror_flagWarning
+               (cstring_makeLiteral ("bool flag is obsolete.  It never really "
+                                     "made sense in the first place."));
+           }
+         
+         res = SKIP_FLAG;
        }
-      
-      return SKIP_FLAG;
-    }
-  else if (cstring_equalLit (s, "shiftsigned"))
-    {
-      if (!quiet) 
+      else if (cstring_equalLit (cflag, "shiftsigned"))
        {
-         llerror_flagWarning
-           (cstring_makeLiteral ("shiftsigned flag is obsolete.  You probably "
-                                 "want bitwisesigned, shiftnegative or shiftsize."));
+         if (!quiet) 
+           {
+             llerror_flagWarning
+               (cstring_makeLiteral ("shiftsigned flag is obsolete.  You probably "
+                                     "want bitwisesigned, shiftnegative or shiftsize."));
+           }
+         
+         res = SKIP_FLAG;
        }
-      
-      return SKIP_FLAG;
-    }
-  else if (cstring_equalLit (s, "ansi"))
-    {
-      if (!quiet) 
+      else if (cstring_equalLit (cflag, "ansi"))
        {
-         llerror_flagWarning
-           (cstring_makeLiteral ("ansi flag is obsolete.  You probably "
-                                 "want noparams and/or oldstyle."));
+         if (!quiet) 
+           {
+             llerror_flagWarning
+               (cstring_makeLiteral ("ansi flag is obsolete.  You probably "
+                                     "want noparams and/or oldstyle."));
+           }
+         
+         res = SKIP_FLAG;
        }
-      
-      return SKIP_FLAG;
-    }
-  else if (cstring_equalLit (s, "stdio"))
-    {
-      if (!quiet) 
+      else if (cstring_equalLit (cflag, "stdio"))
        {
-         llerror_flagWarning 
-           (cstring_makeLiteral
-            ("stdio flag is obsolete.  You may "
-             "want strictlib or one of the gloabls "
-             "checking flags.  For more information, "
-             "see splint -help strictlib or splint -help flags globals"));
+         if (!quiet) 
+           {
+             llerror_flagWarning 
+               (cstring_makeLiteral
+                ("stdio flag is obsolete.  You may "
+                 "want strictlib or one of the gloabls "
+                 "checking flags.  For more information, "
+                 "see splint -help strictlib or splint -help flags globals"));
+           }
+         
+         res = SKIP_FLAG;
+       }
+      else
+       {
+         res = INVALID_FLAG;
        }
-      
-      return SKIP_FLAG;
-    }
-  else
-    {
-      return INVALID_FLAG;
     }
+
+  cstring_free (cflag);
+  return res;
 }
 
 void setValueFlag (flagcode opt, cstring arg)
index 0580b184a16305704de59b37f529f1c19620ca65..877d8910ce2c8f0b388f5194e88f7d48b796678b 100644 (file)
@@ -82,6 +82,8 @@ help:
        -@$(SPLINTP) +boolint +boolint 
        -@$(SPLINTP) -help flags alpha
        -@$(SPLINTP) -help flags all
+       -@$(SPLINTP) -help flags full
+       -@$(SPLINTP) -help flags manual
 
 .PHONY: clean-local
 clean-local:
index dd3a4aaac80921da0a0961bd1bc84db5da275142..19d074d4eeb8b0b26fddc3b605e6a3b4b58aa2c5 100644 (file)
@@ -910,6 +910,8 @@ help:
        -@$(SPLINTP) +boolint +boolint 
        -@$(SPLINTP) -help flags alpha
        -@$(SPLINTP) -help flags all
+       -@$(SPLINTP) -help flags full
+       -@$(SPLINTP) -help flags manual
 
 .PHONY: clean-local
 clean-local:
index 6231ff94e318eb10e7534e4cf958fbd38f76e6b9..f2e65b83ceca79a4518bb0713b4c46b3bc8628ea 100644 (file)
@@ -1128,3 +1128,4894 @@ keep --- do not delete temporary files
 nopp --- do not pre-process input files
 showsourceloc --- display the source code location where a warning is produced
 
+
+D<initializer>
+   passed to pre-processor
+   Category: preproc
+   Default Setting: -
+   Set globally only
+   
+I<directory>
+   add to C include path
+   Categories: directories, headers
+   Default Setting: -
+   Set globally only
+   
+S<directory>
+   add to spec path
+   Categories: directories, specifications
+   Default Setting: -
+   Set globally only
+   
+U<initializer>
+   passed to pre-processor
+   Category: preproc
+   Default Setting: -
+   Set globally only
+   
+abstract
+   data abstraction barriers
+   Category: abstract
+   Default Setting: +
+   Set locally
+      An abstraction barrier is broken. If necessary, use /*@access <type>@*/
+      to allow access to an abstract type.
+      
+accessall
+   set accessmodule, accessfile and accessczech
+   Categories: abstract, names
+   Default Setting: -
+   Set locally
+      Sets accessmodule, accessfile and accessczech
+      
+accessczech
+   allow access to abstract types by czech naming convention
+   Categories: abstract, names
+   Default Setting: +
+   Set locally
+      The representation of an abstract type named <t> is accessible in the
+      definition of a function or constant named <t>_<name>
+      
+accessczechoslovak
+   allow access to abstract types by czechoslovak naming convention
+   Categories: abstract, names
+   Default Setting: -
+   Set locally
+      The representation of an abstract type named <t> is accessible in the
+      definition of a function or constant named <t>_<name> or <t><Name>
+      
+accessfile
+   allow access to abstract types by file name convention
+   Categories: abstract, names
+   Default Setting: +
+   Set locally
+      The representation of an abstract type named <t> is accessible anywhere
+      in a file named <t>.<x>.
+      
+accessmodule
+   allow access to abstract types in definition module
+   Categories: abstract, names
+   Default Setting: +
+   Set locally
+      The representation of an abstract type defined in <M>.<x> is accessible
+      anywhere in a file named <M>.<y>.
+      
+accessslovak
+   allow access to abstract types by slovak naming convention
+   Categories: abstract, names
+   Default Setting: -
+   Set locally
+      The representation of an abstract type named <t> is accessible in the
+      definition of a function or constant named <t><Name>
+      
+aliasunique
+   unique parameter is aliased
+   Categories: aliasing, memory
+   Mode Settings: -+++
+   Set locally
+      A unique or only parameter is aliased by some other parameter or visible
+      global.
+      
+allblock
+   the body of an if, while or for statement is not a block (sets ifblock,
+   whileblock and forblock)
+   Category: controlflow
+   Default Setting: -
+   Set locally
+      Body is a single statement, not a compound block.
+      
+allempty
+   an if, while or for statement has no body (sets ifempty, whileempty and
+   forempty
+   Category: controlflow
+   Default Setting: -
+   Set locally
+   
+allglobs
+   report use and modification errors for globals not annotated with unchecked
+   Categories: globals, implicit
+   Mode Settings: --++
+   Set locally
+   
+allimponly
+   sets globimponly, retimponly, structimponly, specglobimponly, specretimponly
+   and specstructimponly
+   Categories: memory, implicit
+   Default Setting: -
+   Set locally
+   
+allmacros
+   sets fcnmacros and constmacros
+   Category: macros
+   Default Setting: -
+   Set locally
+      All macros (not preceded by /*@notfunction@*/) are checked as functions
+      or constants depending on whether or not they have parameter lists.
+      
+alwaysexits
+   loop predicate always exits
+   Category: controlflow
+   Default Setting: +
+   Set locally
+   
+annotationerror
+   annotation is used in inconsistent location
+   Categories: declarations, 
+   Default Setting: +
+   Set locally
+      A declaration uses an invalid annotation.
+      
+ansi89limits
+   check for violations of standard limits (controlnestdepth, stringliterallen,
+   includenest, numstructfields, numenummembers) based on ANSI89 standard
+   Categories: limits, ansi
+   Default Setting: -
+   Set locally
+   
+assignexpose
+   abstract representation is exposed (assignments only)
+   Categories: exposure, abstract
+   Mode Settings: --++
+   Set locally
+      Storage internal to the representation of an abstract type is assigned to
+      an external pointer. This means clients may have access to a pointer into
+      the abstract representation. If the external pointer is a parameter, the
+      exposed qualifier can be used to allow the assignment, however, this is
+      considered dangerous programming practice.
+      
+badflag
+   warn about bad command line flags
+   Category: help
+   Default Setting: +
+   Set locally
+      A flag is not recognized or used in an incorrect way
+      
+bitwisesigned
+   a bitwise logical operator does not have unsigned operands
+   Categories: operations, 
+   Mode Settings: ---+
+   Set locally
+      An operand to a bitwise operator is not an unsigned values.  This may
+      have unexpected results depending on the signed representations.
+      
+boolcompare
+   comparison between bools (dangerous because of multiple TRUE values)
+   Categories: booleans, operations
+   Mode Settings: -+++
+   Set locally
+      Two bool values are compared directly using a C primitive. This may
+      produce unexpected results since all non-zero values are considered TRUE,
+      so different TRUE values may not be equal. The file bool.h (included in
+      splint/lib) provides bool_equal for safe bool comparisons.
+      
+boolfalse
+   set name of boolean false (default FALSE)
+   Category: booleans
+   Default Setting: -
+   Set locally
+   String argument.  Default: FALSE
+   
+boolint
+   bool and int are equivalent
+   Categories: typeequivalence, booleans
+   Mode Settings: +---
+   Set locally
+      To make bool and int types equivalent, use +boolint.
+      
+boolops
+   primitive operation (!, && or ||) does not has a boolean argument
+   Categories: booleans, operations
+   Mode Settings: -+++
+   Set locally
+      The operand of a boolean operator is not a boolean. Use +ptrnegate to
+      allow ! to be used on pointers.
+      
+booltrue
+   set name of boolean true (default TRUE)
+   Category: booleans
+   Default Setting: -
+   Set locally
+   String argument.  Default: TRUE
+   
+booltype
+   set name of boolean type (default bool)
+   Category: booleans
+   Default Setting: -
+   Set locally
+   String argument.  Default: lltX_bool
+   
+bounds
+   memory bounds checking (sets boundsread and boundswrite)
+   Categories: memorybounds, memory
+   Default Setting: -
+   Set locally
+      Memory read or write may be out of bounds of allocated storage.
+      
+boundsread
+   possible out of bounds read
+   Categories: memorybounds, memory
+   Mode Settings: ----
+   Set locally
+      A memory read references memory beyond the allocated storage.
+      
+boundswrite
+   possible buffer overflow from an out of bounds write
+   Categories: memorybounds, memory
+   Mode Settings: ----
+   Set locally
+      A memory write may write to an address beyond the allocated buffer.
+      
+branchstate
+   storage has inconsistent states of alternate paths through a branch
+   Category: memory
+   Mode Settings: -+++
+   Set locally
+      The state of a variable is different depending on which branch is taken.
+      This means no annotation can sensibly be applied to the storage.
+      
+bufferoverflow
+   possible buffer overflow vulnerability
+   Categories: warnuse, security
+   Mode Settings: -+++
+   Set locally
+      Use of function that may lead to buffer overflow.
+      
+bufferoverflowhigh
+   likely buffer overflow vulnerability
+   Categories: warnuse, security
+   Mode Settings: ++++
+   Set locally
+      Use of function that may lead to buffer overflow.
+      
+bugslimit
+   set maximum number of bugs detected before giving up
+   Category: debug
+   Default Setting: -
+   Set locally
+   Numeric Argument.  Default: 3
+   
+casebreak
+   non-empty case in a switch without preceding break
+   Category: controlflow
+   Mode Settings: -+++
+   Set locally
+      Execution falls through from the previous case.
+      
+castexpose
+   abstract representation is exposed through a cast
+   Categories: exposure, abstract
+   Mode Settings: --++
+   Set locally
+      Storage internal to the representation of an abstract type is exposed
+      through a type cast. This means clients may have access to a pointer into
+      the abstract representation.
+      
+castfcnptr
+   a pointer to a function is cast to a pointer to void (or vice versa)
+   Categories: typeequivalence, pointers
+   Default Setting: +
+   Set locally
+      A pointer to a function is cast to (or used as) a pointer to void (or
+      vice versa).
+      
+charindex
+   char can be used to index arrays
+   Categories: typeequivalence, arrays
+   Mode Settings: +---
+   Set locally
+      To allow char types to index arrays, use +charindex.
+      
+charint
+   char and int are equivalent
+   Category: typeequivalence
+   Mode Settings: +---
+   Set locally
+      To make char and int types equivalent, use +charint.
+      
+charintliteral
+   character constants (e.g., 'a') can be used as ints
+   Categories: typeequivalence, numbers
+   Mode Settings: +---
+   Set locally
+      A character constant is used as an int. Use +charintliteral to allow
+      character constants to be used as ints.  (This is safe since the actual
+      type of a char constant is int.)
+      
+charunsignedchar
+   allow char and unsigned char types to match
+   Category: typeequivalence
+   Mode Settings: +---
+   Set locally
+      To allow char and unsigned char types to match use +charunsignedchar.
+      
+checkedglobalias
+   function returns with a checked global aliasing external state
+   Categories: aliasing, globals
+   Mode Settings: -+++
+   Set locally
+      A global variable aliases externally-visible state when the function
+      returns.
+      
+checkmodglobalias
+   function returns with a checkmod global aliasing external state
+   Categories: aliasing, globals
+   Mode Settings: -+++
+   Set locally
+      A global variable aliases externally-visible state when the function
+      returns.
+      
+checkpost
+   unable to verify predicate in ensures clause
+   Categories: memorybounds, memory
+   Mode Settings: ----
+   Set locally
+      The function implementation may not satisfy a post condition given in an
+      ensures clause.
+      
+checkstrictglobalias
+   function returns with a checkstrict global aliasing external state
+   Categories: aliasing, globals
+   Mode Settings: -+++
+   Set locally
+      A global variable aliases externally-visible state when the function
+      returns.
+      
+checkstrictglobs
+   report use and modification errors for checkedstrict globals
+   Categories: globals, unconstrained
+   Mode Settings: ++++
+   Set locally
+   
+codeimponly
+   sets globimponly, retimponly and structimponly
+   Categories: memory, implicit
+   Default Setting: -
+   Set locally
+   
+commentchar
+   set marker character for syntactic comments (default is '@')
+   Categories: initializations, comments
+   Default Setting: -
+   Set locally
+   Character Argument.  Default: @
+      Set the marker character for syntactic comments. Comments beginning with
+      /*<char> are interpreted by Splint, where <char> is the comment marker
+      character.
+      
+commenterror
+   inconsistent syntactic comment
+   Categories: declarations, 
+   Default Setting: +
+   Set locally
+      A syntactic comment is used inconsistently.
+      
+compdef
+   parameter, return value or global completely defined
+   Categories: memory, definition
+   Mode Settings: -+++
+   Set locally
+      Storage derivable from a parameter, return value or global is not
+      defined. Use /*@out@*/ to denote passed or returned storage which need
+      not be defined.
+      
+compdestroy
+   all only references derivable from void pointer out only parameter are
+   released
+   Categories: memory, leaks
+   Mode Settings: -+++
+   Set locally
+      A storage leak due to incomplete deallocation of a structure or deep
+      pointer is suspected. Unshared storage that is reachable from a reference
+      that is being deallocated has not yet been deallocated. Splint assumes
+      when an object is passed as an out only void pointer that the outer
+      object will be deallocated, but the inner objects will not.
+      
+compmempass
+   actual parameter matches alias kind of formal parameter completely 
+   Categories: memory, definition
+   Mode Settings: -+++
+   Set locally
+      Storage derivable from a parameter does not match the alias kind expected
+      for the formal parameter.
+      
+constmacros
+   check all macros without parameter lists as constants
+   Category: macros
+   Default Setting: -
+   Set locally
+      Every non-parameterized macro (not preceded by /*@notfunction@*/) is
+      checked as a constant.
+      
+constprefix
+   set namespace prefix for constants
+   Categories: names, prefixes
+   Default Setting: -
+   Set locally
+   String argument.  No default.
+      A constant does not start with the constantprefix
+      
+constprefixexclude
+   the constprefix may not be used for non-constant identifiers
+   Categories: names, prefixes
+   Default Setting: -
+   Set locally
+      An identifier that is not a constant starts with the constantprefix.
+      
+constuse
+   constant declared but not used
+   Category: alluse
+   Mode Settings: -+++
+   Set locally
+      A constant is declared but not used. Use unused in the constant
+      declaration to suppress message.
+      
+continuecomment
+   line continuation marker (\) in comment before */ on same line
+   Categories: comments, 
+   Default Setting: -
+   Set locally
+      A line continuation marker (\) appears inside a comment on the same line
+      as the comment close. Preprocessors should handle this correctly, but it
+      causes problems for some preprocessors.
+      
+controlnestdepth
+   set maximum nesting depth of compound statements, iteration control
+   structures, and selection control structures (ANSI89 minimum is 15;
+   ISO99 is 63)
+   Categories: limits, ansi
+   Mode Settings: ---+
+   Set locally
+   Numeric Argument.  Default: 63
+      Maximum number of control levels exceeded.
+      
+cppnames
+   external or internal name is a C++ keyword or reserved word
+   Categories: names, ansi
+   Mode Settings: --++
+   Set locally
+      External name is a C++ keyword or reserved word. This could lead to
+      problems if the code is compiled with a C++ compiler.
+      
+czech
+   czech naming convention (sets accessczech, czechfunctions, czechvars,
+   czechconstants, czechenums, and czechmacros)
+   Categories: names, abstract
+   Default Setting: -
+   Set locally
+      Name is not consistent with Czech naming convention.
+      
+czechconsts
+   czech naming convention violated in a constant declaration
+   Categories: names, abstract
+   Default Setting: -
+   Set locally
+      Constant name is not consistent with Czech naming convention.
+      
+czechfcns
+   czech naming convention violated in a function or iterator declaration
+   Categories: names, abstract
+   Default Setting: -
+   Set locally
+      Function or iterator name is not consistent with Czech naming convention.
+      
+czechmacros
+   czech naming convention violated in an expanded macro name
+   Categories: names, abstract
+   Default Setting: -
+   Set locally
+      Expanded macro name is not consistent with Czech naming convention.
+      
+czechoslovak
+   czech or slovak naming convention violated
+   Categories: names, abstract
+   Default Setting: -
+   Set locally
+      Name is not consistent with either Czech or Slovak naming convention.
+      
+czechoslovakconsts
+   czechoslovak naming convention violated in a constant declaration
+   Categories: names, abstract
+   Default Setting: -
+   Set locally
+      Constant name is not consistent with Czechoslovak naming convention.
+      
+czechoslovakfcns
+   czechoslovak naming convention violated in a function or iterator
+   declaration
+   Categories: names, abstract
+   Default Setting: -
+   Set locally
+      Function name is not consistent with Czechoslovak naming convention.
+      
+czechoslovakmacros
+   czechoslovak naming convention violated in an expanded macro name
+   Categories: names, abstract
+   Default Setting: -
+   Set locally
+      Expanded macro name is not consistent with Czechoslovak naming
+      convention.
+      
+czechoslovaktypes
+   czechoslovak naming convention violated in a user-defined type definition
+   Categories: names, abstract
+   Default Setting: -
+   Set locally
+      Type name is not consistent with Czechoslovak naming convention.
+      Czechoslovak type names may not include uppercase letters or the
+      underscore character.
+      
+czechoslovakvars
+   czechoslovak naming convention violated in a variable declaration
+   Categories: names, abstract
+   Default Setting: -
+   Set locally
+      Variable name is not consistent with Czechoslovak naming convention.
+      
+czechtypes
+   czech naming convention violated in a user-defined type definition
+   Categories: names, abstract
+   Default Setting: -
+   Set locally
+      Type name is not consistent with Czech naming convention. Czech type
+      names must not use the underscore character.
+      
+czechvars
+   czech naming convention violated in a variable declaration
+   Categories: names, abstract
+   Default Setting: -
+   Set locally
+      Variable name is not consistent with Czech naming convention.
+      
+debugfcnconstraint
+   debug function constraints
+   Categories: debug, memorybounds
+   Mode Settings: ----
+   Set locally
+      Perform buffer overflow checking even if the errors would be surpressed.
+      
+declundef
+   function or variable declared but never defined
+   Category: complete
+   Mode Settings: --++
+   Set locally
+      A function or variable is declared, but not defined in any source code
+      file.
+      
+deepbreak
+   break inside nested while or for or switch
+   Category: controlflow
+   Default Setting: -
+   Set locally
+      A break statement appears inside the body of a nested while, for or
+      switch statement. Sets looploopbreak, loopswitchbreak, switchloopbreak,
+      switchswitchbreak, and looploopcontinue.
+      
+deparrays
+   array elements are dependent storage
+   Categories: memory, arrays
+   Mode Settings: --++
+   Set locally
+      When an element is fetched from an array, Splint analysis is not able to
+      determine if the same element is reused. If +deparrays, Splint will mark
+      local storage assigned from array fetches as dependent.
+      
+dependenttrans
+   dependent transfer errors
+   Category: memory
+   Mode Settings: -+++
+   Set locally
+      Dependent storage is transferred to a non-dependent reference.
+      
+distinctexternalnames
+   external name is not distinguishable from another external name using the
+   number of significant characters
+   Categories: names, ansi
+   Default Setting: -
+   Set locally
+      An external name is not distinguishable from another external name using
+      the number of significant characters. According to ANSI Standard (3.1),
+      an implementation may only consider the first 6 characters significant,
+      and ignore alphabetical case distinctions (ISO C99 requires 31). The
+      +externalnamelen <n> flag may be used to change the number of significant
+      characters, and -externalnamecaseinsensitive to make alphabetical case
+      significant in external names.
+      
+distinctinternalnames
+   internal name is not distinguishable from another internal name using the
+   number of significant characters
+   Categories: names, ansi
+   Default Setting: -
+   Set locally
+      An internal name is not distinguishable from another internal name using
+      the number of significant characters. According to ANSI89 Standard (3.1),
+      an implementation may only consider the first 31 characters significant
+      (ISO C99 specified 63). The +internalnamelen <n> flag changes the number
+      of significant characters, -internalnamecaseinsensitive to makes
+      alphabetical case significant, and +internalnamelookalike to make
+      similar-looking characters non-distinct.
+      
+dump
+   save state for merging (default suffix .lcd)
+   Categories: libraries, files
+   Default Setting: -
+   Set globally only
+   Filename argument.  No default.
+   
+duplicatecases
+   duplicate cases in switch
+   Category: controlflow
+   Default Setting: +
+   Set locally
+      Duplicate cases in switch.
+      
+duplicatequals
+   report duplicate type qualifiers (e.g., unsigned unsigned)
+   Categories: typeequivalence, 
+   Default Setting: +
+   Set locally
+      Duplicate type qualifiers not supported by ISO standard.
+      
+elseifcomplete
+   if ... else if chains must have final else
+   Category: controlflow
+   Mode Settings: ---+
+   Set locally
+      There is no final else following an else if construct.
+      
+emptyreturn: <invalid flag>
+
+enumindex
+   enum can be used to index arrays
+   Categories: typeequivalence, arrays
+   Mode Settings: ----
+   Set locally
+      To allow enum types to index arrays, use +enumindex.
+      
+enumint
+   enum and int are equivalent
+   Category: typeequivalence
+   Mode Settings: ++--
+   Set locally
+      To make enum and int types equivalent, use +enumint.
+      
+enummembers
+   enum members must be int values
+   Mode Settings: ----
+   Set locally
+      Type of initial values for enum members must be int.
+      
+enummemuse
+   member of an enum type not used
+   Category: alluse
+   Mode Settings: -+++
+   Set locally
+      A member of an enum type is never used.
+      
+enumprefix
+   set namespace prefix for enum members
+   Categories: names, prefixes
+   Default Setting: -
+   Set locally
+   String argument.  No default.
+      An enum member does not start with the enumprefix.
+      
+enumprefixexclude
+   the enumprefix may not be used for non-enum member identifiers
+   Categories: names, prefixes
+   Default Setting: -
+   Set locally
+      An identifier that is not an enum member starts with the enumprefix.
+      
+evalorder
+   code has unspecified or implementation-dependent behavior because of order
+   of evaluation
+   Categories: undefined, ansi
+   Mode Settings: -+++
+   Set locally
+      Code has unspecified behavior. Order of evaluation of function parameters
+      or subexpressions is not defined, so if a value is used and modified in
+      different places not separated by a sequence point constraining
+      evaluation order, then the result of the expression is unspecified.
+      
+evalorderuncon
+   code involving call to unspecified function has undefined or
+   implementation-dependent behavior
+   Categories: undefined, ansi
+   Mode Settings: ---+
+   Set locally
+      Code involving a call to function with no modifies or globals clause may
+      have undefined or implementation-dependent behavior (Splint assumes the
+      unconstrained call may modify any reachable state or use any global). Add
+      a specification for the function.
+      
+exitarg
+   argument to exit has implementation defined behavior
+   Categories: systemfunctions, undefined
+   Mode Settings: -+++
+   Set locally
+      The argument to exit should be 0, EXIT_SUCCESS or EXIT_FAILURE
+      
+expect
+   expect <int> code errors
+   Categories: <No Category>, errors
+   Default Setting: -
+   Set globally only
+   Numeric Argument.  Default: 0
+   
+exportany
+   variable, function or type exported but not specified
+   Categories: export, specifications
+   Default Setting: -
+   Set locally
+      A variable, function or type is exported, but not specified.
+      
+exportconst
+   constant exported but not specified
+   Categories: export, specifications
+   Mode Settings: ---+
+   Set locally
+      A constant is exported, but not specified.
+      
+exportfcn
+   function exported but not specified
+   Categories: export, specifications
+   Mode Settings: ---+
+   Set locally
+      A function is exported, but not specified.
+      
+exportheader
+   a declaration is exported but does not appear in a header file
+   Categories: alluse, export
+   Mode Settings: --++
+   Set locally
+      A declaration is exported, but does not appear in a header file.
+      
+exportheadervar
+   a variable declaration is exported but does not appear in a header file
+   Categories: alluse, export
+   Mode Settings: --++
+   Set locally
+      A variable declaration is exported, but does not appear in a header file.
+      (Used with exportheader.)
+      
+exportiter
+   constant exported but not specified
+   Categories: export, specifications
+   Mode Settings: ---+
+   Set locally
+      A constant is exported, but not specified.
+      
+exportlocal
+   a declaration is exported but not used outside this module
+   Categories: alluse, export
+   Mode Settings: -+++
+   Set locally
+      A declaration is exported, but not used outside this module. Declaration
+      can use static qualifier.
+      
+exportmacro
+   expanded macro exported but not specified
+   Categories: export, specifications
+   Mode Settings: ---+
+   Set locally
+      A macro is exported, but not specified.
+      
+exporttype
+   type definition exported but not specified
+   Categories: export, specifications
+   Mode Settings: ---+
+   Set locally
+      A type is exported, but not specified.
+      
+exportvar
+   variable exported but not specified
+   Categories: export, specifications
+   Mode Settings: ---+
+   Set locally
+      A variable is exported, but not specified.
+      
+exposetrans
+   exposure transfer errors
+   Category: memory
+   Mode Settings: -+++
+   Set locally
+      Exposed storage is transferred to a non-exposed, non-observer reference.
+      
+externalnamecaseinsensitive
+   alphabetic comparisons for external names are case-insensitive
+   Categories: names, ansi
+   Default Setting: +
+   Set locally
+      Make alphabetic case insignificant in external names. By ANSI89 standard,
+      case need not be significant in an external name. If +distinctexternalname
+      s is not set, sets +distinctexternalnames with unlimited external name
+      length.
+      
+externalnamelen
+   set the number of significant characters in an external name
+   Categories: names, ansi
+   Default Setting: -
+   Set locally
+   Numeric Argument.  Default: 31
+      Sets the number of significant characters in an external name (default is
+      6 for old ANSI89 limit, C99 requires 31). Sets +distinctexternalnames.
+      
+externalprefix
+   set namespace prefix for external identifiers
+   Categories: names, prefixes
+   Default Setting: -
+   Set locally
+   String argument.  No default.
+      An external identifier does not start with the externalprefix
+      
+externalprefixexclude
+   the externalprefix may not be used for non-external identifiers
+   Categories: names, prefixes
+   Default Setting: -
+   Set locally
+      An identifier that is not external starts with the externalprefix.
+      
+f
+   read an options file (default ~/.splintrc not loaded)
+   Categories: initializations, files
+   Default Setting: -
+   Set globally only
+   Filename argument.  No default.
+      Read an options file (instead of loading default ~/.splintc)
+      
+fcnderef
+   dereferencce of a function type
+   Mode Settings: --++
+   Set locally
+      A function type is dereferenced.  The ANSI standard allows this because
+      of implicit conversion of function designators, however the dereference
+      is unnecessary.
+      
+fcnmacros
+   check all macros with parameter lists as functions
+   Category: macros
+   Default Setting: -
+   Set locally
+      Every parameterized macro (not preceded by /*@notfunction@*/) is checked
+      as a function.
+      
+fcnpost
+   display function post conditions
+   Categories: memorybounds, display
+   Mode Settings: ----
+   Set locally
+      Display function post conditions.
+      
+fcnuse
+   function declared but not used
+   Category: alluse
+   Mode Settings: ++++
+   Set locally
+      A function is declared but not used. Use /*@unused@*/ in front of
+      function header to suppress message.
+      
+fielduse
+   field of structure type not used
+   Category: alluse
+   Mode Settings: -+++
+   Set locally
+      A field is present in a structure type but never used. Use /*@unused@*/
+      in front of field declaration to suppress message.
+      
+fileextensions
+   warn when command line file does not have a recognized extension
+   Category: help
+   Default Setting: +
+   Set locally
+   
+filestaticprefix
+   set namespace prefix for file static declarations
+   Categories: names, prefixes
+   Default Setting: -
+   Set locally
+   String argument.  No default.
+      A file-static identifier does not start with the filestaticprefix.
+      
+filestaticprefixexclude
+   the filestaticprefix may not be used for identifiers that are not file
+   static
+   Categories: names, prefixes
+   Default Setting: -
+   Set locally
+      An identifier that is not file static starts with the filestaticprefix.
+      
+firstcase
+   first statement in switch is not a case
+   Category: controlflow
+   Mode Settings: -+++
+   Set locally
+      The first statement after a switch is not a case.
+      
+fixedformalarray
+   formal parameter of type array is declared with size
+   Categories: declarations, 
+   Default Setting: +
+   Set locally
+      A formal parameter is declared as an array with size.  The size of the
+      array is ignored in this context, since the array formal parameter is
+      treated as a pointer.
+      
+floatdouble
+   float and double are equivalent
+   Category: typeequivalence
+   Mode Settings: +---
+   Set locally
+      To make float and double types equivalent, use +floatdouble.
+      
+forblock
+   the body of a for statement is not a block
+   Category: controlflow
+   Mode Settings: ---+
+   Set locally
+      Loop body is a single statement, not a compound block.
+      
+forcehints
+   provide a hint for every warnings
+   Categories: hints, format
+   Default Setting: -
+   Set locally
+      Provide a hint for every warning
+      
+forempty
+   a for statement has no body
+   Category: controlflow
+   Mode Settings: ---+
+   Set locally
+      For statement has no body.
+      
+forloopexec
+   assume all for loops execute at least once
+   Categories: controlflow, memory
+   Default Setting: -
+   Set locally
+   
+formalarray
+   formal parameter is an array
+   Categories: declarations, 
+   Default Setting: -
+   Set locally
+      A formal parameter is declared as an array.  This can be confusing, since
+      a formal array parameter is treated as a pointer.
+      
+formatcode
+   invalid format code in format string for printf or scanf-like function
+   Default Setting: +
+   Set locally
+      Format code in a format string is not valid.
+      
+formatconst
+   format parameter is not a string constant (hence variable arguments cannot
+   be typechecked)
+   Mode Settings: -+++
+   Set locally
+      Format parameter is not known at compile-time.  This can lead to security
+      vulnerabilities because the arguments cannot be type checked.
+      
+formattype
+   type-mismatch in parameter corresponding to format code in a printf or
+   scanf-like function
+   Default Setting: +
+   Set locally
+      Type of parameter is not consistent with corresponding code in format
+      string.
+      
+forwarddecl
+   forward declarations of pointers to abstract representation match abstract
+   type
+   Categories: typeequivalence, abstract
+   Mode Settings: +---
+   Set locally
+   
+freshtrans
+   fresh storage transferred to non-only reference (memory leak)
+   Category: memory
+   Mode Settings: -+++
+   Set locally
+      Fresh storage (newly allocated in this function) is transferred in a way
+      that the obligation to release storage is not propagated.  Use the
+      /*@only@*/ annotation to indicate the a return value is the only
+      reference to the returned storage.
+      
+fullinitblock
+   initializer sets all fields
+   Category: definition
+   Default Setting: +
+   Set locally
+      Initializer does not set every field in the structure.
+      
+globalias
+   function returns with global aliasing external state (sets
+   checkstrictglobalias, checkedglobalias, checkmodglobalias and
+   uncheckedglobalias)
+   Categories: aliasing, globals
+   Default Setting: -
+   Set locally
+      A global variable aliases externally-visible state when the function
+      returns.
+      
+globalprefix
+   set namespace prefix for global variables
+   Categories: names, prefixes
+   Default Setting: -
+   Set locally
+   String argument.  No default.
+      A global variable does not start with the globalprefix
+      
+globalprefixexclude
+   the globalprefix may not be used for non-global identifiers
+   Categories: names, prefixes
+   Default Setting: -
+   Set locally
+      An identifier that is not a global variable starts with the globalprefix.
+      
+globimponly
+   assume unannotated global storage is only
+   Categories: memory, implicit
+   Default Setting: +
+   Set locally
+   
+globnoglobs
+   use of checked global in a function with no globals list or specification
+   Categories: globals, unconstrained
+   Mode Settings: ---+
+   Set locally
+      A specified global variable is used in the function, but not listed in
+      its globals list. Without +globnoglobs, only globals declared with
+      /*@checkedstrict@*/ will produce use errors in functions without globals
+      lists. The /*@globals ... @*/ control comment can be used to give a
+      globals list for an unspecified function.
+      
+globs
+   undocumented use of a checked global variable
+   Categories: globals, specifications
+   Default Setting: +
+   Set locally
+      A checked global variable is used in the function, but not listed in its
+      globals clause. By default, only globals specified in .lcl files are
+      checked. To check all globals, use +allglobals. To check globals
+      selectively use /*@checked@*/ in the global declaration.
+      
+globsimpmodsnothing
+   functions declared with a globals list but no modifies clause are assumed to
+   modify nothing
+   Categories: modification, globals
+   Mode Settings: --++
+   Set locally
+      An implicit modifies nothing clause is assumed for a function declared
+      with a globals list but not modifies clause.
+      
+globstate
+   returns with global in inconsistent state (null or undefined)
+   Category: globals
+   Mode Settings: -+++
+   Set locally
+      A global variable does not satisfy its annotations when control is
+      transferred.
+      
+globuse
+   global listed for a function not used
+   Categories: globals, specifications
+   Mode Settings: ++++
+   Set locally
+      A global variable listed in the function's globals list is not used in
+      the body of the function.
+      
+gnuextensions
+   support some gnu (gcc) language extensions
+   Categories: , ansi
+   Default Setting: +
+   Set locally
+      ANSI C does not allow some language features supported by gcc and other
+      compilers. Use +gnuextensions to allow some of these extensions.
+      
+grammar
+   debug parsing
+   Category: debug
+   Default Setting: -
+   Set locally
+   
+hasyield
+   iter declaration has no yield parameters
+   Category: iterators
+   Default Setting: -
+   Set locally
+      An iterator has been declared with no parameters annotated with yield.
+      This may be what you want, if the iterator is meant to do something a
+      fixed number of times, but returns no information to the calling context.
+      Probably, a parameter is missing the yield annotation to indicate that it
+      is assigned a value in the calling context.
+      
+help
+   -help <flags> will describe flags
+   Category: help
+   Default Setting: -
+   Set globally only
+      Display help
+      
+hints
+   provide a hint the first time a particular warning appears
+   Categories: hints, format
+   Default Setting: +
+   Set locally
+      Provide a hint the first time a particular warning appears
+      
+i
+   set LCL initilization file
+   Categories: initializations, files
+   Default Setting: -
+   Set globally only
+   Filename argument.  No default.
+   
+ifblock
+   the body of an if statement is not a block
+   Category: controlflow
+   Mode Settings: ---+
+   Set locally
+      If body is a single statement, not a compound block.
+      
+ifempty
+   an if statement has no body
+   Category: controlflow
+   Mode Settings: ++++
+   Set locally
+      If statement has no body.
+      
+ignorequals
+   ignore type qualifiers (long, short, unsigned)
+   Categories: typeequivalence, numbers
+   Mode Settings: ----
+   Set locally
+      To ignore type qualifiers in type comparisons use +ignorequals.
+      
+ignoresigns
+   ignore signs in type comparisons (unsigned matches signed)
+   Categories: typeequivalence, numbers
+   Mode Settings: ----
+   Set locally
+      To ignore signs in type comparisons use +ignoresigns
+      
+immediatetrans
+   an immediate address (result of &) is transferred inconsistently
+   Category: memory
+   Mode Settings: -+++
+   Set locally
+      An immediate address (result of & operator) is transferred
+      inconsistently.
+      
+impabstract
+   assume user type definitions are abstract (unless /*@concrete@*/ is used)
+   Categories: abstract, implicit
+   Default Setting: -
+   Set locally
+   
+impcheckedglobs
+   assume checked qualifier for unqualified global declarations
+   Categories: globals, unconstrained
+   Mode Settings: ----
+   Set locally
+   
+impcheckedspecglobs
+   assume checked qualifier for unqualified global declarations in .lcl files
+   Categories: globals, unconstrained
+   Mode Settings: -+++
+   Set locally
+   
+impcheckedstatics
+   assume checked qualifier for unqualified file static declarations
+   Categories: globals, unconstrained
+   Mode Settings: ----
+   Set locally
+   
+impcheckedstrictglobs
+   assume checkedstrict qualifier for unqualified global declarations
+   Categories: globals, unconstrained
+   Mode Settings: ---+
+   Set locally
+   
+impcheckedstrictspecglobs
+   assume checkmod qualifier for unqualified global declarations in .lcl files
+   Categories: globals, unconstrained
+   Mode Settings: ---+
+   Set locally
+   
+impcheckedstrictstatics
+   assume checkedstrict qualifier for unqualified file static declarations
+   Categories: globals, unconstrained
+   Mode Settings: ---+
+   Set locally
+   
+impcheckmodglobs
+   assume checkmod qualifier for unqualified global declarations
+   Categories: globals, unconstrained
+   Mode Settings: ----
+   Set locally
+   
+impcheckmodinternals
+   assume checkmod qualifier for unqualified local static declarations (for
+   internal state modifications)
+   Categories: globals, unconstrained
+   Mode Settings: --++
+   Set locally
+   
+impcheckmodspecglobs
+   assume checkmod qualifier for unqualified global declarations in .lcl files
+   Categories: globals, unconstrained
+   Mode Settings: ----
+   Set locally
+   
+impcheckmodstatics
+   assume checkmod qualifier for unqualified file static declarations
+   Categories: globals, unconstrained
+   Mode Settings: ----
+   Set locally
+   
+impconj
+   make all alternate types implicit (useful for making system libraries
+   Category: libraries
+   Default Setting: -
+   Set locally
+   
+implementationoptional
+   declarator is implementation optional (ISO99 does not require an
+   implementation to provide it)
+   Categories: warnuse, security
+   Mode Settings: --++
+   Set locally
+      Use of a declarator that is implementation optional, not required by
+      ISO99.
+      
+implictconstraint
+   generate implicit constraints for functions
+   Categories: memorybounds, memory
+   Mode Settings: ----
+   Set locally
+   
+impouts
+   pointer parameters to unspecified functions may be implicit out parameters
+   Categories: definition, implicit
+   Mode Settings: ----
+   Set locally
+   
+imptype
+   variable declaration has unknown (implicitly int) type
+   Categories: declarations, 
+   Mode Settings: -+++
+   Set locally
+      A variable declaration has no explicit type.  The type is implicitly int.
+      
+includenest
+   set maximum number of nested #include files (ANSI89 minimum is 8;
+   ISO99 is 63)
+   Categories: limits, ansi
+   Mode Settings: --++
+   Set locally
+   Numeric Argument.  Default: 63
+      Maximum number of nested #include files exceeded.
+      
+incompletetype
+   formal parameter has an incomplete type
+   Categories: declarations, 
+   Default Setting: +
+   Set locally
+      A formal parameter is declared with an incomplete type.
+      
+incondefs
+   function, variable or constant redefined with inconsistent type
+   Categories: declarations, 
+   Mode Settings: -+++
+   Set locally
+      A function, variable or constant is redefined with a different type.
+      
+incondefslib
+   function, variable or constant defined in a library is redefined with
+   inconsistent type
+   Categories: declarations, libraries
+   Mode Settings: -+++
+   Set locally
+      A function, variable or constant previously defined in a library is
+      redefined with a different type.
+      
+indentspaces
+   set number of spaces to indent sub-messages
+   Categories: format, display
+   Default Setting: -
+   Set locally
+   Numeric Argument.  Default: 3
+   
+infloops
+   likely infinite loop is detected
+   Category: controlflow
+   Mode Settings: -+++
+   Set locally
+      This appears to be an infinite loop. Nothing in the body of the loop or
+      the loop test modifies the value of the loop test. Perhaps the
+      specification of a function called in the loop body is missing a
+      modification.
+      
+infloopsuncon
+   likely infinite loop is detected (may result from unconstrained function)
+   Category: controlflow
+   Mode Settings: --++
+   Set locally
+      This appears to be an infinite loop. Nothing in the body of the loop or
+      the loop test modifies the value of the loop test. There may be a
+      modification through a call to an unconstrained function, or an
+      unconstrained function in the loop test may use a global variable
+      modified by the loop body.
+      
+initallelements
+   initializer defines all array elements
+   Category: definition
+   Default Setting: +
+   Set locally
+      Initializer does not define all elements of a declared array.
+      
+initsize
+   initializer defines extra array elements
+   Category: definition
+   Default Setting: +
+   Set locally
+      Initializer block contains more elements than the size of a declared
+      array.
+      
+internalglobs
+   use of internalState
+   Category: globals
+   Mode Settings: ---+
+   Set locally
+      A called function uses internal state, but the globals list for the
+      function being checked does not include internalState
+      
+internalglobsnoglobs
+   use of internalState (in function with no globals list)
+   Category: globals
+   Mode Settings: ---+
+   Set locally
+      A called function uses internal state, but the function being checked has
+      no globals list
+      
+internalnamecaseinsensitive
+   set whether case is significant an internal names (-internalnamecaseinsensiti
+   ve means case is significant)
+   Categories: names, ansi
+   Default Setting: -
+   Set locally
+      Set whether case is significant an internal names (-internalnamecaseinsens
+      itive means case is significant). By ANSI89 default, case is not
+      significant.  If +distinctinternalnames is not set, sets
+      +distinctinternalnames with unlimited internal name length.
+      
+internalnamelen
+   set the number of significant characters in an internal name
+   Categories: names, ansi
+   Default Setting: -
+   Set locally
+   Numeric Argument.  Default: 63
+      Sets the number of significant characters in an internal name (ANSI89
+      default is 31.)  Sets +distinctinternalnames.
+      
+internalnamelookalike
+   lookalike characters match in internal names
+   Categories: names, ansi
+   Default Setting: -
+   Set locally
+      Set whether similar looking characters (e.g., "1" and "l") match in
+      internal names.
+      
+iso99limits
+   check for violations of standard limits (controlnestdepth, stringliterallen,
+   includenest, numstructfields, numenummembers) based on ISO99 standard
+   Categories: limits, ansi
+   Default Setting: -
+   Set locally
+   
+isolib
+   use normal standard library
+   Categories: libraries, initializations
+   Default Setting: -
+   Set globally only
+      Library based on the ISO standard library specification is used.
+      
+isoreserved
+   external name conflicts with name reserved for system or standard library
+   Categories: names, ansi
+   Mode Settings: --++
+   Set locally
+      External name is reserved for system use by ISO C99 standard.
+      
+isoreservedinternal
+   internal name conflicts with name reserved for system or standard library
+   Categories: names, ansi
+   Mode Settings: ---+
+   Set locally
+      Internal name is reserved for system in ISO C99 standard (this should not
+      be necessary unless you are worried about C library implementations that
+      violate the standard and use macros).
+      
+iterbalance
+   iter is not balanced with end_<iter>
+   Category: iterators
+   Default Setting: +
+   Set locally
+   
+iterloopexec
+   assume all iterator loops execute at least once
+   Categories: controlflow, memory
+   Default Setting: -
+   Set locally
+   
+iterprefix
+   set namespace prefix for iterators
+   Categories: names, prefixes
+   Default Setting: -
+   Set locally
+   String argument.  No default.
+      An iter does not start with the iterator prefix
+      
+iterprefixexclude
+   the iterprefix may not be used for non-iter identifiers
+   Categories: names, prefixes
+   Default Setting: -
+   Set locally
+      An identifier that is not a iter starts with the iterprefix.
+      
+iteryield
+   iter yield parameter is inappropriate
+   Category: iterators
+   Default Setting: +
+   Set locally
+   
+its4low
+   risky security vulnerabilities (from its4 database)
+   Categories: its4, security
+   Default Setting: -
+   Set locally
+      Security vulnerability classified as risky in its4 database.
+      
+its4moderate
+   moderately risky security vulnerabilities (from its4 database)
+   Categories: its4, security
+   Default Setting: -
+   Set locally
+      Security vulnerability classified as moderate risk in its4 database.
+      
+its4mostrisky
+   most risky security vulnerabilities (from its4 database)
+   Categories: its4, security
+   Default Setting: -
+   Set locally
+      Security vulnerability classified as most risky in its4 database.
+      
+its4risky
+   risky security vulnerabilities (from its4 database)
+   Categories: its4, security
+   Default Setting: -
+   Set locally
+      Security vulnerability classified as risky in its4 database.
+      
+its4veryrisky
+   very risky security vulnerabilities (from its4 database)
+   Categories: its4, security
+   Default Setting: -
+   Set locally
+      Security vulnerability classified as very risky in its4 database.
+      
+keep
+   do not delete temporary files
+   Category: debug
+   Default Setting: -
+   Set locally
+   
+keeptrans
+   keep storage transferred inconsistently
+   Category: memory
+   Mode Settings: -+++
+   Set locally
+      Keep storage is transferred inconsistently --- either in a way that may
+      add a new alias to it, or release it.
+      
+kepttrans
+   kept storage transferred to non-temporary reference
+   Category: memory
+   Mode Settings: -+++
+   Set locally
+      storage is transferred to a non-temporary reference after being passed as
+      keep parameter. The storage may be released or new aliases created.
+      
+larchpath
+   set path for searching for library files (overrides LARCH_PATH environment
+   variable)
+   Categories: directories, files
+   Default Setting: -
+   Set globally only
+*** Note: possible difference in the test result because of the default path here:
+   Path argument.  Default: .:/usr/local/share/splint/lib:/af10/evans/LCLintDev/
+   lib:
+   
+lclexpect
+   expect <int> spec errors
+   Categories: <No Category>, errors
+   Default Setting: -
+   Set globally only
+   Numeric Argument.  Default: 0
+   
+lclimportdir
+   set directory to search for LCL import files (overrides LCLIMPORTDIR)
+   Categories: directories, files
+   Default Setting: -
+   Set globally only
+*** Note: possible difference in the test result because of the default path here:
+   Directory argument.  Default: .:/usr/local/share/splint/imports:/af10/evans/L
+   CLintDev/imports
+   
+lcs
+   generate .lcs files
+   Categories: headers, specifications
+   Default Setting: +
+   Set globally only
+   
+legacy
+   legacy declaration in Unix Standard
+   Category: warnuse
+   Mode Settings: ----
+   Set locally
+      Use of a declarator that is marked as a legacy entry in the Unix
+      Standard.
+      
+lh
+   generate .lh files
+   Categories: headers, specifications
+   Default Setting: -
+   Set globally only
+   
+libmacros
+   check all macros with declarations in library as functions
+   Category: macros
+   Default Setting: -
+   Set locally
+      Every macro declared in the load library is checked.
+      
+likelybool
+   type name is probably a boolean type but does not match default boolean type
+   name, "bool", and alternate name is not set
+   Categories: booleans, help
+   Default Setting: +
+   Set locally
+      Use the -booltype, -boolfalse and -booltrue flags to change the name of
+      the default boolean type.
+      
+limit
+   limit <int> consecutive repeated errors
+   Categories: suppress, errors
+   Default Setting: -
+   Set locally
+   Numeric Argument.  Default: -1
+   
+linelen
+   set length of messages (number of chars)
+   Categories: format, display
+   Default Setting: -
+   Set locally
+   Numeric Argument.  Default: 80
+   
+lintcomments
+   interpret traditional lint comments (/*FALLTHROUGH*/, /*NOTREACHED*/)
+   Categories: syncomments, suppress
+   Default Setting: +
+   Set locally
+   
+load
+   load state from dump file (default suffix .lcd)
+   Categories: libraries, files
+   Default Setting: -
+   Set globally only
+   Filename argument.  No default.
+   
+localprefix
+   set namespace prefix for local variables
+   Categories: names, prefixes
+   Default Setting: -
+   Set locally
+   String argument.  No default.
+      A local variable does not start with the localprefix
+      
+localprefixexclude
+   the localprefix may not be used for non-local identifiers
+   Categories: names, prefixes
+   Default Setting: -
+   Set locally
+      An identifier that is not a local variable starts with the localprefix.
+      
+longintegral
+   allow long type to match an arbitrary integral type (e.g., dev_t)
+   Categories: typeequivalence, numbers
+   Mode Settings: ----
+   Set locally
+      To allow arbitrary integral types to match long unsigned, use
+      +longintegral.
+      
+longsignedintegral
+   allow long type to match an arbitrary signed integral type (e.g., ssize_t)
+   Categories: typeequivalence, numbers
+   Mode Settings: ----
+   Set locally
+      To allow arbitrary signed integral types to match long unsigned, use
+      +longsignedintegral.
+      
+longunsignedintegral
+   allow long unsigned type to match an arbitrary integral type (e.g., dev_t)
+   Categories: typeequivalence, numbers
+   Mode Settings: +---
+   Set locally
+      To allow arbitrary integral types to match long unsigned, use
+      +longunsignedintegral.
+      
+longunsignedunsignedintegral
+   allow long unsigned type to match an arbitrary unsigned integral type (e.g.,
+   size_t)
+   Categories: typeequivalence, numbers
+   Mode Settings: +---
+   Set locally
+      To allow arbitrary unsigned integral types to match long unsigned, use
+      +longunsignedunsignedintegral.
+      
+loopexec
+   assume all loops execute at least once (sets forloopexec, whileloopexec and
+   iterloopexec)
+   Categories: controlflow, memory
+   Default Setting: -
+   Set locally
+   
+looploopbreak
+   break inside nested while or for
+   Category: controlflow
+   Mode Settings: --++
+   Set locally
+      A break statement appears inside the body of a nested while or for
+      statement. This is perfectly reasonable code, but check that the break is
+      intended to break only the inner loop. The break statement may be
+      preceded by /*@innerbreak@*/ to suppress the message for this break only.
+      
+looploopcontinue
+   continue inside nested loop
+   Category: controlflow
+   Mode Settings: ---+
+   Set locally
+      A continue statement appears inside a loop within a loop. This is
+      perfectly reasonable code, but check that the continue is intended to
+      continue only the inner loop. The continue statement may be preceded by
+      /*@innercontinue@*/ to suppress the message for this continue only.
+      
+loopswitchbreak
+   break in switch inside loop
+   Category: controlflow
+   Mode Settings: ---+
+   Set locally
+      A break statement appears inside a switch statement within a while or for
+      loop. This is perfectly reasonable code, but check that the break is
+      intended to break only the inner loop. The break statement may be
+      preceded by /*@switchbreak@*/ to suppress the message for this break
+      only.
+      
+macroassign
+   assignment to a macro parameter
+   Categories: macros, parameters
+   Mode Settings: -+++
+   Set locally
+      A macro parameter is used as the left side of an assignment expression.
+      This exhibits behavior that could not be implemented by a function.
+      
+macroconstdecl
+   non-parameterized macro without prototype or specification
+   Categories: macros, prototypes
+   Mode Settings: -+++
+   Set locally
+      Macro constant has no declaration. Use /*@constant ...@*/ to declare the
+      macro.
+      
+macrodecl
+   macro without prototype or specification (sets macrofcndecl and
+   macroconstdecl)
+   Categories: macros, prototypes
+   Mode Settings: ----
+   Set locally
+      Argument checking cannot be done well for macros without prototypes or
+      specifications, since the types of the arguments are unknown.
+      
+macroempty
+   macro definition for is empty
+   Category: macros
+   Mode Settings: ---+
+   Set locally
+      A macro definition has no body.
+      
+macrofcndecl
+   parameterized macro without prototype or specification
+   Categories: macros, prototypes
+   Mode Settings: -+++
+   Set locally
+      Function macro has no declaration.
+      
+macromatchname
+   macro definition does not match iter or constant declaration
+   Category: macros
+   Mode Settings: ++++
+   Set locally
+      A iter or constant macro is defined using a different name from the one
+      used in the previous syntactic comment
+      
+macroparams
+   macro parameter not used exactly once
+   Categories: macros, parameters
+   Mode Settings: -+++
+   Set locally
+      A macro parameter is not used exactly once in all possible invocations of
+      the macro. To behave like a function, each macro parameter must be used
+      exactly once on all invocations of the macro so that parameters with
+      side-effects are evaluated exactly once. Use /*@sef@*/ to denote
+      parameters that must be side-effect free.
+      
+macroparens
+   macro parameter used without parentheses (in potentially dangerous context)
+   Category: macros
+   Mode Settings: -+++
+   Set locally
+      A macro parameter is used without parentheses. This could be dangerous if
+      the macro is invoked with a complex expression and precedence rules will
+      change the evaluation inside the macro.
+      
+macroredef
+   macro redefined
+   Category: macros
+   Mode Settings: -+++
+   Set locally
+      A macro is defined in more than one place.
+      
+macroreturn: <invalid flag>
+
+macrostmt
+   macro definition is syntactically not equivalent to function
+   Category: macros
+   Mode Settings: -+++
+   Set locally
+      A macro is defined in a way that may cause syntactic problems. If the
+      macro returns a value, use commas to separate expressions;
+      otherwise, use do { <macro body> } while (FALSE) construct.
+      
+macrounrecog
+   unrecognized identifier in macro
+   Categories: macros, unrecognized
+   Mode Settings: -+++
+   Set locally
+      An unrecognized identifier appears in a macro. If the identifier is
+      defined before the macro is used, then this is okay.
+      
+macrovarprefix
+   set namespace prefix for variables declared in a macro body
+   Categories: names, prefixes
+   Default Setting: +
+   Set locally
+   String argument.  Default: m_
+      A variable declared in a macro body does not start with the
+      macrovarprefix.
+      
+macrovarprefixexclude
+   the macrovarprefix may not be used for non-macro variables
+   Categories: names, prefixes
+   Default Setting: +
+   Set locally
+      A variable declared outside a macro body starts with the macrovarprefix.
+      
+maintype
+   type of main does not match expected type
+   Categories: systemfunctions, 
+   Default Setting: +
+   Set locally
+      The function main does not match the expected type.
+      
+matchanyintegral
+   allow any intergral type to match an arbitrary integral type (e.g., dev_t)
+   Categories: typeequivalence, numbers
+   Mode Settings: ----
+   Set locally
+      To allow arbitrary integral types to match any integral type, use
+      +matchanyintegral.
+      
+matchfields
+   struct or enum type redefined with inconsistent fields or members
+   Categories: declarations, 
+   Mode Settings: -+++
+   Set locally
+      A struct, union or enum type is redefined with inconsistent fields or
+      members.
+      
+mayaliasunique
+   unique parameter may be aliased
+   Categories: aliasing, memory
+   Mode Settings: -+++
+   Set locally
+      A unique or only parameter may be aliased by some other parameter or
+      visible global.
+      
+memchecks
+   sets all dynamic memory checking flags (memimplicit, mustfree, mustdefine,
+   mustnotalias, null, memtrans)
+   Category: memory
+   Default Setting: -
+   Set locally
+   
+memimp
+   memory errors for unqualified storage
+   Categories: memory, implicit
+   Mode Settings: -+++
+   Set locally
+   
+memtrans
+   memory transfer errors (sets all *trans flags)
+   Category: memory
+   Default Setting: -
+   Set locally
+      Memory is transferred in a way that violates annotations.
+      
+misplacedsharequal
+   declaration of unsharable storage uses sharing annotation
+   Categories: declarations, 
+   Mode Settings: -+++
+   Set locally
+      A declaration of an unsharable object uses a sharing annotation.
+      
+misscase
+   switch on enum type missing case for some value
+   Category: controlflow
+   Mode Settings: -+++
+   Set locally
+      Not all values in an enumeration are present as cases in the switch.
+      
+modfilesys
+   report undocumented file system modifications (applies to unspecified
+   functions if modnomods is set)
+   Categories: modification, unconstrained
+   Mode Settings: ---+
+   Set locally
+   
+modglobs
+   undocumented modification of a checked global variable
+   Categories: globals, modification
+   Mode Settings: -+++
+   Set locally
+      A checked global variable is modified by the function, but not listed in
+      its modifies clause.
+      
+modglobsnomods
+   undocumented modification of a checked global variable in a function
+   declared with no modifies clause
+   Categories: globals, modification
+   Mode Settings: ---+
+   Set locally
+      A checked global variable is modified by the function, but not listed in
+      its modifies clause.
+      
+modglobsunchecked
+   undocumented modification of an unchecked checked global variable
+   Categories: globals, modification
+   Mode Settings: ---+
+   Set locally
+      An unchecked global variable is modified by the function, but not listed
+      in its modifies clause.
+      
+modinternalstrict
+   possible modification of internal storage through function call
+   Categories: modification, memory
+   Mode Settings: ---+
+   Set locally
+      A function that modifies internalState is called from a function that
+      does not list internalState in its modifies clause
+      
+modnomods
+   modification in a function with no modifies clause
+   Categories: modification, unconstrained
+   Mode Settings: ---+
+   Set locally
+      An externally-visible object is modified by a function with no
+      /*@modifies@*/ comment. The /*@modifies ... @*/ control comment can be
+      used to give a modifies list for an unspecified function.
+      
+modobserver
+   possible modification of observer storage
+   Categories: modification, memory
+   Default Setting: +
+   Set locally
+      Storage declared with observer is possibly modified. Observer storage may
+      not be modified.
+      
+modobserveruncon
+   possible modification of observer storage through unconstrained call
+   Categories: modification, memory
+   Mode Settings: ---+
+   Set locally
+      Storage declared with observer may be modified through a call to an
+      unconstrained function.
+      
+mods
+   unspecified modification of caller-visible state
+   Categories: modification, specifications
+   Default Setting: +
+   Set locally
+      An externally-visible object is modified by a function, but not listed in
+      its modifies clause.
+      
+modsimpnoglobs
+   functions declared with a modifies clause but no globals list are assumed to
+   use no globals
+   Categories: modification, globals
+   Mode Settings: ----
+   Set locally
+      An implicit empty globals list is assumed for a function declared with a
+      modifies clause but no globals list.
+      
+modstrictglobsnomods
+   undocumented modification of a strict checked global variable in a function
+   declared with no modifies clause
+   Categories: globals, modification
+   Mode Settings: ---+
+   Set locally
+      A checked global variable is modified by the function, but not listed in
+      its modifies clause.
+      
+moduncon
+   possible modification through a call to an unconstrained function
+   Categories: modification, unconstrained
+   Mode Settings: ---+
+   Set locally
+      An unconstrained function is called in a function body where
+      modifications are checked. Since the unconstrained function may modify
+      anything, there may be undetected modifications in the checked function.
+      
+modunconnomods
+   possible modification through a call to an unconstrained function in a
+   function with no modifies clause
+   Categories: modification, unconstrained
+   Mode Settings: ---+
+   Set locally
+      An unconstrained function is called in a function body where
+      modifications are checked. Since the unconstrained function may modify
+      anything, there may be undetected modifications in the checked function.
+      
+modunspec
+   modification in unspecified functions (sets modnomods, modglobunspec and
+   modstrictglobsunspec)
+   Categories: modification, unconstrained
+   Default Setting: -
+   Set locally
+   
+mts
+   load meta state declaration and corresponding xh file
+   Categories: extensible, files
+   Default Setting: -
+   Set globally only
+   Filename argument.  No default.
+   
+multithreaded
+   function is not reentrant
+   Categories: warnuse, security
+   Mode Settings: --++
+   Set locally
+      Non-reentrant function should not be used in multithreaded code.
+      
+mustdefine
+   out storage not defined before return or scope exit
+   Categories: memory, definition
+   Mode Settings: -+++
+   Set locally
+      An out parameter or global is not defined before control is transferred.
+      
+mustfree
+   fresh or only storage not released before return or scope exit (sets
+   mustfreefresh and mustfreeonly)
+   Categories: memory, leaks
+   Default Setting: -
+   Set locally
+      A memory leak has been detected.
+      
+mustfreefresh
+   freshly allocated storage not released before return or scope exit
+   Categories: memory, leaks
+   Mode Settings: -+++
+   Set locally
+      A memory leak has been detected. Storage allocated locally is not
+      released before the last reference to it is lost.
+      
+mustfreeonly
+   only storage not released before return or scope exit
+   Categories: memory, leaks
+   Mode Settings: -+++
+   Set locally
+      A memory leak has been detected. Only-qualified storage is not released
+      before the last reference to it is lost.
+      
+mustmod
+   specified modification is not detected
+   Categories: modification, specifications
+   Mode Settings: --++
+   Set locally
+      An object listed in the modifies clause is not modified by the
+      implementation of the function. The modification may not be detected if
+      it is done through a call to an unspecified function.
+      
+mustnotalias
+   temp storage aliased at return point or scope exit
+   Categories: aliasing, memory
+   Mode Settings: -+++
+   Set locally
+      An alias has been added to a temp-qualifier parameter or global that is
+      visible externally when the function returns. If the aliasing is needed,
+      use the /*@shared@*/ annotation to indicate that new aliases to the
+      parameter may be created.
+      
+mutrep
+   representation of mutable type has sharing semantics
+   Category: abstract
+   Mode Settings: -+++
+   Set locally
+      LCL semantics requires that a mutable type exhibits sharing semantics. In
+      order for objects to be shared a indirection is necessary in the
+      representation. A mutable type may be represented by a pointer or an
+      abstract mutable type. Handles into static data are fine, too, but will
+      generate this error message unless it is suppressed.
+      
+namechecks
+   controls name checking without changing other settings
+   Categories: names, abstract
+   Default Setting: +
+   Set locally
+   
+needspec
+   information in specifications is not also included in syntactic comments
+   Categories: initializations, specifications
+   Default Setting: -
+   Set locally
+      There is information in the specification that is not duplicated in
+      syntactic comments. Normally, this is not an error, but it may be useful
+      to detect it to make sure checking incomplete systems without the
+      specifications will still use this information.
+      
+nestcomment
+   comment begins inside comment
+   Categories: comments, 
+   Default Setting: +
+   Set locally
+      A comment open sequence (/*) appears within a comment.  This usually
+      means an earlier comment was not closed.
+      
+nestedextern
+   an extern declaration is inside a function scope
+   Category: declarations
+   Mode Settings: -+++
+   Set locally
+      An extern declaration is used inside a function scope.
+      
+neverinclude
+   optimize header inclusion to not include any header files
+   Categories: headers, performance
+   Default Setting: -
+   Set globally only
+      Ignore header includes. Only works if relevant information is loaded from
+      a library.
+      
+newdecl
+   report new global declarations in source files
+   Categories: declarations, libraries
+   Default Setting: -
+   Set locally
+      There is a new declaration that is not declared in a loaded library or
+      earlier file.  (Use this flag to check for consistency against a
+      library.)
+      
+newreftrans
+   new reference transfer to reference counted reference
+   Category: memory
+   Mode Settings: -+++
+   Set locally
+      A new reference is transferred to a reference counted reference.
+      
+nextlinemacros
+   the line after a constant or iter declaration must be a macro definition
+   Category: macros
+   Default Setting: +
+   Set locally
+      A constant or iter declaration is not immediately followed by a macro
+      definition.
+      
+noaccess
+   ignore access comments
+   Categories: syncomments, abstract
+   Default Setting: -
+   Set locally
+   
+nocomments
+   ignore all stylized comments
+   Categories: syncomments, suppress
+   Default Setting: -
+   Set locally
+   
+noeffect
+   statement with no effect
+   Categories: effect, controlflow
+   Mode Settings: -+++
+   Set locally
+      Statement has no visible effect --- no values are modified.
+      
+noeffectuncon
+   statement with no effect (except possibly through call to unconstrained
+   function)
+   Categories: effect, controlflow
+   Mode Settings: ---+
+   Set locally
+      Statement has no visible effect --- no values are modified. It may modify
+      something through a call to an unconstrained function.
+      
+nof
+   do not read options file
+   Categories: initializations, files
+   Default Setting: -
+   Set globally only
+      Do not read the default options file (~/.splintrc)
+      
+nolib
+   do not load standard library
+   Categories: libraries, initializations
+   Default Setting: -
+   Set globally only
+   
+noparams
+   function declaration has no parameter list
+   Categories: prototypes, ansi
+   Mode Settings: --++
+   Set locally
+      A function declaration does not have a parameter list.
+      
+nopp
+   do not pre-process input files
+   Category: debug
+   Default Setting: -
+   Set locally
+   
+noret
+   path with no return detected in non-void function
+   Category: controlflow
+   Mode Settings: -+++
+   Set locally
+      There is a path through a function declared to return a value on which
+      there is no return statement. This means the execution may fall through
+      without returning a meaningful result to the caller.
+      
+null
+   misuses of null pointer
+   Categories: null, memory
+   Default Setting: -
+   Set locally
+      A possibly null pointer is misused (sets nullderef, nullpass, nullref,
+      nullassign, and nullstate).
+      
+nullassign
+   inconsistent assignment or initialization involving null pointer
+   Categories: null, memory
+   Mode Settings: -+++
+   Set locally
+      A reference with no null annotation is assigned or initialized to NULL. 
+      Use /*@null@*/ to declare the reference as a possibly null pointer.
+      
+nullderef
+   possible dereferencce of null pointer
+   Categories: null, memory
+   Mode Settings: -+++
+   Set locally
+      A possibly null pointer is dereferenced.  Value is either the result of a
+      function which may return null (in which case, code should check it is
+      not null), or a global, parameter or structure field declared with the
+      null qualifier.
+      
+nullpass
+   possibly null pointer passed as formal with no null annotation
+   Categories: null, memory
+   Mode Settings: -+++
+   Set locally
+      A possibly null pointer is passed as a parameter corresponding to a
+      formal parameter with no /*@null@*/ annotation.  If NULL may be used for
+      this parameter, add a /*@null@*/ annotation to the function parameter
+      declaration.
+      
+nullptrarith
+   arithmetic involving possibly null pointer and integer
+   Categories: operations, pointers
+   Mode Settings: --++
+   Set locally
+      Pointer arithmetic using a possibly null pointer and integer.
+      
+nullret
+   possibly null pointer returned as result with no null annotation
+   Categories: null, memory
+   Mode Settings: -+++
+   Set locally
+      Function returns a possibly null pointer, but is not declared using
+      /*@null@*/ annotation of result.  If function may return NULL, add
+      /*@null@*/ annotation to the return value declaration.
+      
+nullstate
+   possibly null pointer reachable from a reference with no null annotation
+   Categories: null, memory
+   Mode Settings: -+++
+   Set locally
+      A possibly null pointer is reachable from a parameter or global variable
+      that is not declared using a /*@null@*/ annotation.
+      
+nullterminated
+   misuse of nullterminated allocation
+   Categories: memorybounds, memory
+   Mode Settings: ----
+   Set locally
+      A possibly non-nullterminated string/memory is used/referenced as a
+      nullterminated one.
+      
+nullterminated
+   misuse of nullterminated allocation
+   Categories: memorybounds, memory
+   Mode Settings: ----
+   Set locally
+      A possibly non-nullterminated string/memory is used/referenced as a
+      nullterminated one.
+      
+numenummembers
+   set maximum number of members of an enum (ANSI89 minimum is 127;
+   ISO99 is 1023)
+   Categories: limits, ansi
+   Mode Settings: ---+
+   Set locally
+   Numeric Argument.  Default: 1023
+      Limit on maximum number of members of an enum is exceeded.
+      
+numliteral
+   int literals can be reals
+   Categories: typeequivalence, numbers
+   Mode Settings: ++--
+   Set locally
+      An int literal is used as any numeric type (including float and long
+      long). Use +numliteral to allow int literals to be used as any numeric
+      type.
+      
+numstructfields
+   set maximum number of fields in a struct or union (ANSI89 minimum is 127;
+   ISO99 is 1023)
+   Categories: limits, ansi
+   Mode Settings: ---+
+   Set locally
+   Numeric Argument.  Default: 1023
+      Maximum number of fields in a struct or union exceeded.
+      
+observertrans
+   observer transfer errors
+   Category: memory
+   Mode Settings: -+++
+   Set locally
+      Observer storage is transferred to a non-observer reference.
+      
+obviousloopexec
+   assume loop that can be determined to always execute always does
+   Categories: controlflow, memory
+   Default Setting: +
+   Set locally
+   
+oldstyle
+   old style function definition
+   Categories: prototypes, ansi
+   Mode Settings: ---+
+   Set locally
+      Function definition is in old style syntax. Standard prototype syntax is
+      preferred.
+      
+onlytrans
+   only storage transferred to non-only reference (memory leak)
+   Category: memory
+   Mode Settings: -+++
+   Set locally
+      The only reference to this storage is transferred to another reference
+      (e.g., by returning it) that does not have the only annotation. This may
+      lead to a memory leak, since the new reference is not necessarily
+      released.
+      
+onlyunqglobaltrans
+   only storage transferred to an unqualified global or static reference
+   (memory leak)
+   Category: memory
+   Mode Settings: --++
+   Set locally
+      The only reference to this storage is transferred to another reference
+      that does not have an aliasing annotation. This may lead to a memory
+      leak, since the new reference is not necessarily released.
+      
+orconstraint
+   use limited OR expressions to resolve constraints
+   Categories: memorybounds, memory
+   Mode Settings: ----
+   Set locally
+   
+overload
+   library function overloaded
+   Categories: declarations, libraries
+   Mode Settings: ----
+   Set locally
+      A function, variable or constant defined in the library is redefined with
+      a different type.
+      
+ownedtrans
+   owned storage transferred to non-owned reference (memory leak)
+   Category: memory
+   Mode Settings: -+++
+   Set locally
+      The owned reference to this storage is transferred to another reference
+      (e.g., by returning it) that does not have the owned annotation. This may
+      lead to a memory leak, since the new reference is not necessarily
+      released.
+      
+paramimptemp
+   assume unannotated parameter is temp
+   Categories: memory, implicit
+   Default Setting: +
+   Set locally
+   
+paramuse
+   function parameter not used 
+   Categories: alluse, parameters
+   Mode Settings: -+++
+   Set locally
+      A function parameter is not used in the body of the function. If the
+      argument is needed for type compatibility or future plans, use
+      /*@unused@*/ in the argument declaration.
+      
+parenfileformat
+   show column number where error is found
+   Categories: format, display
+   Default Setting: -
+   Set locally
+   
+partial
+   check as partial system (-specundef, -declundef, -exportlocal, don't check
+   macros in headers without corresponding .c files)
+   Categories: <No Category>, alluse
+   Default Setting: -
+   Set locally
+   
+passunknown
+   passing a value as an un-annotated parameter clears its annotation
+   Categories: memory, parameters
+   Mode Settings: ----
+   Set locally
+   
+portability
+   function may have undefined behavior
+   Categories: warnuse, security
+   Mode Settings: --++
+   Set locally
+      Use of function that may have implementation-dependent behavior.
+      
+posixlib
+   use POSIX standard library
+   Categories: libraries, initializations
+   Default Setting: -
+   Set globally only
+      POSIX version of the standard library is used.
+      
+posixstrictlib
+   use strict POSIX standard library
+   Categories: libraries, initializations
+   Default Setting: -
+   Set globally only
+      POSIX version of the strict standard library is used.
+      
+predassign
+   condition test (if, while or for) is an assignment
+   Categories: booleans, predicates
+   Default Setting: +
+   Set locally
+      The condition test is an assignment expression. Probably, you mean to use
+      == instead of =. If an assignment is intended, add an extra parentheses
+      nesting (e.g., if ((a = b)) ...) to suppress this message.
+      
+predbool
+   type of condition test (if, while or for) not bool (sets predboolint,
+   predboolptr and predboolothers)
+   Categories: booleans, predicates
+   Default Setting: -
+   Set locally
+      Test expression type is not boolean.
+      
+predboolint
+   type of condition test (if, while or for) is an integral type
+   Categories: predicates, booleans
+   Mode Settings: -+++
+   Set locally
+      Test expression type is not boolean or int.
+      
+predboolothers
+   type of condition test (if, while or for) not bool, int or pointer
+   Categories: booleans, predicates
+   Mode Settings: ++++
+   Set locally
+      Test expression type is not boolean.
+      
+predboolptr
+   type of condition test (if, while or for) is a pointer
+   Categories: booleans, predicates
+   Mode Settings: --++
+   Set locally
+      Test expression type is not boolean.
+      
+preproc
+   preprocessing error
+   Categories: , preproc
+   Default Setting: +
+   Set locally
+   
+protoparammatch
+   the name of a parameter in a function prototype and corresponding
+   declaration must match (after removing the protoparamprefix
+   Categories: names, prefixes
+   Mode Settings: --++
+   Set locally
+      A parameter in a function definition does not have the same name as the
+      corresponding in the declaration of the function after removing the
+      protoparamprefix
+      
+protoparamname
+   a parameter in a function prototype has a name
+   Categories: names, prefixes
+   Mode Settings: ---+
+   Set locally
+      A parameter in a function prototype has a name.  This is dangerous, since
+      a macro definition could be visible here.
+      
+protoparamprefix
+   set namespace prefix for parameters in function prototype declarations
+   Categories: names, prefixes
+   Default Setting: -
+   Set locally
+   String argument.  No default.
+      A parameter name in a function prototype declaration does not start with
+      the declaration parameter prefix
+      
+protoparamprefixexclude
+   the protoparamprefix may not be used for non-declaraction parameter
+   identifiers
+   Categories: names, prefixes
+   Default Setting: -
+   Set locally
+      An identifier that is not a parameter name in a function prototype starts
+      with the protoparamprefix.
+      
+ptrarith
+   arithmetic involving pointer and integer
+   Categories: operations, pointers
+   Mode Settings: ---+
+   Set locally
+      Pointer arithmetic using pointer and integer.
+      
+ptrcompare
+   comparison between pointer and number
+   Categories: operations, pointers
+   Mode Settings: -+++
+   Set locally
+      A pointer is compared to a number.
+      
+ptrnegate
+   allow ! to be used on pointer operand
+   Categories: booleans, pointers
+   Mode Settings: ++--
+   Set locally
+      The operand of ! operator is a pointer.
+      
+quiet
+   suppress herald and error count
+   Categories: display, errors
+   Default Setting: -
+   Set locally
+   
+readonlystrings
+   string literals are read-only (error if one is modified or released)
+   Category: memory
+   Mode Settings: -+++
+   Set locally
+      String literals are read-only. An error is reported if a string literal
+      may be modified or released.
+      
+readonlytrans
+   report memory transfer errors for initializations to read-only string
+   literals
+   Category: memory
+   Mode Settings: --++
+   Set locally
+      A read-only string literal is assigned to a non-observer reference.
+      
+realcompare
+   dangerous comparison between reals (dangerous because of inexact floating
+   point representations)
+   Category: operations
+   Mode Settings: -+++
+   Set locally
+      Two real (float, double, or long double) values are compared directly
+      using a C primitive. This may produce unexpected results since floating
+      point representations are inexact. Instead, compare the difference to
+      FLT_EPSILON or DBL_EPSILON.
+      
+redecl
+   function or variable redeclared
+   Category: declarations
+   Mode Settings: --++
+   Set locally
+      A function or variable is declared in more than one place. This is not
+      necessarily a problem, since the declarations are consistent.
+      
+redef
+   function or variable redefined
+   Category: declarations
+   Default Setting: +
+   Set locally
+      A function or variable is redefined. One of the declarations should use
+      extern.
+      
+redundantconstraints
+   display seemingly redundant constraints
+   Categories: memorybounds, display
+   Mode Settings: ----
+   Set locally
+      Display seemingly redundant constraints
+      
+redundantsharequal
+   declaration uses observer qualifier that is always true
+   Categories: declarations, 
+   Mode Settings: --++
+   Set locally
+      A declaration of an immutable object uses a redundant observer qualifier.
+      
+refcounttrans
+   reference counted storage is transferred in an inconsistent way
+   Category: memory
+   Mode Settings: -+++
+   Set locally
+      Reference counted storage is transferred in a way that may not be
+      consistent with the reference count.
+      
+relaxquals
+   report qualifier mismatches only if dangerous
+   Categories: typeequivalence, numbers
+   Mode Settings: ++--
+   Set locally
+      To allow qualifier mismatches that are not dangerous, use +relaxquals.
+      
+relaxtypes
+   allow all numeric types to match
+   Categories: typeequivalence, numbers
+   Mode Settings: ----
+   Set locally
+      To allow all numeric types to match, use +relaxtypes.
+      
+repeatunrecog
+   do not suppress repeated unrecognized identifier messages (instead of only
+   reporting the first error)
+   Categories: unrecognized, display
+   Default Setting: -
+   Set locally
+      Identifier used in code has not been declared. (Message repeated for
+      future uses in this file.)
+      
+repexpose
+   abstract representation is exposed (sets assignexpose, retexpose, and
+   castexpose)
+   Categories: exposure, abstract
+   Default Setting: -
+   Set locally
+      The internal representation of an abstract type is visible to the caller.
+      This means clients may have access to a pointer into the abstract
+      representation.
+      
+retalias
+   function returns alias to parameter or global
+   Category: aliasing
+   Mode Settings: --++
+   Set locally
+      The returned value shares storage with a parameter or global. If a
+      parameter is to be returned, use the returned qualifier. If the result is
+      not modified, use the observer qualifier on the result type. Otherwise,
+      exposed can be used, but limited checking is done.
+      
+retexpose
+   abstract representation is exposed (return values only)
+   Categories: exposure, abstract
+   Mode Settings: --++
+   Set locally
+      The return value shares storage with an instance of an abstract type.
+      This means clients may have access to a pointer into the abstract
+      representation. Use the observer qualifier to return exposed storage that
+      may not be modified by the client. Use the exposed qualifier to return
+      modifiable (but not deallocatable) exposed storage (dangerous).
+      
+retimponly
+   assume unannotated returned storage is only
+   Categories: memory, implicit
+   Default Setting: +
+   Set locally
+   
+retval
+   return value ignored (sets retvalint, retvalbool and retvalother)
+   Category: returnvals
+   Default Setting: -
+   Set locally
+      Result returned by function call is not used. If this is intended, cast
+      result to (void) to eliminate message.
+      
+retvalbool
+   return value of manifest type bool ignored
+   Categories: returnvals, booleans
+   Mode Settings: -+++
+   Set locally
+      Result returned by function call is not used. If this is intended, can
+      cast result to (void) to eliminate message.
+      
+retvalint
+   return value of type int ignored
+   Category: returnvals
+   Mode Settings: -+++
+   Set locally
+      Result returned by function call is not used. If this is intended, can
+      cast result to (void) to eliminate message.
+      
+retvalother
+   return value of type other than bool or int ignored
+   Categories: returnvals, booleans
+   Mode Settings: ++++
+   Set locally
+      Result returned by function call is not used. If this is intended, can
+      cast result to (void) to eliminate message.
+      
+sefparams
+   a parameter with side-effects is passed as a sef parameter
+   Categories: macros, parameters
+   Mode Settings: -+++
+   Set locally
+      An actual parameter corresponding to a sef parameter may have a
+      side-effect.
+      
+sefuncon
+   a parameter with unconstrained side-effects is passed as a sef parameter
+   Categories: macros, parameters
+   Mode Settings: --++
+   Set locally
+      An actual parameter corresponding to a sef parameter involves a call to a
+      procedure with no modifies clause that may have a side-effect.
+      
+shadow
+   declaration reuses name visible in outer scope
+   Category: declarations
+   Mode Settings: -+++
+   Set locally
+      An outer declaration is shadowed by the local declaration.
+      
+sharedtrans
+   shared storage transferred to non-shared reference
+   Category: memory
+   Mode Settings: -+++
+   Set locally
+      Shared storage is transferred to a non-shared reference. The other
+      reference may release storage needed by this reference.
+      
+shiftimplementation
+   a shift left operand may be negative
+   Categories: operations, 
+   Mode Settings: -+++
+   Set locally
+      The left operand to a shift operator may be negative (behavior is
+      implementation-defined).
+      
+shiftnegative
+   a shift right operand may be negative
+   Categories: operations, 
+   Mode Settings: -+++
+   Set locally
+      The right operand to a shift operator may be negative (behavior
+      undefined).
+      
+showallconjs
+   show all possible types
+   Category: format
+   Default Setting: -
+   Set locally
+      When a library function is declared with multiple possible type, the
+      alternate types are shown only if +showallconjs.
+      
+showalluses
+   show sorted list of uses of all globals
+   Categories: display, alluse
+   Default Setting: -
+   Set globally only
+   
+showcolumn
+   show column number where error is found
+   Categories: format, display
+   Default Setting: +
+   Set locally
+   
+showconstraintlocation
+   display location for every constraint generated
+   Categories: memorybounds, display
+   Mode Settings: ----
+   Set locally
+   
+showconstraintparens
+   display parentheses around constraint terms
+   Categories: memorybounds, display
+   Mode Settings: ----
+   Set locally
+   
+showfunc
+   show name of function containing error
+   Category: format
+   Default Setting: +
+   Set locally
+   
+showscan
+   show file names are they are processed
+   Categories: display, files
+   Default Setting: -
+   Set locally
+   
+showsourceloc
+   display the source code location where a warning is produced
+   Category: debug
+   Default Setting: -
+   Set locally
+   
+showsummary
+   show summary of all errors reported and suppressed
+   Categories: display, errors
+   Default Setting: -
+   Set locally
+   
+singleinclude
+   optimize header inclusion to eliminate redundant includes
+   Categories: headers, performance
+   Default Setting: -
+   Set globally only
+      When checking multiple files, each header file is processed only once.
+      This may change the meaning of the code, if the same header file is
+      included in different contexts (e.g., the header file includes #if
+      directives and the values are different when it is included in different
+      places.)
+      
+sizeofformalarray
+   sizeof operator has an array formal parameter argument
+   Categories: operations, 
+   Default Setting: +
+   Set locally
+      Operand of a sizeof operator is a function parameter declared as an
+      array.  The value of sizeof will be the size of a pointer to the element
+      type, not the number of elements in the array.
+      
+sizeoftype
+   sizeof operator has a type argument
+   Categories: operations, 
+   Mode Settings: ---+
+   Set locally
+      Operand of sizeof operator is a type. (Safer to use expression, int *x =
+      sizeof (*x); instead of sizeof (int).)
+      
+skipansiheaders
+   prevent inclusion of header files in a system directory with names that
+   match standard ANSI headers. The symbolic information in the standard
+   library is used instead.  Flag in effect only if a library including the
+   ANSI library is loaded.  The ANSI headers are:
+   assert, ctype, errno, float, limits, locale, math, setjmp, signal, stdarg,
+   stddef, stdio, stdlib, strings, string, time, and wchar.
+   Categories: directories, files
+   Default Setting: +
+   Set locally
+   
+skipposixheaders
+   prevent inclusion of header files in a system directory with names that
+   match standard POSIX headers. The symbolic information in the posix library
+   is used instead.  The POSIX headers are:
+   dirent, fcntl, grp, pwd, termios, sys/stat, sys/times, sys/types,
+   sys/utsname, sys/wait, unistd, and utime.
+   Categories: directories, files
+   Default Setting: +
+   Set locally
+   
+skipsysheaders
+   do not include header files in system directories (set by -sysdirs)
+   Categories: headers, performance
+   Default Setting: -
+   Set globally only
+      Do not include header files in system directories (set by -sysdirs)
+      
+slashslashcomment
+   use of // comment
+   Categories: comments, 
+   Default Setting: -
+   Set locally
+      A // comment is used.  ISO C99 allows // comments, but earlier standards
+      did not.
+      
+slovak
+   slovak naming convention violated
+   Categories: names, abstract
+   Default Setting: -
+   Set locally
+      Name is not consistent with Slovak naming convention.
+      
+slovakconsts
+   slovak naming convention violated in a constant declaration
+   Categories: names, abstract
+   Default Setting: -
+   Set locally
+      Constant name is not consistent with Slovak naming convention.
+      
+slovakfcns
+   slovak naming convention violated in a function or iterator declaration
+   Categories: names, abstract
+   Default Setting: -
+   Set locally
+      Function or iterator name is not consistent with Slovak naming
+      convention.
+      
+slovakmacros
+   slovak naming convention violated in an expanded macro name
+   Categories: names, abstract
+   Default Setting: -
+   Set locally
+      Expanded macro name is not consistent with Slovak naming convention.
+      
+slovaktypes
+   slovak naming convention violated in a use-defined type definition
+   Categories: names, abstract
+   Default Setting: -
+   Set locally
+      Type name is not consistent with Slovak naming convention. Slovak type
+      names may not include uppercase letters.
+      
+slovakvars
+   slovak naming convention violated in a variable declaration
+   Categories: names, abstract
+   Default Setting: -
+   Set locally
+      Variable name is not consistent with Slovak naming convention.
+      
+specglobimponly
+   assume unannotated global storage is only
+   Categories: memory, implicit
+   Default Setting: -
+   Set locally
+   
+specimponly
+   sets specglobimponly, specretimponly and specstructimponly
+   Categories: memory, implicit
+   Default Setting: -
+   Set locally
+   
+specmacros
+   check all macros corresponding to specified functions or constants
+   Category: macros
+   Default Setting: +
+   Set locally
+      Every macro declared a specification file is checked.
+      
+specretimponly
+   assume unannotated returned storage is only
+   Categories: memory, implicit
+   Default Setting: -
+   Set locally
+   
+specstructimponly
+   assume unannotated structure field is only
+   Categories: memory, implicit
+   Default Setting: -
+   Set locally
+   
+specundecl
+   function or variable specified but never declared in a source file
+   Categories: complete, specifications
+   Default Setting: -
+   Set locally
+      A function or variable is declared in an .lcl file, but not declared in
+      any source code file.
+      
+specundef
+   function or variable specified but never defined
+   Categories: complete, specifications
+   Mode Settings: -+++
+   Set locally
+      A function or variable is declared in an .lcl file, but not defined in
+      any source code file.
+      
+stackref
+   external reference to stack-allocated storage is created
+   Categories: memory, released
+   Mode Settings: ++++
+   Set locally
+      A stack reference is pointed to by an external reference when the
+      function returns. The stack-allocated storage is destroyed after the
+      call, leaving a dangling reference.
+      
+statemerge
+   control paths merge with storage in incompatible states
+   Categories: extensible, memory
+   Mode Settings: ++++
+   Set locally
+      Control path merge violates user-defined state merge rules.
+      
+statetransfer
+   storage has been transfered with invalid state
+   Categories: extensible, memory
+   Mode Settings: ++++
+   Set locally
+      Transfer violates user-defined state rules.
+      
+staticinittrans
+   static storage is used as an initial value in an inconsistent way
+   Category: memory
+   Mode Settings: --++
+   Set locally
+      Static storage is used as an initial value in an inconsistent way.
+      
+statictrans
+   static storage is transferred in an inconsistent way
+   Category: memory
+   Mode Settings: -+++
+   Set locally
+      Static storage is transferred in an inconsistent way.
+      
+stats
+   display lines processed and time
+   Category: display
+   Default Setting: -
+   Set globally only
+   
+strictbranchstate
+   storage through array fetch has inconsistent states of alternate paths
+   through a branch
+   Category: memory
+   Mode Settings: ---+
+   Set locally
+      The state of a variable through an array fetch is different depending on
+      which branch is taken. This means no annotation can sensibly be applied
+      to the storage.
+      
+strictdestroy
+   report complete destruction errors for array elements that may have been
+   released
+   Categories: memory, leaks
+   Mode Settings: ---+
+   Set locally
+   
+strictlib
+   interpret standard library strictly
+   Categories: libraries, initializations
+   Default Setting: -
+   Set globally only
+      Stricter version of the standard library is used. (The default library is
+      standard.lcd;  strict library is strict.lcd.)
+      
+strictops
+   primitive operation does not type check strictly
+   Categories: operations, 
+   Mode Settings: ---+
+   Set locally
+      A primitive operation does not type check strictly.
+      
+strictusereleased
+   element used after it may have been released
+   Categories: memory, released
+   Mode Settings: ---+
+   Set locally
+      Memory (through fetch) is used after it may have been released (either by
+      passing as an only param or assigning to an only global).
+      
+stringliterallen
+   set maximum length of string literals (ANSI89 minimum is 509; ISO99 is 4095)
+   Categories: limits, ansi
+   Mode Settings: ---+
+   Set locally
+   Numeric Argument.  Default: 4095
+      Maximum length of string literal exceeded.
+      
+stringliteralnoroom
+   string literal leaves no room for null terminator
+   Mode Settings: -+++
+   Set locally
+      A string literal is assigned to a char array that is not big enough to
+      hold the null terminator.
+      
+stringliteralsmaller
+   string literal is smaller than the char array it is assigned to
+   Mode Settings: --++
+   Set locally
+      A string literal is assigned to a char array that smaller than the string
+      literal needs.
+      
+stringliteraltoolong
+   string literal too long for character array
+   Default Setting: +
+   Set locally
+      A string literal is assigned to a char array too small to hold it.
+      
+structimponly
+   assume unannotated structure field is only
+   Categories: memory, implicit
+   Default Setting: +
+   Set locally
+   
+supcounts
+   The number of errors detected does not match number in /*@i<n>@*/.
+   Categories: suppress, comments
+   Default Setting: +
+   Set globally only
+   
+superuser
+   function is restricted to superusers
+   Categories: warnuse, security
+   Mode Settings: --++
+   Set locally
+      Call to function restricted to superusers.
+      
+switchloopbreak
+   break in loop inside switch
+   Category: controlflow
+   Mode Settings: --++
+   Set locally
+      A break statement appears inside the body of a while or for statement
+      within a switch. This is perfectly reasonable code, but check that the
+      break is intended to break only the inner loop. The break statement may
+      be preceded by /*@loopbreak@*/ to suppress the message for this break
+      only.
+      
+switchswitchbreak
+   break in switch inside switch
+   Category: controlflow
+   Mode Settings: ---+
+   Set locally
+      A break statement appears inside a switch statement within another switch
+      statement. This is perfectly reasonable code, but check that the break is
+      intended to break only the inner switch. The break statement may be
+      preceded by /*@innerbreak@*/ to suppress the message for this break only.
+      
+syntax
+   syntax error in parsing
+   Default Setting: +
+   Set locally
+      Code cannot be parsed.  For help on parse errors, see splint -help
+      parseerrors.
+      
+sysdirerrors
+   report errors in files in system directories (set by -sysdirs)
+   Categories: directories, suppress
+   Mode Settings: ---+
+   Set locally
+   
+sysdirexpandmacros
+   expand macros in system directories regardless of other settings, except for
+   macros corresponding to names defined in a load library
+   Categories: directories, macros
+   Default Setting: +
+   Set locally
+   
+sysdirs
+   set directories for system files (default /usr/include). Separate
+   directories with path separator (colons in Unix, semi-colons in Windows).
+   Flag settings propagate to files in a system directory. If -sysdirerrors is
+   set, no errors are reported for files in system directories.
+   Categories: directories, files
+   Default Setting: -
+   Set globally only
+   Path argument.  Default: /usr/
+   
+sysunrecog
+   report unrecognized identifiers with system (__) prefix
+   Categories: unrecognized, display
+   Default Setting: +
+   Set locally
+      Identifier used in code has not been declared. (Message repeated for
+      future uses in this file.)  Use +gnuextensions to make Splint recognize
+      some keywords that are gnu extensions.
+      
+tagprefix
+   set namespace prefix for struct, union and enum tags
+   Categories: names, prefixes
+   Default Setting: -
+   Set locally
+   String argument.  No default.
+      A tag identifier does not start with the tagprefix.
+      
+tagprefixexclude
+   the tagprefix may not be used for non-tag identifiers
+   Categories: names, prefixes
+   Default Setting: -
+   Set locally
+      An identifier that is not a tag starts with the tagprefix.
+      
+temptrans
+   temp storage transferred to non-temporary reference
+   Category: memory
+   Mode Settings: -+++
+   Set locally
+      Temp storage (associated with a formal parameter) is transferred to a
+      non-temporary reference. The storage may be released or new aliases
+      created.
+      
+timedist
+   display time distribution
+   Category: display
+   Default Setting: -
+   Set globally only
+   
+tmpcomments
+   interpret t comments (ignore errors in lines marked with /*@t<n>@*/
+   Categories: syncomments, suppress
+   Mode Settings: ----
+   Set locally
+   
+tmpdir
+   set directory for writing temp files
+   Categories: directories, files
+   Default Setting: -
+   Set globally only
+   Directory argument.  Default: /tmp/
+   
+toctou
+   possible time of check, time of use vulnerability
+   Categories: warnuse, security
+   Mode Settings: ---+
+   Set locally
+      Possible time of check, time of use vulnerability.
+      
+topuse
+   declaration at top level not used
+   Categories: alluse, complete
+   Mode Settings: ---+
+   Set locally
+      An external declaration not used in any source file.
+      
+trytorecover
+   try to recover from parse error
+   Default Setting: -
+   Set locally
+      Try to recover from parse error.  It really means try - this doesn't
+      usually work.
+      
+type
+   type mismatch
+   Default Setting: +
+   Set locally
+      Types are incompatible.
+      
+typeprefix
+   set namespace prefix for user-defined types
+   Categories: names, prefixes
+   Default Setting: -
+   Set locally
+   String argument.  No default.
+      A user-defined type does not start with the typeprefix
+      
+typeprefixexclude
+   the typeprefix may not be used for identifiers that are not type names
+   Categories: names, prefixes
+   Default Setting: -
+   Set locally
+      An identifier that is not a type name starts with the typeprefix.
+      
+typeuse
+   type declared but not used
+   Categories: alluse, 
+   Mode Settings: ++++
+   Set locally
+      A type is declared but not used. Use /*@unused@*/ in front of typedef to
+      suppress messages.
+      
+uncheckedglobalias
+   function returns with an unchecked global aliasing external state
+   Categories: aliasing, globals
+   Mode Settings: --++
+   Set locally
+      A global variable aliases externally-visible state when the function
+      returns.
+      
+uncheckedmacroprefix
+   set namespace prefix for unchecked macros
+   Categories: names, prefixes
+   Default Setting: -
+   Set locally
+   String argument.  No default.
+      An unchecked macro name does not start with the uncheckedmacroprefix
+      
+uncheckedmacroprefixexclude
+   the uncheckmacroprefix may not be used for identifiers that are not
+   unchecked macros
+   Categories: names, prefixes
+   Default Setting: -
+   Set locally
+      An identifier that is not the name of an unchecked macro starts with the
+      uncheckedmacroprefix.
+      
+uniondef
+   at least one field of a union must be defined
+   Categories: memory, definition
+   Mode Settings: -+++
+   Set locally
+      No field of a union is defined. Generally, one field of a union is
+      expected to be defined.
+      
+unixlib
+   use UNIX (sort-of) standard library
+   Categories: libraries, initializations
+   Default Setting: -
+   Set globally only
+      UNIX version of the standard library is used.
+      
+unixstandard
+   function is not required in Standard UNIX Specification
+   Categories: warnuse, security
+   Mode Settings: ----
+   Set locally
+      Use of function that need not be provided by UNIX implementations
+      
+unixstrictlib
+   use strict version of UNIX (sort-of) library
+   Categories: libraries, initializations
+   Default Setting: -
+   Set globally only
+      strict version of the UNIX library is used.
+      
+unqualifiedinittrans
+   unqualified storage is used as an initial value in an inconsistent way
+   Category: memory
+   Mode Settings: --++
+   Set locally
+      Unqualified storage is used as an initial value in an inconsistent way.
+      
+unqualifiedtrans
+   unqualified storage is transferred in an inconsistent way
+   Category: memory
+   Mode Settings: -+++
+   Set locally
+      Unqualified storage is transferred in an inconsistent way.
+      
+unreachable
+   unreachable code detected
+   Category: controlflow
+   Mode Settings: -+++
+   Set locally
+      This code will never be reached on any possible execution.
+      
+unrecog
+   unrecognized identifier
+   Category: unrecognized
+   Default Setting: +
+   Set locally
+      Identifier used in code has not been declared.
+      
+unrecogcomments
+   stylized comment is unrecognized
+   Categories: syncomments, 
+   Default Setting: +
+   Set locally
+      Word after a stylized comment marker does not correspond to a stylized
+      comment.
+      
+unrecogdirective
+   unrecognized pre-processor directive
+   Categories: preproc, 
+   Default Setting: +
+   Set locally
+      Pre-processor directive is not recognized.
+      
+unrecogflagcomments
+   stylized flag comment uses an unrecognized flag
+   Categories: syncomments, 
+   Default Setting: +
+   Set locally
+      Semantic comment attempts to set a flag that is not recognized.
+      
+unsignedcompare
+   comparison using <, <=, >= between an unsigned integral and zero constant
+   Category: operations
+   Mode Settings: -+++
+   Set locally
+      An unsigned value is used in a comparison with zero in a way that is
+      either a bug or confusing.
+      
+unusedspecial
+   unused declaration in special file (corresponding to .l or .y file)
+   Categories: alluse, complete
+   Mode Settings: ---+
+   Set locally
+   
+usedef
+   use before definition
+   Category: definition
+   Mode Settings: -+++
+   Set locally
+      An rvalue is used that may not be initialized to a value on some
+      execution path.
+      
+usereleased
+   storage used after release
+   Categories: memory, released
+   Mode Settings: -+++
+   Set locally
+      Memory is used after it has been released (either by passing as an only
+      param or assigning to an only global).
+      
+usestderr
+   send error messages to standard error (instead of standard out)
+   Categories: display, errors
+   Default Setting: -
+   Set locally
+   
+usevarargs
+   non-standard <varargs.h> included
+   Categories: libraries, ansi
+   Default Setting: +
+   Set locally
+      Header <varargs.h> is not part of ANSI Standard. Should use <stdarg.h>
+      instead.
+      
+varuse
+   variable declared but not used
+   Category: alluse
+   Mode Settings: ++++
+   Set locally
+      A variable is declared but never used. Use /*@unused@*/ in front of
+      declaration to suppress message.
+      
+voidabstract
+   void * matches pointers to abstract types, casting ok (dangerous)
+   Categories: typeequivalence, abstract
+   Mode Settings: +---
+   Set locally
+      A pointer to void is cast to a pointer to an abstract type (or vice
+      versa).
+      
+warnflags
+   warn when command line sets flag in abnormal way
+   Category: help
+   Default Setting: +
+   Set locally
+      Command line sets flag in abnormal way
+      
+warnlintcomments
+   warn when a traditional lint comment is used
+   Categories: syncomments, suppress
+   Mode Settings: -+++
+   Set locally
+      A traditional lint comment is used. Some traditional lint comments are
+      interpreted by Splint to enable easier checking of legacy code. It is
+      preferable to replace these comments with the suggested Splint
+      alternative.
+      
+warnmissingglobs
+   global variable used in modifies clause is not listed in globals list
+   Categories: globals, modification
+   Mode Settings: ---+
+   Set locally
+      A global variable is used in the modifies clause, but it not listed in
+      the globals list.  The variable will be added to the globals list.
+      
+warnmissingglobsnoglobs
+   global variable used in modifies clause in a function with no globals list
+   Categories: globals, modification
+   Mode Settings: ---+
+   Set locally
+      A global variable is used in the modifies clause, but the function has no
+      globals list.  The variable will be added to the globals list.
+      
+warnposixheaders
+   a POSIX header is included, but the POSIX library is not used
+   Categories: libraries, ansi
+   Default Setting: +
+   Set locally
+      Header name matches a POSIX header, but the POSIX library is not
+      selected.
+      
+warnrc
+   warn when there are problems with reading the initialization files
+   Category: help
+   Default Setting: +
+   Set locally
+      There was a problem reading an initialization file
+      
+warnunixlib
+   warn when the unix library is used
+   Categories: libraries, ansi
+   Default Setting: +
+   Set locally
+      Unix library may not be compatible with all platforms
+      
+warnuse
+   warn when declaration marked with warn is used
+   Category: warnuse
+   Default Setting: +
+   Set locally
+      Declaration marked with warn clause is used (can be suppresed by more
+      specific flags).
+      
+whichlib
+   show standard library filename
+   Categories: libraries, initializations
+   Default Setting: -
+   Set globally only
+   
+whileblock
+   the body of a while statement is not a block
+   Category: controlflow
+   Mode Settings: ---+
+   Set locally
+      While body is a single statement, not a compound block.
+      
+whileempty
+   a while statement has no body
+   Category: controlflow
+   Mode Settings: --++
+   Set locally
+      While statement has no body.
+      
+whileloopexec
+   assume all while loops execute at least once
+   Categories: controlflow, memory
+   Default Setting: -
+   Set locally
+   
+zerobool
+   treat 0 as a boolean
+   Categories: typeequivalence, booleans
+   Mode Settings: ++--
+   Set locally
+   
+zeroptr
+   tread 0 as a pointer
+   Categories: typeequivalence, pointers
+   Default Setting: +
+   Set locally
+   
+
+
+
+null
+===================================
+null: <S><P:->
+   A possibly null pointer is misused (sets nullderef, nullpass, nullref,
+   nullassign, and nullstate).
+nullderef: <M:-+++>
+   A possibly null pointer is dereferenced.  Value is either the result of a
+   function which may return null (in which case, code should check it is not
+   null), or a global, parameter or structure field declared with the null
+   qualifier.
+nullpass: <M:-+++>
+   A possibly null pointer is passed as a parameter corresponding to a formal
+   parameter with no /*@null@*/ annotation.  If NULL may be used for this
+   parameter, add a /*@null@*/ annotation to the function parameter
+   declaration.
+nullret: <M:-+++>
+   Function returns a possibly null pointer, but is not declared using
+   /*@null@*/ annotation of result.  If function may return NULL, add
+   /*@null@*/ annotation to the return value declaration.
+nullstate: <M:-+++>
+   A possibly null pointer is reachable from a parameter or global variable
+   that is not declared using a /*@null@*/ annotation.
+nullassign: <M:-+++>
+   A reference with no null annotation is assigned or initialized to NULL.  Use
+   /*@null@*/ to declare the reference as a possibly null pointer.
+
+definition
+===================================
+usedef: <M:-+++>
+   An rvalue is used that may not be initialized to a value on some execution
+   path.
+
+memory
+===================================
+mustdefine: <M:-+++>
+   An out parameter or global is not defined before control is transferred.
+uniondef: <M:-+++>
+   No field of a union is defined. Generally, one field of a union is expected
+   to be defined.
+compdef: <M:-+++>
+   Storage derivable from a parameter, return value or global is not defined.
+   Use /*@out@*/ to denote passed or returned storage which need not be
+   defined.
+
+definition
+===================================
+fullinitblock: <P:+>
+   Initializer does not set every field in the structure.
+initallelements: <P:+>
+   Initializer does not define all elements of a declared array.
+initsize: <P:+>
+   Initializer block contains more elements than the size of a declared array.
+impouts: <M:---->
+   Pointer parameters to unspecified functions may be implicit out parameters.
+
+declarations
+===================================
+incondefs: <M:-+++>
+   A function, variable or constant is redefined with a different type.
+matchfields: <M:-+++>
+   A struct, union or enum type is redefined with inconsistent fields or
+   members.
+
+
+===================================
+fcnderef: <M:--++>
+   A function type is dereferenced.  The ANSI standard allows this because of
+   implicit conversion of function designators, however the dereference is
+   unnecessary.
+
+operations
+===================================
+realcompare: <M:-+++>
+   Two real (float, double, or long double) values are compared directly using
+   a C primitive. This may produce unexpected results since floating point
+   representations are inexact. Instead, compare the difference to FLT_EPSILON
+   or DBL_EPSILON.
+unsignedcompare: <M:-+++>
+   An unsigned value is used in a comparison with zero in a way that is either
+   a bug or confusing.
+ptrarith: <M:---+>
+   Pointer arithmetic using pointer and integer.
+nullptrarith: <M:--++>
+   Pointer arithmetic using a possibly null pointer and integer.
+ptrcompare: <M:-+++>
+   A pointer is compared to a number.
+strictops: <M:---+>
+   A primitive operation does not type check strictly.
+bitwisesigned: <M:---+>
+   An operand to a bitwise operator is not an unsigned values.  This may have
+   unexpected results depending on the signed representations.
+shiftnegative: <M:-+++>
+   The right operand to a shift operator may be negative (behavior undefined).
+shiftimplementation: <M:-+++>
+   The left operand to a shift operator may be negative (behavior is
+   implementation-defined).
+sizeoftype: <M:---+>
+   Operand of sizeof operator is a type. (Safer to use expression, int *x =
+   sizeof (*x); instead of sizeof (int).)
+sizeofformalarray: <P:+>
+   Operand of a sizeof operator is a function parameter declared as an array. 
+   The value of sizeof will be the size of a pointer to the element type, not
+   the number of elements in the array.
+
+declarations
+===================================
+fixedformalarray: <P:+>
+   A formal parameter is declared as an array with size.  The size of the array
+   is ignored in this context, since the array formal parameter is treated as a
+   pointer.
+incompletetype: <P:+>
+   A formal parameter is declared with an incomplete type.
+formalarray: <P:->
+   A formal parameter is declared as an array.  This can be confusing, since a
+   formal array parameter is treated as a pointer.
+
+booleans
+===================================
+booltype <string> [lltX_bool]: <P:->
+   Set name of boolean type (default bool).
+boolfalse <string> [FALSE]: <P:->
+   Set name of boolean false (default FALSE).
+booltrue <string> [TRUE]: <P:->
+   Set name of boolean true (default TRUE).
+likelybool: <P:+>
+   Use the -booltype, -boolfalse and -booltrue flags to change the name of the
+   default boolean type.
+boolcompare: <M:-+++>
+   Two bool values are compared directly using a C primitive. This may produce
+   unexpected results since all non-zero values are considered TRUE, so
+   different TRUE values may not be equal. The file bool.h (included in
+   splint/lib) provides bool_equal for safe bool comparisons.
+boolops: <M:-+++>
+   The operand of a boolean operator is not a boolean. Use +ptrnegate to allow
+   ! to be used on pointers.
+ptrnegate: <M:++-->
+   The operand of ! operator is a pointer.
+predassign: <P:+>
+   The condition test is an assignment expression. Probably, you mean to use ==
+   instead of =. If an assignment is intended, add an extra parentheses nesting
+   (e.g., if ((a = b)) ...) to suppress this message.
+predbool: <S><P:->
+   Test expression type is not boolean.
+
+predicates
+===================================
+predboolint: <M:-+++>
+   Test expression type is not boolean or int.
+
+booleans
+===================================
+predboolptr: <M:--++>
+   Test expression type is not boolean.
+predboolothers: <M:++++>
+   Test expression type is not boolean.
+
+abstract
+===================================
+abstract: <P:+>
+   An abstraction barrier is broken. If necessary, use /*@access <type>@*/ to
+   allow access to an abstract type.
+impabstract: <P:->
+   Assume user type definitions are abstract (unless /*@concrete@*/ is used).
+accessmodule: <P:+>
+   The representation of an abstract type defined in <M>.<x> is accessible
+   anywhere in a file named <M>.<y>.
+accessfile: <P:+>
+   The representation of an abstract type named <t> is accessible anywhere in a
+   file named <t>.<x>.
+accessczech: <P:+>
+   The representation of an abstract type named <t> is accessible in the
+   definition of a function or constant named <t>_<name>
+accessslovak: <P:->
+   The representation of an abstract type named <t> is accessible in the
+   definition of a function or constant named <t><Name>
+accessczechoslovak: <P:->
+   The representation of an abstract type named <t> is accessible in the
+   definition of a function or constant named <t>_<name> or <t><Name>
+accessall: <S><P:->
+   Sets accessmodule, accessfile and accessczech
+mutrep: <M:-+++>
+   LCL semantics requires that a mutable type exhibits sharing semantics. In
+   order for objects to be shared a indirection is necessary in the
+   representation. A mutable type may be represented by a pointer or an
+   abstract mutable type. Handles into static data are fine, too, but will
+   generate this error message unless it is suppressed.
+
+memory
+===================================
+mustfreefresh: <M:-+++>
+   A memory leak has been detected. Storage allocated locally is not released
+   before the last reference to it is lost.
+mustfreeonly: <M:-+++>
+   A memory leak has been detected. Only-qualified storage is not released
+   before the last reference to it is lost.
+mustfree: <S><P:->
+   A memory leak has been detected.
+usereleased: <M:-+++>
+   Memory is used after it has been released (either by passing as an only
+   param or assigning to an only global).
+strictusereleased: <M:---+>
+   Memory (through fetch) is used after it may have been released (either by
+   passing as an only param or assigning to an only global).
+compdestroy: <M:-+++>
+   A storage leak due to incomplete deallocation of a structure or deep pointer
+   is suspected. Unshared storage that is reachable from a reference that is
+   being deallocated has not yet been deallocated. Splint assumes when an
+   object is passed as an out only void pointer that the outer object will be
+   deallocated, but the inner objects will not.
+strictdestroy: <M:---+>
+   Report complete destruction errors for array elements that may have been
+   released.
+deparrays: <M:--++>
+   When an element is fetched from an array, Splint analysis is not able to
+   determine if the same element is reused. If +deparrays, Splint will mark
+   local storage assigned from array fetches as dependent.
+branchstate: <M:-+++>
+   The state of a variable is different depending on which branch is taken.
+   This means no annotation can sensibly be applied to the storage.
+strictbranchstate: <M:---+>
+   The state of a variable through an array fetch is different depending on
+   which branch is taken. This means no annotation can sensibly be applied to
+   the storage.
+memchecks: <S><P:->
+   Sets all dynamic memory checking flags (memimplicit, mustfree, mustdefine,
+   mustnotalias, null, memtrans).
+compmempass: <M:-+++>
+   Storage derivable from a parameter does not match the alias kind expected
+   for the formal parameter.
+stackref: <M:++++>
+   A stack reference is pointed to by an external reference when the function
+   returns. The stack-allocated storage is destroyed after the call, leaving a
+   dangling reference.
+memtrans: <S><P:->
+   Memory is transferred in a way that violates annotations.
+dependenttrans: <M:-+++>
+   Dependent storage is transferred to a non-dependent reference.
+newreftrans: <M:-+++>
+   A new reference is transferred to a reference counted reference.
+onlytrans: <M:-+++>
+   The only reference to this storage is transferred to another reference
+   (e.g., by returning it) that does not have the only annotation. This may
+   lead to a memory leak, since the new reference is not necessarily released.
+onlyunqglobaltrans: <M:--++>
+   The only reference to this storage is transferred to another reference that
+   does not have an aliasing annotation. This may lead to a memory leak, since
+   the new reference is not necessarily released.
+ownedtrans: <M:-+++>
+   The owned reference to this storage is transferred to another reference
+   (e.g., by returning it) that does not have the owned annotation. This may
+   lead to a memory leak, since the new reference is not necessarily released.
+freshtrans: <M:-+++>
+   Fresh storage (newly allocated in this function) is transferred in a way
+   that the obligation to release storage is not propagated.  Use the
+   /*@only@*/ annotation to indicate the a return value is the only reference
+   to the returned storage.
+sharedtrans: <M:-+++>
+   Shared storage is transferred to a non-shared reference. The other reference
+   may release storage needed by this reference.
+temptrans: <M:-+++>
+   Temp storage (associated with a formal parameter) is transferred to a
+   non-temporary reference. The storage may be released or new aliases created.
+kepttrans: <M:-+++>
+   storage is transferred to a non-temporary reference after being passed as
+   keep parameter. The storage may be released or new aliases created.
+keeptrans: <M:-+++>
+   Keep storage is transferred inconsistently --- either in a way that may add
+   a new alias to it, or release it.
+immediatetrans: <M:-+++>
+   An immediate address (result of & operator) is transferred inconsistently.
+refcounttrans: <M:-+++>
+   Reference counted storage is transferred in a way that may not be consistent
+   with the reference count.
+statictrans: <M:-+++>
+   Static storage is transferred in an inconsistent way.
+unqualifiedtrans: <M:-+++>
+   Unqualified storage is transferred in an inconsistent way.
+staticinittrans: <M:--++>
+   Static storage is used as an initial value in an inconsistent way.
+unqualifiedinittrans: <M:--++>
+   Unqualified storage is used as an initial value in an inconsistent way.
+readonlytrans: <M:--++>
+   A read-only string literal is assigned to a non-observer reference.
+passunknown: <M:---->
+   Passing a value as an un-annotated parameter clears its annotation.
+readonlystrings: <M:-+++>
+   String literals are read-only. An error is reported if a string literal may
+   be modified or released.
+memimp: <M:-+++>
+   Memory errors for unqualified storage.
+paramimptemp: <P:+>
+   Assume unannotated parameter is temp.
+allimponly: <S><P:->
+   Sets globimponly, retimponly, structimponly, specglobimponly, specretimponly
+   and specstructimponly.
+codeimponly: <S><P:->
+   Sets globimponly, retimponly and structimponly.
+specimponly: <S><P:->
+   Sets specglobimponly, specretimponly and specstructimponly.
+globimponly: <P:+>
+   Assume unannotated global storage is only.
+retimponly: <P:+>
+   Assume unannotated returned storage is only.
+structimponly: <P:+>
+   Assume unannotated structure field is only.
+specglobimponly: <P:->
+   Assume unannotated global storage is only.
+specretimponly: <P:->
+   Assume unannotated returned storage is only.
+specstructimponly: <P:->
+   Assume unannotated structure field is only.
+
+aliasing
+===================================
+aliasunique: <M:-+++>
+   A unique or only parameter is aliased by some other parameter or visible
+   global.
+mayaliasunique: <M:-+++>
+   A unique or only parameter may be aliased by some other parameter or visible
+   global.
+mustnotalias: <M:-+++>
+   An alias has been added to a temp-qualifier parameter or global that is
+   visible externally when the function returns. If the aliasing is needed, use
+   the /*@shared@*/ annotation to indicate that new aliases to the parameter
+   may be created.
+retalias: <M:--++>
+   The returned value shares storage with a parameter or global. If a parameter
+   is to be returned, use the returned qualifier. If the result is not
+   modified, use the observer qualifier on the result type. Otherwise, exposed
+   can be used, but limited checking is done.
+globalias: <S><P:->
+   A global variable aliases externally-visible state when the function
+   returns.
+checkstrictglobalias: <M:-+++>
+   A global variable aliases externally-visible state when the function
+   returns.
+checkedglobalias: <M:-+++>
+   A global variable aliases externally-visible state when the function
+   returns.
+checkmodglobalias: <M:-+++>
+   A global variable aliases externally-visible state when the function
+   returns.
+uncheckedglobalias: <M:--++>
+   A global variable aliases externally-visible state when the function
+   returns.
+
+memory
+===================================
+exposetrans: <M:-+++>
+   Exposed storage is transferred to a non-exposed, non-observer reference.
+observertrans: <M:-+++>
+   Observer storage is transferred to a non-observer reference.
+
+exposure
+===================================
+repexpose: <S><P:->
+   The internal representation of an abstract type is visible to the caller.
+   This means clients may have access to a pointer into the abstract
+   representation.
+retexpose: <M:--++>
+   The return value shares storage with an instance of an abstract type. This
+   means clients may have access to a pointer into the abstract representation.
+   Use the observer qualifier to return exposed storage that may not be
+   modified by the client. Use the exposed qualifier to return modifiable (but
+   not deallocatable) exposed storage (dangerous).
+assignexpose: <M:--++>
+   Storage internal to the representation of an abstract type is assigned to an
+   external pointer. This means clients may have access to a pointer into the
+   abstract representation. If the external pointer is a parameter, the exposed
+   qualifier can be used to allow the assignment, however, this is considered
+   dangerous programming practice.
+castexpose: <M:--++>
+   Storage internal to the representation of an abstract type is exposed
+   through a type cast. This means clients may have access to a pointer into
+   the abstract representation.
+
+declarations
+===================================
+redundantsharequal: <M:--++>
+   A declaration of an immutable object uses a redundant observer qualifier.
+misplacedsharequal: <M:-+++>
+   A declaration of an unsharable object uses a sharing annotation.
+
+modification
+===================================
+mods: <P:+>
+   An externally-visible object is modified by a function, but not listed in
+   its modifies clause.
+mustmod: <M:--++>
+   An object listed in the modifies clause is not modified by the
+   implementation of the function. The modification may not be detected if it
+   is done through a call to an unspecified function.
+modobserver: <P:+>
+   Storage declared with observer is possibly modified. Observer storage may
+   not be modified.
+modobserveruncon: <M:---+>
+   Storage declared with observer may be modified through a call to an
+   unconstrained function.
+modinternalstrict: <M:---+>
+   A function that modifies internalState is called from a function that does
+   not list internalState in its modifies clause
+modfilesys: <M:---+>
+   Report undocumented file system modifications (applies to unspecified
+   functions if modnomods is set).
+modunspec: <S><P:->
+   Modification in unspecified functions (sets modnomods, modglobunspec and
+   modstrictglobsunspec).
+modnomods: <M:---+>
+   An externally-visible object is modified by a function with no
+   /*@modifies@*/ comment. The /*@modifies ... @*/ control comment can be used
+   to give a modifies list for an unspecified function.
+moduncon: <M:---+>
+   An unconstrained function is called in a function body where modifications
+   are checked. Since the unconstrained function may modify anything, there may
+   be undetected modifications in the checked function.
+modunconnomods: <M:---+>
+   An unconstrained function is called in a function body where modifications
+   are checked. Since the unconstrained function may modify anything, there may
+   be undetected modifications in the checked function.
+globsimpmodsnothing: <M:--++>
+   An implicit modifies nothing clause is assumed for a function declared with
+   a globals list but not modifies clause.
+modsimpnoglobs: <M:---->
+   An implicit empty globals list is assumed for a function declared with a
+   modifies clause but no globals list.
+
+globals
+===================================
+globstate: <M:-+++>
+   A global variable does not satisfy its annotations when control is
+   transferred.
+globs: <P:+>
+   A checked global variable is used in the function, but not listed in its
+   globals clause. By default, only globals specified in .lcl files are
+   checked. To check all globals, use +allglobals. To check globals selectively
+   use /*@checked@*/ in the global declaration.
+globuse: <M:++++>
+   A global variable listed in the function's globals list is not used in the
+   body of the function.
+internalglobs: <M:---+>
+   A called function uses internal state, but the globals list for the function
+   being checked does not include internalState
+internalglobsnoglobs: <M:---+>
+   A called function uses internal state, but the function being checked has no
+   globals list
+warnmissingglobs: <M:---+>
+   A global variable is used in the modifies clause, but it not listed in the
+   globals list.  The variable will be added to the globals list.
+warnmissingglobsnoglobs: <M:---+>
+   A global variable is used in the modifies clause, but the function has no
+   globals list.  The variable will be added to the globals list.
+globnoglobs: <M:---+>
+   A specified global variable is used in the function, but not listed in its
+   globals list. Without +globnoglobs, only globals declared with
+   /*@checkedstrict@*/ will produce use errors in functions without globals
+   lists. The /*@globals ... @*/ control comment can be used to give a globals
+   list for an unspecified function.
+allglobs: <M:--++>
+   Report use and modification errors for globals not annotated with unchecked.
+checkstrictglobs: <M:++++>
+   Report use and modification errors for checkedstrict globals.
+impcheckedspecglobs: <M:-+++>
+   Assume checked qualifier for unqualified global declarations in .lcl files.
+impcheckmodspecglobs: <M:---->
+   Assume checkmod qualifier for unqualified global declarations in .lcl files.
+impcheckedstrictspecglobs: <M:---+>
+   Assume checkmod qualifier for unqualified global declarations in .lcl files.
+impcheckedglobs: <M:---->
+   Assume checked qualifier for unqualified global declarations.
+impcheckmodglobs: <M:---->
+   Assume checkmod qualifier for unqualified global declarations.
+impcheckedstrictglobs: <M:---+>
+   Assume checkedstrict qualifier for unqualified global declarations.
+impcheckedstatics: <M:---->
+   Assume checked qualifier for unqualified file static declarations.
+impcheckmodstatics: <M:---->
+   Assume checkmod qualifier for unqualified file static declarations.
+impcheckmodinternals: <M:--++>
+   Assume checkmod qualifier for unqualified local static declarations (for
+   internal state modifications).
+impcheckedstrictstatics: <M:---+>
+   Assume checkedstrict qualifier for unqualified file static declarations.
+modglobs: <M:-+++>
+   A checked global variable is modified by the function, but not listed in its
+   modifies clause.
+modglobsnomods: <M:---+>
+   A checked global variable is modified by the function, but not listed in its
+   modifies clause.
+modstrictglobsnomods: <M:---+>
+   A checked global variable is modified by the function, but not listed in its
+   modifies clause.
+modglobsunchecked: <M:---+>
+   An unchecked global variable is modified by the function, but not listed in
+   its modifies clause.
+
+controlflow
+===================================
+noret: <M:-+++>
+   There is a path through a function declared to return a value on which there
+   is no return statement. This means the execution may fall through without
+   returning a meaningful result to the caller.
+emptyreturn: <P:+>
+   Empty return in function declared to return value.
+alwaysexits: <P:+>
+   Loop predicate always exits.
+loopexec: <S><P:->
+   Assume all loops execute at least once (sets forloopexec, whileloopexec and
+   iterloopexec).
+forloopexec: <P:->
+   Assume all for loops execute at least once.
+whileloopexec: <P:->
+   Assume all while loops execute at least once.
+iterloopexec: <P:->
+   Assume all iterator loops execute at least once.
+obviousloopexec: <P:+>
+   Assume loop that can be determined to always execute always does.
+
+undefined
+===================================
+evalorder: <M:-+++>
+   Code has unspecified behavior. Order of evaluation of function parameters or
+   subexpressions is not defined, so if a value is used and modified in
+   different places not separated by a sequence point constraining evaluation
+   order, then the result of the expression is unspecified.
+evalorderuncon: <M:---+>
+   Code involving a call to function with no modifies or globals clause may
+   have undefined or implementation-dependent behavior (Splint assumes the
+   unconstrained call may modify any reachable state or use any global). Add a
+   specification for the function.
+
+controlflow
+===================================
+infloops: <M:-+++>
+   This appears to be an infinite loop. Nothing in the body of the loop or the
+   loop test modifies the value of the loop test. Perhaps the specification of
+   a function called in the loop body is missing a modification.
+infloopsuncon: <M:--++>
+   This appears to be an infinite loop. Nothing in the body of the loop or the
+   loop test modifies the value of the loop test. There may be a modification
+   through a call to an unconstrained function, or an unconstrained function in
+   the loop test may use a global variable modified by the loop body.
+casebreak: <M:-+++>
+   Execution falls through from the previous case.
+misscase: <M:-+++>
+   Not all values in an enumeration are present as cases in the switch.
+firstcase: <M:-+++>
+   The first statement after a switch is not a case.
+duplicatecases: <P:+>
+   Duplicate cases in switch.
+deepbreak: <S><P:->
+   A break statement appears inside the body of a nested while, for or switch
+   statement. Sets looploopbreak, loopswitchbreak, switchloopbreak,
+   switchswitchbreak, and looploopcontinue.
+looploopbreak: <M:--++>
+   A break statement appears inside the body of a nested while or for
+   statement. This is perfectly reasonable code, but check that the break is
+   intended to break only the inner loop. The break statement may be preceded
+   by /*@innerbreak@*/ to suppress the message for this break only.
+switchloopbreak: <M:--++>
+   A break statement appears inside the body of a while or for statement within
+   a switch. This is perfectly reasonable code, but check that the break is
+   intended to break only the inner loop. The break statement may be preceded
+   by /*@loopbreak@*/ to suppress the message for this break only.
+loopswitchbreak: <M:---+>
+   A break statement appears inside a switch statement within a while or for
+   loop. This is perfectly reasonable code, but check that the break is
+   intended to break only the inner loop. The break statement may be preceded
+   by /*@switchbreak@*/ to suppress the message for this break only.
+switchswitchbreak: <M:---+>
+   A break statement appears inside a switch statement within another switch
+   statement. This is perfectly reasonable code, but check that the break is
+   intended to break only the inner switch. The break statement may be preceded
+   by /*@innerbreak@*/ to suppress the message for this break only.
+looploopcontinue: <M:---+>
+   A continue statement appears inside a loop within a loop. This is perfectly
+   reasonable code, but check that the continue is intended to continue only
+   the inner loop. The continue statement may be preceded by
+   /*@innercontinue@*/ to suppress the message for this continue only.
+whileempty: <M:--++>
+   While statement has no body.
+whileblock: <M:---+>
+   While body is a single statement, not a compound block.
+forempty: <M:---+>
+   For statement has no body.
+forblock: <M:---+>
+   Loop body is a single statement, not a compound block.
+ifempty: <M:++++>
+   If statement has no body.
+ifblock: <M:---+>
+   If body is a single statement, not a compound block.
+allempty: <S><P:->
+   An if, while or for statement has no body (sets ifempty, whileempty and
+   forempty.
+allblock: <S><P:->
+   Body is a single statement, not a compound block.
+elseifcomplete: <M:---+>
+   There is no final else following an else if construct.
+unreachable: <M:-+++>
+   This code will never be reached on any possible execution.
+
+effect
+===================================
+noeffect: <M:-+++>
+   Statement has no visible effect --- no values are modified.
+noeffectuncon: <M:---+>
+   Statement has no visible effect --- no values are modified. It may modify
+   something through a call to an unconstrained function.
+
+returnvals
+===================================
+retval: <S><P:->
+   Result returned by function call is not used. If this is intended, cast
+   result to (void) to eliminate message.
+retvalother: <M:++++>
+   Result returned by function call is not used. If this is intended, can cast
+   result to (void) to eliminate message.
+retvalbool: <M:-+++>
+   Result returned by function call is not used. If this is intended, can cast
+   result to (void) to eliminate message.
+retvalint: <M:-+++>
+   Result returned by function call is not used. If this is intended, can cast
+   result to (void) to eliminate message.
+
+memorybounds
+===================================
+nullterminated: <M:---->
+   A possibly non-nullterminated string/memory is used/referenced as a
+   nullterminated one.
+bounds: <S><P:->
+   Memory read or write may be out of bounds of allocated storage.
+boundsread: <M:---->
+   A memory read references memory beyond the allocated storage.
+boundswrite: <M:---->
+   A memory write may write to an address beyond the allocated buffer.
+fcnpost: <M:---->
+   Display function post conditions.
+redundantconstraints: <M:---->
+   Display seemingly redundant constraints
+checkpost: <M:---->
+   The function implementation may not satisfy a post condition given in an
+   ensures clause.
+implictconstraint: <M:---->
+   Generate implicit constraints for functions.
+orconstraint: <M:---->
+   Use limited OR expressions to resolve constraints.
+nullterminated: <M:---->
+   A user annotated non-nullterminated buffer is used/referenced as a
+   nullterminated one.
+showconstraintparens: <M:---->
+   Display parentheses around constraint terms.
+showconstraintlocation: <M:---->
+   Display location for every constraint generated.
+
+extensible
+===================================
+mts <filename>: <G><P:->
+   Load meta state declaration and corresponding xh file.
+statetransfer: <M:++++>
+   Transfer violates user-defined state rules.
+statemerge: <M:++++>
+   Control path merge violates user-defined state merge rules.
+
+macros
+===================================
+macroredef: <M:-+++>
+   A macro is defined in more than one place.
+macrounrecog: <M:-+++>
+   An unrecognized identifier appears in a macro. If the identifier is defined
+   before the macro is used, then this is okay.
+macroconstdecl: <M:-+++>
+   Macro constant has no declaration. Use /*@constant ...@*/ to declare the
+   macro.
+macrostmt: <M:-+++>
+   A macro is defined in a way that may cause syntactic problems. If the macro
+   returns a value, use commas to separate expressions;
+   otherwise, use do { <macro body> } while (FALSE) construct.
+macroempty: <M:---+>
+   A macro definition has no body.
+macroparams: <M:-+++>
+   A macro parameter is not used exactly once in all possible invocations of
+   the macro. To behave like a function, each macro parameter must be used
+   exactly once on all invocations of the macro so that parameters with
+   side-effects are evaluated exactly once. Use /*@sef@*/ to denote parameters
+   that must be side-effect free.
+macroreturn: <M:---->
+   The body of a macro declared as a function uses a return statement. This
+   exhibits behavior that could not be implemented by a function.
+macroassign: <M:-+++>
+   A macro parameter is used as the left side of an assignment expression. This
+   exhibits behavior that could not be implemented by a function.
+macroparens: <M:-+++>
+   A macro parameter is used without parentheses. This could be dangerous if
+   the macro is invoked with a complex expression and precedence rules will
+   change the evaluation inside the macro.
+macrodecl: <M:---->
+   Argument checking cannot be done well for macros without prototypes or
+   specifications, since the types of the arguments are unknown.
+macrofcndecl: <M:-+++>
+   Function macro has no declaration.
+sefparams: <M:-+++>
+   An actual parameter corresponding to a sef parameter may have a side-effect.
+sefuncon: <M:--++>
+   An actual parameter corresponding to a sef parameter involves a call to a
+   procedure with no modifies clause that may have a side-effect.
+constmacros: <P:->
+   Every non-parameterized macro (not preceded by /*@notfunction@*/) is checked
+   as a constant.
+fcnmacros: <P:->
+   Every parameterized macro (not preceded by /*@notfunction@*/) is checked as
+   a function.
+allmacros: <S><P:->
+   All macros (not preceded by /*@notfunction@*/) are checked as functions or
+   constants depending on whether or not they have parameter lists.
+libmacros: <P:->
+   Every macro declared in the load library is checked.
+specmacros: <P:+>
+   Every macro declared a specification file is checked.
+macromatchname: <M:++++>
+   A iter or constant macro is defined using a different name from the one used
+   in the previous syntactic comment
+nextlinemacros: <P:+>
+   A constant or iter declaration is not immediately followed by a macro
+   definition.
+
+iterators
+===================================
+iterbalance: <P:+>
+   Iter is not balanced with end_<iter>.
+iteryield: <P:+>
+   Iter yield parameter is inappropriate.
+hasyield: <P:->
+   An iterator has been declared with no parameters annotated with yield. This
+   may be what you want, if the iterator is meant to do something a fixed
+   number of times, but returns no information to the calling context.
+   Probably, a parameter is missing the yield annotation to indicate that it is
+   assigned a value in the calling context.
+
+names
+===================================
+namechecks: <P:+>
+   Controls name checking without changing other settings.
+czech: <S><P:->
+   Name is not consistent with Czech naming convention.
+czechfcns: <P:->
+   Function or iterator name is not consistent with Czech naming convention.
+czechvars: <P:->
+   Variable name is not consistent with Czech naming convention.
+czechmacros: <P:->
+   Expanded macro name is not consistent with Czech naming convention.
+czechconsts: <P:->
+   Constant name is not consistent with Czech naming convention.
+czechtypes: <P:->
+   Type name is not consistent with Czech naming convention. Czech type names
+   must not use the underscore character.
+slovak: <S><P:->
+   Name is not consistent with Slovak naming convention.
+slovakfcns: <P:->
+   Function or iterator name is not consistent with Slovak naming convention.
+slovakmacros: <P:->
+   Expanded macro name is not consistent with Slovak naming convention.
+slovakvars: <P:->
+   Variable name is not consistent with Slovak naming convention.
+slovakconsts: <P:->
+   Constant name is not consistent with Slovak naming convention.
+slovaktypes: <P:->
+   Type name is not consistent with Slovak naming convention. Slovak type names
+   may not include uppercase letters.
+czechoslovak: <S><P:->
+   Name is not consistent with either Czech or Slovak naming convention.
+czechoslovakfcns: <P:->
+   Function name is not consistent with Czechoslovak naming convention.
+czechoslovakmacros: <P:->
+   Expanded macro name is not consistent with Czechoslovak naming convention.
+czechoslovakvars: <P:->
+   Variable name is not consistent with Czechoslovak naming convention.
+czechoslovakconsts: <P:->
+   Constant name is not consistent with Czechoslovak naming convention.
+czechoslovaktypes: <P:->
+   Type name is not consistent with Czechoslovak naming convention.
+   Czechoslovak type names may not include uppercase letters or the underscore
+   character.
+macrovarprefix <string> [m_]: <-><P:+>
+   A variable declared in a macro body does not start with the macrovarprefix.
+macrovarprefixexclude: <P:+>
+   A variable declared outside a macro body starts with the macrovarprefix.
+tagprefix <string>: <-><P:->
+   A tag identifier does not start with the tagprefix.
+tagprefixexclude: <P:->
+   An identifier that is not a tag starts with the tagprefix.
+enumprefix <string>: <-><P:->
+   An enum member does not start with the enumprefix.
+enumprefixexclude: <P:->
+   An identifier that is not an enum member starts with the enumprefix.
+filestaticprefix <string>: <-><P:->
+   A file-static identifier does not start with the filestaticprefix.
+filestaticprefixexclude: <P:->
+   An identifier that is not file static starts with the filestaticprefix.
+globalprefix <string>: <-><P:->
+   A global variable does not start with the globalprefix
+globalprefixexclude: <P:->
+   An identifier that is not a global variable starts with the globalprefix.
+typeprefix <string>: <-><P:->
+   A user-defined type does not start with the typeprefix
+typeprefixexclude: <P:->
+   An identifier that is not a type name starts with the typeprefix.
+externalprefix <string>: <-><P:->
+   An external identifier does not start with the externalprefix
+externalprefixexclude: <P:->
+   An identifier that is not external starts with the externalprefix.
+localprefix <string>: <-><P:->
+   A local variable does not start with the localprefix
+localprefixexclude: <P:->
+   An identifier that is not a local variable starts with the localprefix.
+uncheckedmacroprefix <string>: <-><P:->
+   An unchecked macro name does not start with the uncheckedmacroprefix
+uncheckedmacroprefixexclude: <P:->
+   An identifier that is not the name of an unchecked macro starts with the
+   uncheckedmacroprefix.
+constprefix <string>: <-><P:->
+   A constant does not start with the constantprefix
+constprefixexclude: <P:->
+   An identifier that is not a constant starts with the constantprefix.
+iterprefix <string>: <-><P:->
+   An iter does not start with the iterator prefix
+iterprefixexclude: <P:->
+   An identifier that is not a iter starts with the iterprefix.
+protoparamprefix <string>: <-><P:->
+   A parameter name in a function prototype declaration does not start with the
+   declaration parameter prefix
+isoreserved: <M:--++>
+   External name is reserved for system use by ISO C99 standard.
+cppnames: <M:--++>
+   External name is a C++ keyword or reserved word. This could lead to problems
+   if the code is compiled with a C++ compiler.
+isoreservedinternal: <M:---+>
+   Internal name is reserved for system in ISO C99 standard (this should not be
+   necessary unless you are worried about C library implementations that
+   violate the standard and use macros).
+distinctexternalnames: <P:->
+   An external name is not distinguishable from another external name using the
+   number of significant characters. According to ANSI Standard (3.1), an
+   implementation may only consider the first 6 characters significant, and
+   ignore alphabetical case distinctions (ISO C99 requires 31). The
+   +externalnamelen <n> flag may be used to change the number of significant
+   characters, and -externalnamecaseinsensitive to make alphabetical case
+   significant in external names.
+externalnamelen <number> [31]: <S><P:->
+   Sets the number of significant characters in an external name (default is 6
+   for old ANSI89 limit, C99 requires 31). Sets +distinctexternalnames.
+externalnamecaseinsensitive: <S><P:+>
+   Make alphabetic case insignificant in external names. By ANSI89 standard,
+   case need not be significant in an external name. If +distinctexternalnames
+   is not set, sets +distinctexternalnames with unlimited external name length.
+distinctinternalnames: <P:->
+   An internal name is not distinguishable from another internal name using the
+   number of significant characters. According to ANSI89 Standard (3.1), an
+   implementation may only consider the first 31 characters significant (ISO
+   C99 specified 63). The +internalnamelen <n> flag changes the number of
+   significant characters, -internalnamecaseinsensitive to makes alphabetical
+   case significant, and +internalnamelookalike to make similar-looking
+   characters non-distinct.
+internalnamelen <number> [63]: <S><P:->
+   Sets the number of significant characters in an internal name (ANSI89
+   default is 31.)  Sets +distinctinternalnames.
+internalnamecaseinsensitive: <S><P:->
+   Set whether case is significant an internal names (-internalnamecaseinsensiti
+   ve means case is significant). By ANSI89 default, case is not significant. 
+   If +distinctinternalnames is not set, sets +distinctinternalnames with
+   unlimited internal name length.
+internalnamelookalike: <S><P:->
+   Set whether similar looking characters (e.g., "1" and "l") match in internal
+   names.
+protoparamname: <M:---+>
+   A parameter in a function prototype has a name.  This is dangerous, since a
+   macro definition could be visible here.
+protoparammatch: <M:--++>
+   A parameter in a function definition does not have the same name as the
+   corresponding in the declaration of the function after removing the
+   protoparamprefix
+protoparamprefixexclude: <P:->
+   An identifier that is not a parameter name in a function prototype starts
+   with the protoparamprefix.
+
+alluse
+===================================
+topuse: <M:---+>
+   An external declaration not used in any source file.
+exportlocal: <M:-+++>
+   A declaration is exported, but not used outside this module. Declaration can
+   use static qualifier.
+exportheader: <M:--++>
+   A declaration is exported, but does not appear in a header file.
+exportheadervar: <M:--++>
+   A variable declaration is exported, but does not appear in a header file.
+   (Used with exportheader.)
+fielduse: <M:-+++>
+   A field is present in a structure type but never used. Use /*@unused@*/ in
+   front of field declaration to suppress message.
+enummemuse: <M:-+++>
+   A member of an enum type is never used.
+constuse: <M:-+++>
+   A constant is declared but not used. Use unused in the constant declaration
+   to suppress message.
+fcnuse: <M:++++>
+   A function is declared but not used. Use /*@unused@*/ in front of function
+   header to suppress message.
+paramuse: <M:-+++>
+   A function parameter is not used in the body of the function. If the
+   argument is needed for type compatibility or future plans, use /*@unused@*/
+   in the argument declaration.
+typeuse: <M:++++>
+   A type is declared but not used. Use /*@unused@*/ in front of typedef to
+   suppress messages.
+varuse: <M:++++>
+   A variable is declared but never used. Use /*@unused@*/ in front of
+   declaration to suppress message.
+unusedspecial: <M:---+>
+   Unused declaration in special file (corresponding to .l or .y file).
+
+complete
+===================================
+declundef: <M:--++>
+   A function or variable is declared, but not defined in any source code file.
+specundef: <M:-+++>
+   A function or variable is declared in an .lcl file, but not defined in any
+   source code file.
+specundecl: <P:->
+   A function or variable is declared in an .lcl file, but not declared in any
+   source code file.
+
+declarations
+===================================
+newdecl: <P:->
+   There is a new declaration that is not declared in a loaded library or
+   earlier file.  (Use this flag to check for consistency against a library.)
+
+initializations
+===================================
+needspec: <P:->
+   There is information in the specification that is not duplicated in
+   syntactic comments. Normally, this is not an error, but it may be useful to
+   detect it to make sure checking incomplete systems without the
+   specifications will still use this information.
+
+libraries
+===================================
+nolib: <-><G><P:->
+   Do not load standard library.
+isolib: <G><P:->
+   Library based on the ISO standard library specification is used.
+strictlib: <G><P:->
+   Stricter version of the standard library is used. (The default library is
+   standard.lcd;  strict library is strict.lcd.)
+unixlib: <G><P:->
+   UNIX version of the standard library is used.
+unixstrictlib: <G><P:->
+   strict version of the UNIX library is used.
+posixlib: <G><P:->
+   POSIX version of the standard library is used.
+posixstrictlib: <G><P:->
+   POSIX version of the strict standard library is used.
+whichlib: <G><P:->
+   Show standard library filename.
+warnposixheaders: <P:+>
+   Header name matches a POSIX header, but the POSIX library is not selected.
+warnunixlib: <P:+>
+   Unix library may not be compatible with all platforms
+usevarargs: <P:+>
+   Header <varargs.h> is not part of ANSI Standard. Should use <stdarg.h>
+   instead.
+dump <filename>: <G><P:->
+   Save state for merging (default suffix .lcd).
+load <filename>: <G><P:->
+   Load state from dump file (default suffix .lcd).
+
+headers
+===================================
+singleinclude: <G><P:->
+   When checking multiple files, each header file is processed only once. This
+   may change the meaning of the code, if the same header file is included in
+   different contexts (e.g., the header file includes #if directives and the
+   values are different when it is included in different places.)
+neverinclude: <G><P:->
+   Ignore header includes. Only works if relevant information is loaded from a
+   library.
+skipsysheaders: <G><P:->
+   Do not include header files in system directories (set by -sysdirs)
+
+
+===================================
+gnuextensions: <P:+>
+   ANSI C does not allow some language features supported by gcc and other
+   compilers. Use +gnuextensions to allow some of these extensions.
+
+prototypes
+===================================
+noparams: <M:--++>
+   A function declaration does not have a parameter list.
+oldstyle: <M:---+>
+   Function definition is in old style syntax. Standard prototype syntax is
+   preferred.
+
+systemfunctions
+===================================
+maintype: <P:+>
+   The function main does not match the expected type.
+exitarg: <M:-+++>
+   The argument to exit should be 0, EXIT_SUCCESS or EXIT_FAILURE
+
+declarations
+===================================
+shadow: <M:-+++>
+   An outer declaration is shadowed by the local declaration.
+incondefslib: <M:-+++>
+   A function, variable or constant previously defined in a library is
+   redefined with a different type.
+overload: <M:---->
+   A function, variable or constant defined in the library is redefined with a
+   different type.
+nestedextern: <M:-+++>
+   An extern declaration is used inside a function scope.
+redecl: <M:--++>
+   A function or variable is declared in more than one place. This is not
+   necessarily a problem, since the declarations are consistent.
+redef: <P:+>
+   A function or variable is redefined. One of the declarations should use
+   extern.
+imptype: <M:-+++>
+   A variable declaration has no explicit type.  The type is implicitly int.
+
+directories
+===================================
+tmpdir <directory> [/tmp/]: <G><P:->
+   Set directory for writing temp files.
+*** Note: possible difference in the test result because of the default path here:
+larchpath <path> [.:/usr/local/share/splint/lib:/af10/evans/LCLintDev/lib:]:
+<G><P:->
+   Set path for searching for library files (overrides LARCH_PATH environment
+   variable).
+*** Note: possible difference in the test result because of the default path here:
+lclimportdir <directory> [.:/usr/local/share/splint/imports:/af10/evans/LCLintDe
+v/imports]: <G><P:->
+   Set directory to search for LCL import files (overrides LCLIMPORTDIR).
+sysdirs <path> [/usr/]: <G><P:->
+   Set directories for system files (default /usr/include). Separate
+   directories with path separator (colons in Unix, semi-colons in Windows).
+   Flag settings propagate to files in a system directory. If -sysdirerrors is
+   set, no errors are reported for files in system directories..
+skipansiheaders: <P:+>
+   Prevent inclusion of header files in a system directory with names that
+   match standard ANSI headers. The symbolic information in the standard
+   library is used instead.  Flag in effect only if a library including the
+   ANSI library is loaded.  The ANSI headers are:
+   assert, ctype, errno, float, limits, locale, math, setjmp, signal, stdarg,
+   stddef, stdio, stdlib, strings, string, time, and wchar..
+skipposixheaders: <P:+>
+   Prevent inclusion of header files in a system directory with names that
+   match standard POSIX headers. The symbolic information in the posix library
+   is used instead.  The POSIX headers are:
+   dirent, fcntl, grp, pwd, termios, sys/stat, sys/times, sys/types,
+   sys/utsname, sys/wait, unistd, and utime..
+sysdirerrors: <M:---+>
+   Report errors in files in system directories (set by -sysdirs).
+sysdirexpandmacros: <P:+>
+   Expand macros in system directories regardless of other settings, except for
+   macros corresponding to names defined in a load library.
+I<directory>: <G><P:->
+   Add to C include path.
+S<directory>: <G><P:->
+   Add to spec path.
+
+export
+===================================
+exportany: <S><P:->
+   A variable, function or type is exported, but not specified.
+exportfcn: <M:---+>
+   A function is exported, but not specified.
+exportmacro: <M:---+>
+   A macro is exported, but not specified.
+exporttype: <M:---+>
+   A type is exported, but not specified.
+exportvar: <M:---+>
+   A variable is exported, but not specified.
+exportconst: <M:---+>
+   A constant is exported, but not specified.
+exportiter: <M:---+>
+   A constant is exported, but not specified.
+
+format
+===================================
+linelen <number> [80]: <P:->
+   Set length of messages (number of chars).
+indentspaces <number> [3]: <P:->
+   Set number of spaces to indent sub-messages.
+showcolumn: <P:+>
+   Show column number where error is found.
+parenfileformat: <P:->
+   Show column number where error is found.
+showfunc: <P:+>
+   Show name of function containing error.
+showallconjs: <P:->
+   When a library function is declared with multiple possible type, the
+   alternate types are shown only if +showallconjs.
+
+libraries
+===================================
+impconj: <P:->
+   Make all alternate types implicit (useful for making system libraries.
+
+<No Category>
+===================================
+expect <number> [0]: <G><P:->
+   Expect <int> code errors.
+lclexpect <number> [0]: <G><P:->
+   Expect <int> spec errors.
+partial: <-><S><P:->
+   Check as partial system (-specundef, -declundef, -exportlocal, don't check
+   macros in headers without corresponding .c files).
+
+headers
+===================================
+lh: <G><P:->
+   Generate .lh files.
+lcs: <G><P:+>
+   Generate .lcs files.
+
+help
+===================================
+warnflags: <P:+>
+   Command line sets flag in abnormal way
+warnrc: <P:+>
+   There was a problem reading an initialization file
+badflag: <P:+>
+   A flag is not recognized or used in an incorrect way
+fileextensions: <P:+>
+   Warn when command line file does not have a recognized extension.
+help: <G><P:->
+   Display help
+
+initializations
+===================================
+f <filename>: <G><P:->
+   Read an options file (instead of loading default ~/.splintc)
+i <filename>: <G><P:->
+   Set LCL initilization file.
+nof: <G><P:->
+   Do not read the default options file (~/.splintrc)
+commentchar <character> [@]: <P:->
+   Set the marker character for syntactic comments. Comments beginning with
+   /*<char> are interpreted by Splint, where <char> is the comment marker
+   character.
+
+limits
+===================================
+controlnestdepth <number> [63]: <M:---+>
+   Maximum number of control levels exceeded.
+stringliterallen <number> [4095]: <M:---+>
+   Maximum length of string literal exceeded.
+numstructfields <number> [1023]: <M:---+>
+   Maximum number of fields in a struct or union exceeded.
+numenummembers <number> [1023]: <M:---+>
+   Limit on maximum number of members of an enum is exceeded.
+includenest <number> [63]: <M:--++>
+   Maximum number of nested #include files exceeded.
+ansi89limits: <S><P:->
+   Check for violations of standard limits (controlnestdepth, stringliterallen,
+   includenest, numstructfields, numenummembers) based on ANSI89 standard.
+iso99limits: <S><P:->
+   Check for violations of standard limits (controlnestdepth, stringliterallen,
+   includenest, numstructfields, numenummembers) based on ISO99 standard.
+
+preproc
+===================================
+D<initializer>: <G><P:->
+   Passed to pre-processor.
+U<initializer>: <G><P:->
+   Passed to pre-processor.
+unrecogdirective: <P:+>
+   Pre-processor directive is not recognized.
+
+suppress
+===================================
+supcounts: <G><P:+>
+   The number of errors detected does not match number in /*@i<n>@*/..
+limit <number> [-1]: <P:->
+   Limit <int> consecutive repeated errors.
+
+
+===================================
+syntax: <P:+>
+   Code cannot be parsed.  For help on parse errors, see splint -help
+   parseerrors.
+trytorecover: <P:->
+   Try to recover from parse error.  It really means try - this doesn't usually
+   work.
+preproc: <P:+>
+   Preprocessing error.
+
+
+===================================
+type: <P:+>
+   Types are incompatible.
+stringliteraltoolong: <P:+>
+   A string literal is assigned to a char array too small to hold it.
+stringliteralnoroom: <M:-+++>
+   A string literal is assigned to a char array that is not big enough to hold
+   the null terminator.
+stringliteralsmaller: <M:--++>
+   A string literal is assigned to a char array that smaller than the string
+   literal needs.
+enummembers: <M:---->
+   Type of initial values for enum members must be int.
+formattype: <P:+>
+   Type of parameter is not consistent with corresponding code in format
+   string.
+formatconst: <M:-+++>
+   Format parameter is not known at compile-time.  This can lead to security
+   vulnerabilities because the arguments cannot be type checked.
+formatcode: <P:+>
+   Format code in a format string is not valid.
+
+typeequivalence
+===================================
+forwarddecl: <M:+--->
+   Forward declarations of pointers to abstract representation match abstract
+   type.
+voidabstract: <M:+--->
+   A pointer to void is cast to a pointer to an abstract type (or vice versa).
+castfcnptr: <P:+>
+   A pointer to a function is cast to (or used as) a pointer to void (or vice
+   versa).
+charindex: <M:+--->
+   To allow char types to index arrays, use +charindex.
+enumindex: <M:---->
+   To allow enum types to index arrays, use +enumindex.
+boolint: <M:+--->
+   To make bool and int types equivalent, use +boolint.
+charint: <M:+--->
+   To make char and int types equivalent, use +charint.
+enumint: <M:++-->
+   To make enum and int types equivalent, use +enumint.
+floatdouble: <M:+--->
+   To make float and double types equivalent, use +floatdouble.
+ignorequals: <M:---->
+   To ignore type qualifiers in type comparisons use +ignorequals.
+duplicatequals: <P:+>
+   Duplicate type qualifiers not supported by ISO standard.
+ignoresigns: <M:---->
+   To ignore signs in type comparisons use +ignoresigns
+numliteral: <M:++-->
+   An int literal is used as any numeric type (including float and long long).
+   Use +numliteral to allow int literals to be used as any numeric type.
+charintliteral: <M:+--->
+   A character constant is used as an int. Use +charintliteral to allow
+   character constants to be used as ints.  (This is safe since the actual type
+   of a char constant is int.)
+relaxquals: <M:++-->
+   To allow qualifier mismatches that are not dangerous, use +relaxquals.
+relaxtypes: <M:---->
+   To allow all numeric types to match, use +relaxtypes.
+charunsignedchar: <M:+--->
+   To allow char and unsigned char types to match use +charunsignedchar.
+matchanyintegral: <M:---->
+   To allow arbitrary integral types to match any integral type, use
+   +matchanyintegral.
+longunsignedintegral: <M:+--->
+   To allow arbitrary integral types to match long unsigned, use
+   +longunsignedintegral.
+longintegral: <M:---->
+   To allow arbitrary integral types to match long unsigned, use +longintegral.
+longunsignedunsignedintegral: <M:+--->
+   To allow arbitrary unsigned integral types to match long unsigned, use
+   +longunsignedunsignedintegral.
+longsignedintegral: <M:---->
+   To allow arbitrary signed integral types to match long unsigned, use
+   +longsignedintegral.
+zeroptr: <P:+>
+   Tread 0 as a pointer.
+zerobool: <M:++-->
+   Treat 0 as a boolean.
+
+unrecognized
+===================================
+repeatunrecog: <P:->
+   Identifier used in code has not been declared. (Message repeated for future
+   uses in this file.)
+sysunrecog: <P:+>
+   Identifier used in code has not been declared. (Message repeated for future
+   uses in this file.)  Use +gnuextensions to make Splint recognize some
+   keywords that are gnu extensions.
+unrecog: <P:+>
+   Identifier used in code has not been declared.
+
+declarations
+===================================
+annotationerror: <P:+>
+   A declaration uses an invalid annotation.
+commenterror: <P:+>
+   A syntactic comment is used inconsistently.
+
+warnuse
+===================================
+warnuse: <P:+>
+   Declaration marked with warn clause is used (can be suppresed by more
+   specific flags).
+bufferoverflow: <M:-+++>
+   Use of function that may lead to buffer overflow.
+bufferoverflowhigh: <M:++++>
+   Use of function that may lead to buffer overflow.
+implementationoptional: <M:--++>
+   Use of a declarator that is implementation optional, not required by ISO99.
+legacy: <M:---->
+   Use of a declarator that is marked as a legacy entry in the Unix Standard.
+multithreaded: <M:--++>
+   Non-reentrant function should not be used in multithreaded code.
+portability: <M:--++>
+   Use of function that may have implementation-dependent behavior.
+superuser: <M:--++>
+   Call to function restricted to superusers.
+toctou: <M:---+>
+   Possible time of check, time of use vulnerability.
+unixstandard: <M:---->
+   Use of function that need not be provided by UNIX implementations
+
+its4
+===================================
+its4mostrisky: <S><P:->
+   Security vulnerability classified as most risky in its4 database.
+its4veryrisky: <S><P:->
+   Security vulnerability classified as very risky in its4 database.
+its4risky: <S><P:->
+   Security vulnerability classified as risky in its4 database.
+its4moderate: <S><P:->
+   Security vulnerability classified as moderate risk in its4 database.
+its4low: <S><P:->
+   Security vulnerability classified as risky in its4 database.
+
+syncomments
+===================================
+nocomments: <P:->
+   Ignore all stylized comments.
+noaccess: <P:->
+   Ignore access comments.
+unrecogcomments: <P:+>
+   Word after a stylized comment marker does not correspond to a stylized
+   comment.
+unrecogflagcomments: <P:+>
+   Semantic comment attempts to set a flag that is not recognized.
+tmpcomments: <M:---->
+   Interpret t comments (ignore errors in lines marked with /*@t<n>@*/.
+lintcomments: <P:+>
+   Interpret traditional lint comments (/*FALLTHROUGH*/, /*NOTREACHED*/).
+warnlintcomments: <M:-+++>
+   A traditional lint comment is used. Some traditional lint comments are
+   interpreted by Splint to enable easier checking of legacy code. It is
+   preferable to replace these comments with the suggested Splint alternative.
+
+comments
+===================================
+continuecomment: <P:->
+   A line continuation marker (\) appears inside a comment on the same line as
+   the comment close. Preprocessors should handle this correctly, but it causes
+   problems for some preprocessors.
+slashslashcomment: <P:->
+   A // comment is used.  ISO C99 allows // comments, but earlier standards did
+   not.
+nestcomment: <P:+>
+   A comment open sequence (/*) appears within a comment.  This usually means
+   an earlier comment was not closed.
+
+display
+===================================
+quiet: <P:->
+   Suppress herald and error count.
+usestderr: <P:->
+   Send error messages to standard error (instead of standard out).
+showsummary: <P:->
+   Show summary of all errors reported and suppressed.
+showscan: <P:->
+   Show file names are they are processed.
+stats: <G><P:->
+   Display lines processed and time.
+timedist: <G><P:->
+   Display time distribution.
+showalluses: <G><P:->
+   Show sorted list of uses of all globals.
+
+hints
+===================================
+hints: <P:+>
+   Provide a hint the first time a particular warning appears
+forcehints: <P:->
+   Provide a hint for every warning
+
+debug
+===================================
+bugslimit <number> [3]: <P:->
+   Set maximum number of bugs detected before giving up.
+debugfcnconstraint: <M:---->
+   Perform buffer overflow checking even if the errors would be surpressed.
+grammar: <-><S><P:->
+   Debug parsing.
+keep: <-><P:->
+   Do not delete temporary files.
+nopp: <-><P:->
+   Do not pre-process input files.
+showsourceloc: <-><P:->
+   Display the source code location where a warning is produced.
+
This page took 0.271452 seconds and 5 git commands to generate.