General

Compiler-Independent Configuration File Parameters

This section lists the parameters that can be set through a CodeSonar general template or general project configuration file. Each parameter is listed with its default value in the general template (if any).

For a list of all parameter names on this page, see Contents: Compiler-Independent Configuration File Parameters.

Modify the CFLAGs being passed to the parser.

Type a list of CFLAGS
Behavior The parser will be passed the same CFLAGs as the real compiler, with these additional CFLAGs prepended.
Notes CFLAGS_PREPEND is only suitable for use in the general template configuration file and general project configuration files. It is not suitable for use in compiler template or project-compiler configuration files.

Most compilers will implicitly define various preprocessor symbols and include directories. Unless you are using gcc (which can be queried for its definitions), specify those implicit definitions here to avoid parse errors.

Typically, the implicit definitions specify the CPU architecture, the operating system, and the compiler's include directory.

The += operator will actually prepend to this preference (in all cases except for other parameters with names of the form *_PREPEND, the += operator appends). This means that if you have two CFLAGS_PREPEND += statements in this file, the CFLAGS in the second statement will be prepended to the CFLAGS in the first statement.

Tags
  • Governs the Build/Analysis

Modify the CFLAGs being passed to the parser.

Type a list of CFLAGS
Behavior The parser will be passed the same CFLAGs as the real compiler, with these additional CFLAGs appended.
Notes CFLAGS_APPEND is only suitable for use in the general template configuration file and general project configuration files. It is not suitable for use in compiler template or project-compiler configuration files.

Most compilers will implicitly define various preprocessor symbols and include directories. If the real compiler cannot be automatically queried for its implicit definitions (this only works for gcc), then the user must specify them here to avoid parse errors. Typically, these flags specify the CPU architecture, the operating system, and the compiler's include directory.

Factory Setting
  • CFLAGS_APPEND +=
Tags
  • Governs the Build/Analysis

Defines a map from compiler executable basenames to compiler models. If your compiler executable basename is not listed below as a 'default', then you should add an entry mapping it to the compiler model it is most similar to.

Type Whitespace-separated list of rules of the form
    [path/to/]executable -> model[:ABIkey]

On Windows systems, include .exe suffix on the executable name.

Microsoft libc command line encoding rules apply (even on non-Windows systems).

Behavior Invocations of executable will be modeled using model.

If [path/to/] is provided, the mapping only applies to executables with matching paths or subpaths. For example,

  COMPILER_MODELS += bin\mycc.exe -> cl

will match invocations of c:\bin\mycc.exe and c:\very\long\path\to\bin\mycc.exe, but not c:\mybin\mycc.exe or c:\usr\lib\mycc.exe.

[Windows only] Absolute paths referring to files on network file systems do not currently work, unless they are specified using the \Device\Mup\... syntax used by the kernel. You may wish to use a path suffix omitting the machine and share name instead. This will change in future releases if we can determine a sanctioned and portable way to normalize paths to the \Device\Mup\... syntax (please contact us if you are aware of such a mechanism).

If [:ABIkey] is provided, CodeSonar will associate the specified ABI key with all compilation units compiled by the specified executable.

  • The project-compiler configuration file loaded during the build phase will include the ABI key in its name. This allows users to specify different configuration settings for different ABIs.
  • CodeSonar will prefer to link compilation units with the same ABI key when constructing the CodeSonar project.
  • When a single source file is compiled multiple times with different ABI keys, one instance will be kept for each key.
  • Keys are only used within CodeSonar.
  • Keys can be arbitrary, user-selected strings; some compiler models also provide special model-specific formats that can be used to convey additional information to the compiler model (see individual compiler model documentation pages for details). If you specify arbitrary ABI keys, we recommend that you select them so that they don't conflict with compiler model names or with the special model-specific formats.

Later COMPILER_MODELS rules can supersede earlier ones. For example, if the configuration file contains the following rule sequence:

  COMPILER_MODELS += a/b/mycc -> cl:AB
  COMPILER_MODELS += c/d/mycc -> cl:CD
  COMPILER_MODELS += mycc -> cl:EF

then all compilations with mycc, including compilations with a/b/mycc and c/d/mycc, will be associated with compiler model cl and ABI key EF.

Notes On Windows, the file extension (which should be .exe or .com) for the executable is not optional. Some examples are given below. The range of the map is the list of 'model used' entries in the appropriate Compilers Recognized table. Users can also author new compiler models in C++, thereby expanding the range.

Windows default models:

  COMPILER_MODELS += arm-none-eabi-g++.exe -> gpp
  COMPILER_MODELS += arm-none-eabi-gcc.exe -> gcc
  COMPILER_MODELS += armcc.exe -> armcc
  COMPILER_MODELS += armcl.exe -> cl6x
  COMPILER_MODELS += armclang.exe -> armclang
  COMPILER_MODELS += armcpp.exe -> armcc
  COMPILER_MODELS += bcc32.exe -> borland
  COMPILER_MODELS += c166.exe -> tasking
  COMPILER_MODELS += c251.exe -> c251
  COMPILER_MODELS += c51.exe -> c51
  COMPILER_MODELS += cc21k.exe -> visualdsp
  COMPILER_MODELS += ccblkfn.exe -> visualdsp
  COMPILER_MODELS += ccrx.exe -> ccrx
  COMPILER_MODELS += ccts.exe -> visualdsp
  COMPILER_MODELS += ch38.exe -> ch38
  COMPILER_MODELS += cl.exe -> cl
  COMPILER_MODELS += cl2000.exe -> cl6x
  COMPILER_MODELS += cl30.exe -> cl30
  COMPILER_MODELS += cl430.exe -> cl6x
  COMPILER_MODELS += cl470.exe -> cl6x
  COMPILER_MODELS += cl55.exe -> cl6x
  COMPILER_MODELS += cl6x.exe -> cl6x
  COMPILER_MODELS += clang++.exe -> clangpp
  COMPILER_MODELS += clang.exe -> clang
  COMPILER_MODELS += clarm.exe -> cl
  COMPILER_MODELS += clmips.exe -> cl
  COMPILER_MODELS += clsh.exe -> cl
  COMPILER_MODELS += clthumb.exe -> cl
  COMPILER_MODELS += cosmic.exe -> cosmic
  COMPILER_MODELS += cp166.exe -> tasking
  COMPILER_MODELS += cpcp.exe -> tasking
  COMPILER_MODELS += cptc.exe -> tasking
  COMPILER_MODELS += ctc.exe -> tasking
  COMPILER_MODELS += cvavr-null.exe -> cvavr
  COMPILER_MODELS += cw-cc.exe -> xcc
  COMPILER_MODELS += dcc.exe -> dcc
  COMPILER_MODELS += dplus.exe -> dcc
  COMPILER_MODELS += ecom68.exe -> ecomppc
  COMPILER_MODELS += ecom800.exe -> ecomppc
  COMPILER_MODELS += ecom86.exe -> ecomppc
  COMPILER_MODELS += ecomarm.exe -> ecomppc
  COMPILER_MODELS += ecommip.exe -> ecomppc
  COMPILER_MODELS += ecomppc.exe -> ecomppc
  COMPILER_MODELS += ecomx86.exe -> ecomppc
  COMPILER_MODELS += g++-3.exe -> gpp
  COMPILER_MODELS += g++-4.exe -> gpp
  COMPILER_MODELS += g++.exe -> gpp
  COMPILER_MODELS += gcc-3.exe -> gcc
  COMPILER_MODELS += gcc-4.exe -> gcc
  COMPILER_MODELS += gcc.exe -> gcc
  COMPILER_MODELS += gpp.exe -> gpp
  COMPILER_MODELS += gxx.exe -> gpp
  COMPILER_MODELS += i686-pc-mingw32-g++.exe -> gpp
  COMPILER_MODELS += i686-pc-mingw32-gcc.exe -> gcc
  COMPILER_MODELS += icc430.exe -> icc430
  COMPILER_MODELS += icc78k.exe -> icc78k
  COMPILER_MODELS += iccarm.exe -> iccarm
  COMPILER_MODELS += iccavr.exe -> iccavr
  COMPILER_MODELS += iccm16c.exe -> iccm16c
  COMPILER_MODELS += iccm32c.exe -> iccm32c
  COMPILER_MODELS += iccrx.exe -> iccrx
  COMPILER_MODELS += iccstm8.exe -> iccstm8
  COMPILER_MODELS += iccv850.exe -> iccv850
  COMPILER_MODELS += mwccarm.exe -> mwccarm
  COMPILER_MODELS += mwccmcf.exe -> mwccmcf
  COMPILER_MODELS += null-cc.exe -> xcc
  COMPILER_MODELS += picc.exe -> picc
  COMPILER_MODELS += q++.exe -> qpp
  COMPILER_MODELS += qcc.exe -> qcc
  COMPILER_MODELS += shc.exe -> shc
  COMPILER_MODELS += shcpp.exe -> shcpp
  COMPILER_MODELS += tcc.exe -> armcc
  COMPILER_MODELS += tcpp.exe -> armcc
  COMPILER_MODELS += x86_64-pc-mingw32-g++.exe -> gpp
  COMPILER_MODELS += x86_64-pc-mingw32-gcc.exe -> gcc

POSIX default models:

  COMPILER_MODELS += arm-none-eabi-g++ -> gpp
  COMPILER_MODELS += arm-none-eabi-gcc -> gcc
  COMPILER_MODELS += armcc -> armcc
  COMPILER_MODELS += armclang -> armclang
  COMPILER_MODELS += armcpp -> armcc
  COMPILER_MODELS += c++ -> gpp
  COMPILER_MODELS += cc -> cc
  COMPILER_MODELS += ccblkfn -> visualdsp
  COMPILER_MODELS += ch38 -> ch38
  COMPILER_MODELS += clang -> clang
  COMPILER_MODELS += clang++ -> clangpp
  COMPILER_MODELS += cosmic -> cosmic
  COMPILER_MODELS += cpcp -> tasking
  COMPILER_MODELS += cptc -> tasking
  COMPILER_MODELS += ctc -> tasking
  COMPILER_MODELS += dcc -> dcc
  COMPILER_MODELS += dplus -> dcc
  COMPILER_MODELS += ecom68 -> ecomppc
  COMPILER_MODELS += ecom800 -> ecomppc
  COMPILER_MODELS += ecom86 -> ecomppc
  COMPILER_MODELS += ecomarm -> ecomppc
  COMPILER_MODELS += ecommip -> ecomppc
  COMPILER_MODELS += ecomppc -> ecomppc
  COMPILER_MODELS += ecomx86 -> ecomppc
  COMPILER_MODELS += g++ -> gpp
  COMPILER_MODELS += gcc -> gcc
  COMPILER_MODELS += gpp -> gpp
  COMPILER_MODELS += gxx -> gpp
  COMPILER_MODELS += mcpcom -> mcpcom
  COMPILER_MODELS += null-cc -> xcc
  COMPILER_MODELS += q++ -> qpp
  COMPILER_MODELS += qcc -> qcc
  COMPILER_MODELS += shc -> shc
  COMPILER_MODELS += shcpp -> shcpp
  COMPILER_MODELS += tcc -> armcc
  COMPILER_MODELS += tcpp -> armcc

On all EXCEPT Windows:

  COMPILER_MODELS += QCC -> qcc

To activate the Hi-Tech compiler model for Linux:

    COMPILER_MODELS += picc -> picc

To activate the IAR compiler models for Linux:

    COMPILER_MODELS += iccarm -> iccarm
    COMPILER_MODELS += iccavr -> iccavr
    COMPILER_MODELS += iccm32c -> iccm32c
    COMPILER_MODELS += icc430 -> icc430
    COMPILER_MODELS += icc78k -> icc78k
    COMPILER_MODELS += iccrx -> iccrx
    COMPILER_MODELS += iccstm8 -> iccstm8
    COMPILER_MODELS += iccv850 -> iccv850
    COMPILER_MODELS += iccm16c -> iccm16c

To use the IAR compiler model for other IAR compilers, specify a similar COMPILER_MODELS rule for your compiler executable name. For example, if you are using icc8051 on Linux:

    COMPILER_MODELS += icc8051 -> iccgeneric

To activate the TI CodeComposer compiler models for non-Windows systems:

    COMPILER_MODELS += cl6x -> cl6x
    COMPILER_MODELS += cl30 -> cl30x
    COMPILER_MODELS += armcl -> cl6x 
    COMPILER_MODELS += cl430 -> cl6x 
    COMPILER_MODELS += cl470 -> cl6x 
    COMPILER_MODELS += cl55 -> cl6x
    COMPILER_MODELS += cl2000 -> cl6x 

To activate the MPLAB compiler models for Linux:

    COMPILER_MODELS += mcc18 -> mcc18
    COMPILER_MODELS += mcc30 -> mcc30

To activate the MPLAB compiler models for Windows:

    COMPILER_MODELS += mcc18.exe -> mcc18
    COMPILER_MODELS += mcc30.exe -> mcc30

To activate the Freescale CodeWarrior for HC12 compiler model for Linux:

    COMPILER_MODELS += chc12 -> chc12

To activate the Freescale CodeWarrior for HC12 compiler model for Windows:

    COMPILER_MODELS += chc12.exe -> chc12

To activate Wind River compiler models, use the following. This will disable recognition of some Green Hills compilers because of an executable name conflict.

 (Windows)
    COMPILER_MODELS += ccppc.exe -> ccppc
    COMPILER_MODELS += c++ppc.exe -> c++ppc
 (other systems)
    COMPILER_MODELS += ccppc -> ccppc
    COMPILER_MODELS += c++ppc -> c++ppc

[Windows only] To activate additional Cosmic compiler mappings, use the following.

    COMPILER_MODELS += cpcorm0.exe -> cosmic
    COMPILER_MODELS += cpppc.exe -> cosmic
    COMPILER_MODELS += cpstm8.exe -> cosmic
    COMPILER_MODELS += cpst7.exe -> cosmic

Custom Usage Examples

[Windows] Treat anything named mycc.exe like cl.

     COMPILER_MODELS += mycc.exe -> cl

[Windows] Treat c:\compilers\mycc.exe (but not, eg, c:\usr\local\mycc.exe) like cl.

     COMPILER_MODELS += c:\compilers\mycc.exe -> cl

[Windows] Treat C:\Program Files (x86)\My IDE v8\bin\mycc.exe like cl. Note that the path must be quoted because it contains spaces.

     COMPILER_MODELS += "C:\Program Files (x86)\My IDE v8\bin\mycc.exe" -> cl

[Windows] Treat any executable with path suffix bin\mycc.exe like cl. Note that this will match the path in the previous example, but not (for example) C:\mybin\mycc.exe.

     COMPILER_MODELS +=  bin\mycc.exe -> cl

[Windows] Treat anything named mycc.exe like cl. Associate ABI key ABC with any translation units compiled by this compiler.

     COMPILER_MODELS +=  mycc.exe -> cl:ABC

[Windows] Handle all compilations with any cl.exe executable using the cl compiler model, using ABI keys to distinguish compilations from certain cl.exe installations.

      COMPILER_MODELS +=  cl.exe -> cl:default
      COMPILER_MODELS +=  C:\bin\a\b\cl.exe -> cl:AB
      COMPILER_MODELS +=  C:\bin\c\d\cl.exe -> cl:CD

[Posix] Treat anything named mycc like gcc.

     COMPILER_MODELS +=  mycc -> gcc

[Posix] Treat /tmp/mycc (an absolute path) like gcc.

     COMPILER_MODELS += /tmp/mycc -> gcc

[Posix] Treat any executable with path suffix tmp/mycc like gcc. Note that this will match the path in the previous example, but not (for example) /u/mytmp/mycc.

     COMPILER_MODELS += tmp/mycc -> gcc

[Posix] Handle all compilations with any gcc executable using the gcc compiler model, using ABI keys to distinguish compilations from certain gcc installations.

      COMPILER_MODELS +=  gcc -> gcc:default
      COMPILER_MODELS += /a/b/gcc -> gcc:AB
      COMPILER_MODELS += /c/d/gcc -> gcc:CD

If your build system generates randomly-named files each time it runs, you may be able to use a combination of COMPILER_MODELS and DISABLED_COMPILERS to model compilation without incurring a separate license cost for each randomly-named file.

For example, suppose your regular software built uses a tool called mybuild, whose behavior is such that

   mybuild gcc [options] -c A.c

creates a randomly-named copy <rname>.c of A.c and then invokes

   gcc [options] -c <rname>.c

Then you can model the compilation as taking place on A.c rather than a succession of <rname>.c using the following pair of rules.

  [Posix]
      COMPILER_MODELS += mybuild -> gcc
      DISABLED_COMPILERS += gcc
  [Windows]
      COMPILER_MODELS += mybuild.exe -> gcc
      DISABLED_COMPILERS += gcc.exe
Tags
  • Governs the Build/Analysis

Specifies whether or not compiler models will override type kinds specified in the compiler-specific configuration file with information obtained by invoking the native compiler. It is up to the compiler model implementation to respect this parameter. Currently only the gcc model uses this parameter.

Type { Yes, No }
Notes It is up to the compiler model implementation to respect this parameter. When authoring a compiler model, you should check this parameter before passing any EDG front-end options that modify type kinds.
Factory Setting
  • OVERRIDE_COMPILER_CONF = Yes
Tags
  • Governs the Build/Analysis

Forces the project builder to ignore certain compilers that it would, by default, notice.

Type Whitespace separated list of compiler names (basenames, path prefixes, or full paths).

Microsoft libc command line encoding rules apply (even on non-Windows systems).

Behavior Invocations of compilers listed here will be ignored by the project builder.

Behavior is undefined if the same compiler executable appears in both the COMPILER_MODELS domain and the DISABLED_COMPILERS set.

Notes On Windows, always include the file extension of the executable (which should be .exe or .com).

The following compiler executables are recognized by default on Windows systems. To ignore invocations of a specific executable, use the corresponding DISABLED_COMPILERS rule.

  DISABLED_COMPILERS += arm-none-eabi-g++.exe
  DISABLED_COMPILERS += arm-none-eabi-gcc.exe
  DISABLED_COMPILERS += armcc.exe
  DISABLED_COMPILERS += armcl.exe
  DISABLED_COMPILERS += armclang.exe
  DISABLED_COMPILERS += armcpp.exe
  DISABLED_COMPILERS += bcc32.exe
  DISABLED_COMPILERS += c166.exe
  DISABLED_COMPILERS += c251.exe
  DISABLED_COMPILERS += c51.exe
  DISABLED_COMPILERS += cc21k.exe
  DISABLED_COMPILERS += ccblkfn.exe
  DISABLED_COMPILERS += ccrx.exe
  DISABLED_COMPILERS += ccts.exe
  DISABLED_COMPILERS += ch38.exe
  DISABLED_COMPILERS += cl.exe
  DISABLED_COMPILERS += cl2000.exe
  DISABLED_COMPILERS += cl30.exe
  DISABLED_COMPILERS += cl430.exe
  DISABLED_COMPILERS += cl470.exe
  DISABLED_COMPILERS += cl55.exe
  DISABLED_COMPILERS += cl6x.exe
  DISABLED_COMPILERS += clang++.exe
  DISABLED_COMPILERS += clang.exe
  DISABLED_COMPILERS += clarm.exe
  DISABLED_COMPILERS += clmips.exe
  DISABLED_COMPILERS += clsh.exe
  DISABLED_COMPILERS += clthumb.exe
  DISABLED_COMPILERS += cosmic.exe
  DISABLED_COMPILERS += cp166.exe
  DISABLED_COMPILERS += cpcp.exe
  DISABLED_COMPILERS += cptc.exe
  DISABLED_COMPILERS += ctc.exe
  DISABLED_COMPILERS += cvavr-null.exe
  DISABLED_COMPILERS += cw-cc.exe
  DISABLED_COMPILERS += dcc.exe
  DISABLED_COMPILERS += dplus.exe
  DISABLED_COMPILERS += ecom68.exe
  DISABLED_COMPILERS += ecom800.exe
  DISABLED_COMPILERS += ecom86.exe
  DISABLED_COMPILERS += ecomarm.exe
  DISABLED_COMPILERS += ecommip.exe
  DISABLED_COMPILERS += ecomppc.exe
  DISABLED_COMPILERS += ecomx86.exe
  DISABLED_COMPILERS += g++-3.exe
  DISABLED_COMPILERS += g++-4.exe
  DISABLED_COMPILERS += g++.exe
  DISABLED_COMPILERS += gcc-3.exe
  DISABLED_COMPILERS += gcc-4.exe
  DISABLED_COMPILERS += gcc.exe
  DISABLED_COMPILERS += gpp.exe
  DISABLED_COMPILERS += gxx.exe
  DISABLED_COMPILERS += i686-pc-mingw32-g++.exe
  DISABLED_COMPILERS += i686-pc-mingw32-gcc.exe
  DISABLED_COMPILERS += icc430.exe
  DISABLED_COMPILERS += icc78k.exe
  DISABLED_COMPILERS += iccarm.exe
  DISABLED_COMPILERS += iccavr.exe
  DISABLED_COMPILERS += iccm16c.exe
  DISABLED_COMPILERS += iccm32c.exe
  DISABLED_COMPILERS += iccrx.exe
  DISABLED_COMPILERS += iccstm8.exe
  DISABLED_COMPILERS += iccv850.exe
  DISABLED_COMPILERS += mwccarm.exe
  DISABLED_COMPILERS += mwccmcf.exe
  DISABLED_COMPILERS += null-cc.exe
  DISABLED_COMPILERS += picc.exe
  DISABLED_COMPILERS += q++.exe
  DISABLED_COMPILERS += qcc.exe
  DISABLED_COMPILERS += shc.exe
  DISABLED_COMPILERS += shcpp.exe
  DISABLED_COMPILERS += tcc.exe
  DISABLED_COMPILERS += tcpp.exe
  DISABLED_COMPILERS += x86_64-pc-mingw32-g++.exe
  DISABLED_COMPILERS += x86_64-pc-mingw32-gcc.exe

The following compiler executables are recognized by default on Posix systems. To ignore invocations of a specific executable, use the corresponding DISABLED_COMPILERS rule.

  DISABLED_COMPILERS += arm-none-eabi-g++
  DISABLED_COMPILERS += arm-none-eabi-gcc
  DISABLED_COMPILERS += armcc
  DISABLED_COMPILERS += armclang
  DISABLED_COMPILERS += armcpp
  DISABLED_COMPILERS += c++
  DISABLED_COMPILERS += cc
  DISABLED_COMPILERS += ccblkfn
  DISABLED_COMPILERS += ch38
  DISABLED_COMPILERS += clang
  DISABLED_COMPILERS += clang++
  DISABLED_COMPILERS += cosmic
  DISABLED_COMPILERS += cpcp
  DISABLED_COMPILERS += cptc
  DISABLED_COMPILERS += ctc
  DISABLED_COMPILERS += dcc
  DISABLED_COMPILERS += dplus
  DISABLED_COMPILERS += ecom68
  DISABLED_COMPILERS += ecom800
  DISABLED_COMPILERS += ecom86
  DISABLED_COMPILERS += ecomarm
  DISABLED_COMPILERS += ecommip
  DISABLED_COMPILERS += ecomppc
  DISABLED_COMPILERS += ecomx86
  DISABLED_COMPILERS += g++
  DISABLED_COMPILERS += gcc
  DISABLED_COMPILERS += gpp
  DISABLED_COMPILERS += gxx
  DISABLED_COMPILERS += mcpcom
  DISABLED_COMPILERS += null-cc
  DISABLED_COMPILERS += q++
  DISABLED_COMPILERS += qcc
  DISABLED_COMPILERS += shc
  DISABLED_COMPILERS += shcpp
  DISABLED_COMPILERS += tcc
  DISABLED_COMPILERS += tcpp
Tags
  • Governs the Build/Analysis

Instructs CodeSonar not to monitor certain executables or their subprocesses.

Type Whitespace separated list of program names (basenames, path prefixes, or full paths).

Microsoft libc command line encoding rules apply (even on non-Windows systems).

Behavior Some programs contain security measures that cause them to fail if they detect they are being monitored. It is beneficial to add such programs to this list.
Notes This parameter has no effect on Windows systems.

If programs listed here transitively invoke compilers, CodeSonar will not notice those invocations.

Factory Settings
  • HOOK_BLACKLIST += ibtoold
  • HOOK_BLACKLIST += momc
  • HOOK_BLACKLIST += mapc
  • HOOK_BLACKLIST += ssh
  • HOOK_BLACKLIST += rpm
  • HOOK_BLACKLIST += chroot
  • HOOK_BLACKLIST += qemu-aarch64
  • HOOK_BLACKLIST += qemu-arm
  • HOOK_BLACKLIST += qemu-i386
  • HOOK_BLACKLIST += qemu-mips
  • HOOK_BLACKLIST += qemu-mips64
  • HOOK_BLACKLIST += qemu-mipsel
  • HOOK_BLACKLIST += qemu-mips.real
  • HOOK_BLACKLIST += qemu-ppc
  • HOOK_BLACKLIST += qemu-system-aarch64
  • HOOK_BLACKLIST += qemu-system-arm
  • HOOK_BLACKLIST += qemu-system-i386
  • HOOK_BLACKLIST += qemu-system-mips
  • HOOK_BLACKLIST += qemu-system-mips64
  • HOOK_BLACKLIST += qemu-system-mipsel
  • HOOK_BLACKLIST += qemu-system-ppc
  • HOOK_BLACKLIST += qemu-system-x86_64
  • HOOK_BLACKLIST += qemu-x86_64
Tags
  • Governs the Build/Analysis

Specifies whether or not to prevent the software build system (for example, make) from writing over environment variables necessary for proper process hooking on POSIX systems.

Type { Yes, No }
Behavior Every time a process calls exec, if any important environment variables (such as LD_PRELOAD, LD_LIBRARY_PATH) have been written over, they will be repaired in the environment used to create the new process.
Notes This parameter has no effect on Windows systems.

Most build systems do not need this to be set. The most common cause for setting this to "Yes" is a build system that wipes the environment, such as SCons.

Setting this to "Yes" can prevent build systems from causing compiler invocations to be missed. If you believe source files (compilation units) are missing from your project, COMPILER_MODELS is set correctly, and the compiler is actually getting executed by the build system, then setting this to "Yes" may help. It is slightly invasive and could conceivably cause problems, although none have been observed.

Factory Setting
  • FORCE_ENVIRONMENT = Yes
Tags
  • Governs the Build/Analysis

Specifies whether or not to perform crlf -> lf translations on stdout and stderr and do the inverse on stdin.

Type { Yes, No }
Notes This parameter is ignored by the Windows build wizard and on non-Windows systems.

Setting this to "Yes" can be useful if running an interactive Cygwin shell inside a hook command.

Tags
  • Governs the Build/Analysis

Specifies whether or not to invoke the real compiler before invoking the CodeSonar parser.

Type { Yes, No }
Notes Its use is to make sure the parser has access to output files produced by the compiler, for example, precompiled headers
Tags
  • Governs the Build/Analysis

Specifies whether or not to log the contents of argument files processed by compiler models to the Native Compilation Details Log.

Type { Yes, No }
Notes The purpose of this parameter is to log the contents of argument files used by the native compiler (such as .rsp files) for debugging purposes. These files are often temporary and deleted as part of the build process.

The responsibility for respecting this parameter falls to the compiler models.

  • If you have custom compiler models, ensure that the model checks the value of LOG_COMPILER_ARGUMENT_FILES and performs the appropriate logging when it is set to Yes.
  • The compiler models shipped with CodeSonar all support this parameter.
Tags
  • Additional Outputs from the Build/Analysis

[Windows only] Specifies whether or not CodeSonar on Windows should virtually proxy compiler executables in order to detect compiler executions.

Type { Yes, No }
Behavior
  • Yes : CodeSonar will automatically proxy compiler executables on Windows without actually modifying your toolchain installations. You do not need to manually replace compiler executables with a proxy executable.
  • No : CodeSonar will not automatically proxy compiler executables on Windows. You will need to do so manually. See the notes below.
Notes This setting is ignored on non-Windows systems.

This should only be set to "No" as a last resort when the virtual compiler proxying technology is incompatible with your environment. Normally, CodeSonar proxies your compiler executables in a virtual way without needing to mutate your compiler installation. However, under some circumstances a more manual approach may be required.

If set to "No" then you must manually rename your compiler executables and then place our proxy (spawncs_userland.exe) where the real compiler used to be. Example:

      rename cl.exe cl.orig.exe
      copy "c:\Program Files\CodeSecure\CodeSonar\codesonar\bin\spawncs_userland.exe" cl.exe

Additionally, it will not be possible to concurrently have multiple CodeSonar analyses in the build stage in the same Windows session with a setting of "No."

As of January 2024, this must be set to No within Windows Docker containers. See https://github.com/microsoft/Windows-Containers/issues/450. See INSTALL/codesonar/docker/Dockerfile.win32 for a sample Dockerfile.

Factory Setting
  • VIRTUAL_COMPILER_PROXY = Yes
Tags
  • Governs the Build/Analysis

Specifies whether CodeSonar should be willing to run beside known-incompatible versions of Symantec Endpoint Protection. Certain versions of Symantec Endpoint Protection can trigger Windows kernel deadlock in the presence of CodeSonar.

Type { Yes, No }
Behavior
  • No : CodeSonar will check for the existence of the Symantec Endpoint Protection's Application and Device Control component (sysplant.sys). If a version between 12.1.3001.165 - 12.1.4xxx.xxx is installed, then CodeSonar will refuse to run.
  • Yes : CodeSonar will not perform this check. We do not recommend this setting, since it may result in kernel deadlock. Either upgrade to SEP 12 RU5 or later, or uninstall the Application and Device Control component to safely work around the issue. Disabling SEP has no effect.
Factory Setting
  • ALLOW_INCOMPATIBLE_SYMANTEC = No

Specifies whether or not to hold the stdout, stderr, and stdin streams open.

Type { Yes, No }
Behavior When this is set to "Yes", the stdout, stderr, and stdin streams will be kept open even after the real compiler closes them or exits.
Notes This setting has no effect on non-Windows operating systems.

Setting this to "Yes" can cause deadlock if closing one of these streams signals something to another process.

Setting this to "Yes" can reduce the probability of exercising race conditions in the IAR Embedded Workbench IDE. If that IDE is producing the spurious and harmless error message "Error while running C/C++ Compiler" then setting this to "Yes" may prevent the message. It has also been observed that setting INVOKE_COMPILER_FIRST to "No" while running an expensive program in the background can prevent the error message.

Tags
  • Governs the Build/Analysis

Specifies whether or not to always create a hidden conhost.exe process when one does not already exist when launching compiler processes.

Type { Yes, No }
Behavior By default, when creating a new compiler process after intercepting a compiler invocation, CodeSonar will use the DETACHED_PROCESS Windows API flag if it detects that the current process has no associated console. This prevents CodeSonar from creating many unecessary conhost.exe processes in most cases. However, in some cases this can cause compilers that launch their own subprocesses to unintentionally create new console processes of their own.

If you observe console windows popping up when running CodeSonar that do not normally show up during the build, then setting this option to Yes can help.

Notes This setting has no effect on non-Windows operating systems.
Tags
  • Governs the Build/Analysis

For use with CodeWarrior installations that use DLLs (see CodeSonar with CodeWarrior: DLL Approach): specifies CodeWarrior install directories so that compiler IDE plug-ins can be identified for interception.

Type Whitespace-separated list of directories

Microsoft libc command line encoding rules apply (even on non-Windows systems).

Behavior Invocations of all compiler IDE plug-ins of CodeWarrior install directories in this list will be intercepted.
Notes Read about using CodeSonar with CodeWarrior before basing a project on a CodeWarrior build.

This parameter is ignored by the Windows project builder GUI and on non-Windows systems.

To configure interception of some subset of the compiler plug-ins, use CODEWARRIOR_PLUGINS instead. If you are running from the command line and neither CODEWARRIOR_INSTALLS nor CODEWARRIOR_PLUGINS is specified in the template or project configuration file, then the settings specified at install time will be used.

For example:

  CODEWARRIOR_INSTALLS += "C:\Program Files\Freescale\CodeWarrior for Microcontrollers V6.0"
Tags
  • Governs the Build/Analysis

For use with CodeWarrior installations that use DLLs (see CodeSonar with CodeWarrior: DLL Approach): specifies individual CodeWarrior compiler IDE plug-ins for interception.

Type Whitespace-separated list of directories

Microsoft libc command line encoding rules apply (even on non-Windows systems).

Behavior Invocations of CodeWarrior compiler IDE plug-ins in this parameter will be intercepted.
Notes Read about using CodeSonar with CodeWarrior before basing a project on a CodeWarrior build.

This parameter is ignored by the Windows project builder GUI and on non-Windows systems.

To configure interception of all CodeWarrior IDE compiler plug-ins, use the CODEWARRIOR_INSTALLS parameter instead. If you are running from the command line and neither CODEWARRIOR_INSTALLS nor CODEWARRIOR_PLUGINS is specified in the template or project configuration file, then the settings specified at install time will be used.

For example:

  CODEWARRIOR_PLUGINS += "C:\Program Files\Freescale\CodeWarrior for Microcontrollers V6.0\bin\plugins\compiler\MCFCCompiler.dll"
Tags
  • Governs the Build/Analysis

Specifies files whose compilations should be ignored.

Type C/C++ analyses: Boost 'POSIX Extended Regular Expression'
Behavior For C and C++ analyses: If a file in a compilation command has a path that matches the regular expression, that compilation will be ignored.
Notes [C/C++ analyses only] This option cannot be used to ignore header files. Only top level files (e.g., .c and .cpp) can be ignored. CodeSonar users looking to discard warnings in certain include files might be interested in the WARNING_FILTER examples for discard path:<dir>, or the SYSTEM_INCLUDE_PATHS setting.

You can specify as many IGNORED_COMPILATIONS entries as you want.

Note that backslashes used as directory separators need to be escaped, so a rule containing a Windows path will look (something) like the following:

  IGNORED_COMPILATIONS += bar\\foo\.c

The forward slashes used as directory separators on other systems do not require escaping:

  IGNORED_COMPILATIONS += bar/foo\.c

Example 1: Ignore compilations of files whose paths end in "foo.c". This includes compilations of foo.c, /usr/local/foo.c, and mydir/myfoo.c, but not foo.cpp.

  IGNORED_COMPILATIONS += ^.*foo\.c$

Example 2: Ignore compilations of files located in or under directory /usr/local/testdir/. This includes compilations of /usr/local/testdir/foo.c and /usr/local/testdir/test1/foo.c.

  IGNORED_COMPILATIONS += ^/usr/local/testdir/

Example 3: Ignore compilations of files located directly in directory /usr/local/testdir/. This includes compilations of /usr/local/testdir/foo.c and /usr/local/testdir/foo.cpp but not /usr/local/testdir/test1/foo.c.

  IGNORED_COMPILATIONS += ^/usr/local/testdir/[^/]+$

Example 4: Ignore compilations of files located in or under Windows directory C:\Program Files\IAR Systems\

  IGNORED_COMPILATIONS += C:\\Program\ Files\\IAR\ Systems\\.*
Tags
  • Governs the Build/Analysis

Specifies compilation commands that should be ignored.

Type string

Microsoft libc command line encoding rules apply (even on non-Windows systems).

Behavior Ignore compilation command lines containing the specified substring.
Notes This can be significantly faster than using IGNORED_COMPILATIONS, but is not as precise. IGNORED_COMPILATIONS could ignore foo.c and not bar.c in the command "gcc -c foo.c bar.c", but IGNORED_COMPILATION_COMMANDS must either accept the entire command or none of it.

For example:

  IGNORED_COMPILATION_COMMANDS += gcc -c foo.c
Tags
  • Governs the Build/Analysis

Specifies the maximum number of parse errors allowed in a compilation before the compilation is excluded from the analysis.

Type integer
Behavior If the percentage of project compilation units exceeding this limit is greater than MINIMUM_GOOD_COMPILATIONS, no analysis will take place.
Factory Setting
  • ERROR_LIMIT_PER_COMPILATION = 30
Tags
  • Analysis resource/effort limit

At least this percentage of the project compilation units must be "good compilations", meaning that they have no more parse errors than the limit specified by ERROR_LIMIT_PER_COMPILATION.

Type integer between 0 and 100, inclusive
Behavior If the percentage of good compilations in the project is below this value, the analysis will not proceed.
Factory Setting
  • MINIMUM_GOOD_COMPILATIONS = 80
Tags
  • Analysis resource/effort limit

Specifies the treatment of allocators such as malloc/calloc/alloca/realloc/new/new[] on failure.

Type { RETURN_NULL, DOESNT_FAIL }
Behavior
  • RETURN_NULL : allocators are modeled as returning NULL on failure
  • DOESNT_FAIL : allocators are assumed never to fail.This setting is mainly useful for users who don't care what their software does when it runs out of memory.
Notes We do not recommend changing the MALLOC_FAILURE_BEHAVIOR setting between incremental analyses because the different handling of allocators in the parent and child analyses is likely to confuse users: re-analyzed (and newly-analyzed) allocators will be handled as specified by the updated setting, but handling for any other allocators in the project will reflect the previous setting.
Factory Setting
  • MALLOC_FAILURE_BEHAVIOR = RETURN_NULL
Tags
  • Treatment of Language Constructs

Specifies the treatment of new/new[] on failure.

Type { EXCEPTION, RETURN_NULL, DOESNT_FAIL }
Behavior
  • EXCEPTION : new/new[] are modeled as throwing an exception on failure
  • RETURN_NULL : new/new[] are modeled as returning NULL on failure
  • DOESNT_FAIL : new/new[] are assumed never to fail
Notes MALLOC_FAILURE_BEHAVIOR = DOESNT_FAIL takes precedence over this parameter.

Different C++ runtimes have different behaviors. We recommend that you write a small test program to see what your compiler does.

We do not recommend changing the NEW_FAILURE_BEHAVIOR setting between incremental analyses because the different handling of allocators in the parent and child analyses is likely to confuse users. Any new/new[] operators (or allocators modeled in terms of those operators) that are re-analyzed or newly-analyzed will be handled as specified by the updated setting, but the remainder will reflect the previous setting.

Factory Setting
  • NEW_FAILURE_BEHAVIOR = EXCEPTION
Tags
  • Treatment of Language Constructs

Specifies the treatment of lock acquisition and release functions such as pthread_mutex_lock on failure.

Type { RETURN_ERR, DOESNT_FAIL }
Behavior
  • RETURN_ERR : lock acquire/release functions are modeled as returning an error code on failure
  • DOESNT_FAIL : lock acquire/release functions are assumed never to fail
Notes It is dangerous to choose DOESNT_FAIL when using an API (such as POSIX threads) that allows lock acquire/release functions to fail spuriously.

We do not recommend changing the MUTEX_FAILURE_BEHAVIOR setting between incremental analyses because the different handling of lock operations in the parent and child analyses is likely to confuse users: any lock acquisition or release functions that are re-analyzed or newly-analyzed will be handled as specified by the updated setting, but the remainder will reflect the previous setting.

Factory Setting
  • MUTEX_FAILURE_BEHAVIOR = RETURN_ERR
Tags
  • Treatment of Language Constructs

Specifies an upper bound on the number of elements in an initializer.

Type integer
Behavior Initializers containing more elements than this limit will be ignored by the analysis.

A value of -1 means that there is no limit on initializer size

Notes Very large initializers can significantly affect analysis time.
Factory Setting
  • INITIALIZER_LIMIT = 512
Tags
  • Analysis resource/effort limit

Specifies an upper bound on the number of constructor calls CodeSonar is willing to make for each end of an array.

Type integer

Behavior Elements on each end of the array will be initialized individually. Elements in the middle will be initialized using a for-loop.

A value of -1 means that there is no limit on the number of calls.

Notes Number of calls can significantly affect analysis time.
Factory Setting
  • ARRAY_CTOR_CALL_LIMIT = 2
Tags
  • Analysis resource/effort limit

Specifies an upper bound on the depth of constexpr calls that can be folded

Type integer
Behavior constexpr calls deeper than this limit are considered non-foldable.

A value of -1 means that there is no limit.

Notes A large value can cause stack overflow.
Factory Setting
  • CONSTEXPR_CALL_DEPTH_LIMIT = 64
Tags
  • Analysis resource/effort limit

Specifies an upper bound on the depth of expression ASTs.

Type integer
Behavior For every expression AST, the analysis will only consider those parts of the AST that lie within this limit.

A value of -1 means that there is no limit.

Notes This is for preventing the front end or the analyzer from exhausting the stack when processing deeply nested expressions. For example, var + var2 + ... with 4000 additions.

Using "ulimit -s unlimited" in the shell from which the analysis runs will make it possible to use higher values.

Factory Setting
  • AST_DEPTH_LIMIT = 256
Tags
  • Analysis resource/effort limit

States that an implicit default clause should not be generated when a switch statement is being parsed.

Type { Yes, No }
Behavior
  • Yes : When a switch statement is being parsed, and there is no default clause in that statement, the switch expression is an enum type, and all of the values of all of the enumerants of that enum type are arguments of cases inside that switch statement, then no implicit default clause is to be generated for that switch statement.
  • No : When a switch statement is being parsed, and there is no default clause in that statement, then an implicit default clause is to be generated for that switch statement.
Notes This is to prevent the generation of false positives for a missing default clause when it has been demonstrated that the default situation can never occur.

This code only works for enum types whose values of enumerants are valid signed 64-bit integers.

Factory Setting
  • NO_IMPLICIT_DEFAULT_FOR_ENUM_SWITCH = No
Tags
  • Treatment of Language Constructs

Specifies an approximate upper bound on the number of CFG nodes a procedure can have.

Type integer
Behavior
  • -1 : There is no limit.
  • N (for N>=0) : The analysis will ignore procedures containing more than N CFG nodes.
Notes Very large procedures can cause CodeSonar to run out of memory.
Factory Setting
  • MAX_CFG_NODES = 100000
Tags
  • Analysis resource/effort limit

Specifies an approximate upper bound on the number of CFG edges a procedure can have.

Type integer
Behavior
  • -1 : There is no limit.
  • N (for N>=0) : The analysis will ignore procedures containing more than N CFG edges.
A value of -1 means that there is no limit.
Notes Very large procedures can cause CodeSonar to run out of memory.
Factory Setting
  • MAX_CFG_EDGES = 3000000
Tags
  • Analysis resource/effort limit

Specifies status message verbosity

Type { 0, 1, 2, 3, ..., 10 }
Behavior The higher the VERBOSITY value, the more status messages are issued. If the value is 0 or 1, messages will only be issued for fatal and near-fatal errors.

When the value is 6 or higher the Native Compilation Details Log will include some trace output for source patching (from directories specified with SOURCE_PATCH_DIRECTORIES) and source replacement (as specified with SOURCE_REPLACE_COMMAND and SOURCE_PATTERN_REPLACEMENT rules).

Notes In general, higher VERBOSITY values will result in longer running time; this effect is particularly marked in the analysis phase. If you are using higher settings to debug source patching or source replacement, we recommend doing the build and analysis in separate phases:
  • Set VERBOSITY to 6 and build the project with codesonar build.
  • Use the trace information in the Native Compilation Details Log to perform any necessary debugging, repeating the project build as necessary.
  • Once you are satisfied that the project has built correctly, set VERBOSITY to a lower value and analyze the project with codesonar analyze.
Factory Setting
  • VERBOSITY = 2
Tags
  • Analysis Properties

Specifies front end options to prepend to the front end command line, in front of any CodeSurfer build options specified.

Type a list of front-end options

Microsoft libc command line encoding rules apply (even on non-Windows systems).

Behavior See section Front-End Options for descriptions of the available options.
Notes The += operator will actually prepend to this preference (in all cases except for other parameters with names of the form *_PREPEND, the += operator appends). This means that if you have two EDG_FRONTEND_OPTIONS_PREPEND += statements in this file, the options in the second statement will be prepended to the options in the first statement.

If you are using this parameter to define a preprocessor macro whose definition contains spaces, double-quote the definition. Microsoft libc command line encoding rules apply (even on non-Windows systems). For example:

   EDG_FRONTEND_OPTIONS_PREPEND += -DM_INT_TYPE=int
   EDG_FRONTEND_OPTIONS_PREPEND += -DM_ULONG_TYPE="unsigned long int"
Factory Setting
  • EDG_FRONTEND_OPTIONS_PREPEND +=
Tags
  • Governs the Build/Analysis

Specifies front end options to append to the front end command line.

Type a list of front-end options

Microsoft libc command line encoding rules apply (even on non-Windows systems).

Behavior See section Front-End Options for descriptions of the available options.
Notes To add mydir to the list of directories searched for include files:
  EDG_FRONTEND_OPTIONS_APPEND += -Imydir

To set macro MYMACRO to the empty string (useful if you are getting a parser error complaining that MYMACRO is undefined):

  EDG_FRONTEND_OPTIONS_APPEND += -DMYMACRO= 

If you are using this parameter to define a preprocessor macro whose definition contains spaces, double-quote the definition. Microsoft libc command line encoding rules apply (even on non-Windows systems). For example:

   EDG_FRONTEND_OPTIONS_APPEND += -DM_CHAR_P_TYPE=char*
   EDG_FRONTEND_OPTIONS_APPEND += -DM_UINT_TYPE="unsigned int"
Factory Setting
  • EDG_FRONTEND_OPTIONS_APPEND +=
Tags
  • Governs the Build/Analysis

Specifies the amount of memory (in Megabytes) to allocate for managed IR objects.

Type integer
Behavior When the intermediate representation (IR) of the program being analyzed occupies approximately this much virtual address space, a portion of the IR will be paged out.

A low value may cause thrashing. A high value may cause the tool to exhaust virtual address space.

Notes Only a subset of the objects in memory are managed under this limit. CodeSonar has been observed to peak at approximately a gigabyte of additional address space on large programs, for default preferences.
Factory Setting
  • MANAGED_OBJECTS_RESIDENT_LIMIT = 256
Tags
  • Analysis resource/effort limit

Specifies the amount of memory (in Megabytes) to allocate for IO buffering.

Type integer
Notes A low value may cause thrashing. A high value may cause the tool to exhaust virtual address space.
Factory Setting
  • MANAGED_OBJECTS_IO_BUFFER_CAPACITY = 128
Tags
  • Analysis resource/effort limit

Specifies whether kernel page buffering should be enabled for files that are buffered in userland (according to MANAGED_OBJECTS_IO_BUFFER_CAPACITY).

Type { Yes, No }
Notes In order to avoid the cost of context switches and OS overhead, I/O buffers for managed objects are stored in userland. Having the OS kernel ALSO buffer the data can be wasteful if the file in question is only being used by one long-running process, since the userland buffer will obviate the need for the kernel buffer. Therefore, it can be desirable to simply disable kernel buffering in order that the OS's file system buffers can be used for other purposes.

With short lived processes, parallel analysis, or machines with large amounts of physical memory, kernel buffering is often beneficial. Kernel buffering is always enabled for front end processes since they are short lived.

Disabling kernel buffering can make other processes on the same computer seem more responsive.

Factory Setting
  • MANAGED_OBJECTS_IO_KERNEL_BUFFERING = Yes
Tags
  • Analysis Properties

Specifies whether checksums should be computed/checked when performing I/O. Generally only necessary if the hardware or network is unreliable.

Type { Yes, No }
Factory Setting
  • MANAGED_OBJECTS_IO_CHECKSUMS = No
Tags
  • Analysis Properties

Specifies whether in-memory pages of managed objects should be protected when not in immediate use.

Type { Yes, No }
Notes This is a debugging feature that typically causes a minor performance hit.
Factory Setting
  • MANAGED_OBJECTS_PROTECT_PAGES = No
Tags
  • Analysis Properties

Specifies the amount of memory (in Megabytes) to eagerly reserve for defragmentable allocations.

Type integer
Notes It is not recommended that users alter this unless advised to do so by CodeSecure.

Setting this to a large value can help avoid problems where large allocations are eventually unsatisfiable in long-running processes because of memory fragmentation. It interacts with other memory limits in the configuration file.

Factory Setting
  • ZFRAG_POOL_MINIMUM_CAPACITY = 256
Tags
  • Analysis resource/effort limit

Specifies a lower bound on allocation size (in bytes) below which degramentable memory will not be used.

Type integer
Behavior Defragmentable memory will be used only for allocations greater than or equal to this many bytes.
Notes It is not recommended that users alter this unless advised to do so by CodeSecure.

Defragmentable allocations have a space overhead of 32 bytes and time overhead linear in the amount of space allocated.

Factory Setting
  • ZFRAG_POOL_SMALL_THRESHOLD = 4096
Tags
  • Analysis resource/effort limit

When performing source replacement with SOURCE_PATTERN_REPLACEMENT, this is the size (in bytes) of the buffer used to hold the part of the source file currently undergoing matching.

Type integer
Notes File substrings whose length exceeds this value will never be matched, but too high a value can cause performance problems.
Factory Setting
  • MAX_MATCH_LENGTH = 4095
Tags
  • Analysis resource/effort limit
  • Operations on Un-Preprocessed Files

Specifies a regular expression based replacement to be carried out over the source code being analyzed (before parsing occurs).

Type A string of the form
     s/<pattern>/<replacement>/<flag>+

where:

  • The delimiter '/' can be replaced by any character (except null).
  • <pattern> is a Boost 'POSIX Extended Regular Expression' describing a pattern that could occur in the source code. The pattern can match multiple-line substrings in the source file. Double-quote <pattern> if you want it to include leading or trailing spaces.
  • <replacement> is the string that should replace source code substrings that match <pattern>. This can be a multiple-line string. Double-quote <replacement> if you want it to include leading or trailing spaces.
  • <flag> is a process modifier, corresponding to a Boost regular expression syntax option or flag as shown below.

Boost regular expression syntax_option_type correspondences:

  -M    no_mod_m 
  -S    no_mod_s 
  A     awk 
  B     basic 
  C     no_char_classes 
  D     sed 
  E     extended 
  G     grep 
  H     egrep 
  I     icase 
  L     literal 
  N     normal 
  O     collate 
  P     perl 
  Q     bk_plus_qm 
  S     mod_s 
  T     no_intervals 
  X     mod_x 

Boost regular expression match_flag_type correspondences:

  a     match_not_bob 
  c     match_continuous 
  d     match_default 
  e     match_extra 
  fa    format_all 
  fc    format_no_copy 
  fd    format_default 
  ff    format_first_only 
  fl    format_literal 
  fp    format_perl 
  fs    format_sed 
  m     match_single_line 
  n     match_not_null 
  z     match_not_eob 
  $     match_not_eol 
  *     match_any 
  .     match_not_dot_newline 
  <     match_not_bow 
  >     match_not_eow 
  ^     match_not_bol 
Notes SOURCE_PATTERN_REPLACEMENT rules are typically used to improve analysis result quality by
  • removing code that CodeSonar has difficulty understanding, or
  • adding code that clarifies program behavior, or
  • both.

Matching and replacement is carried out within each source file in the project, including those imported with codesonar import_sarif.py and codesonar add_source_files.py, before parsing occurs.

The updated text is saved in the store: the analysis back end never sees the original code. Note that this means that any error reporting will involve line numbers and text from the updated files. If you want to preserve line numbering correspondence between the original and updated files, design your <replacement> expressions so that the replacement string has the same number of lines as the source string matched by the <pattern> expression.

If no <pattern> is specified for a SOURCE_PATTERN_REPLACEMENT entry, the entry will be ignored with a warning.

The '/' character is the standard delimiter, but you can use a different delimiter if necessary. Occurrences of the delimiter inside <replacement> and <flag> must be escaped.

If you don't wish to use the delimited expression form at all, you can use the combination of SOURCE_PATTERN, SOURCE_REPLACEMENT, and SOURCE_MODIFIERS to specify a regular expression based replacement as described below.

For example,

  SOURCE_PATTERN_REPLACEMENT+=s/foo//I

specifies that all occurrences of "foo" in the source code, regardless of case, should be deleted. This is exactly equivalent to

  SOURCE_PATTERN_REPLACEMENT+=s*foo**I

(the same expression with a different delimiter), and to

  SOURCE_PATTERN=foo
  SOURCE_REPLACEMENT=
  SOURCE_MODIFIERS=I

You can specify as many SOURCE_PATTERN_REPLACEMENT entries as you want: replacements will be carried out in the same order that the entries are specified. All SOURCE_PATTERN_REPLACEMENTs will be carried out after all SOURCE_REPLACE_COMMANDs.

Tags
  • Operations on Un-Preprocessed Files

An alternative to SOURCE_PATTERN_REPLACEMENT for specifying regular expression based replacements in the source code.

Type SOURCE_PATTERN : Boost 'POSIX Extended Regular Expression'

SOURCE_REPLACEMENT : string

SOURCE_MODIFIERS : one or modifiers as described in the entry for SOURCE_PATTERN_REPLACEMENT

Behavior
  • SOURCE_PATTERN corresponds to the <pattern> part of a SOURCE_PATTERN_REPLACEMENT expression
  • SOURCE_REPLACEMENT corresponds to the <replacement> part of a SOURCE_PATTERN_REPLACEMENT expression
  • SOURCE_MODIFIERS corresponds to the <flag>+ part of a SOURCE_PATTERN_REPLACEMENT expression
Notes For the sake of execution order determination, a SOURCE_PATTERN/SOURCE_REPLACEMENT/SOURCE_MODIFIERS triple is treated as if it is a SOURCE_PATTERN_REPLACEMENT rule whose location is that of the next SOURCE_PATTERN rule, or at the end of the file if there is no such rule.

A SOURCE_REPLACEMENT entry is associated with the most-recently-seen SOURCE_PATTERN not already associated with a SOURCE_REPLACEMENT.

A SOURCE_REPLACEMENT or SOURCE_MODIFIERS entry with which no SOURCE_PATTERN can be associated is ignored with a warning.

A SOURCE_PATTERN with which no SOURCE_REPLACEMENT can be associated will associated with the empty string as its source replacement

A SOURCE_PATTERN with which no SOURCE_MODIFIERS can be associated will assumed to have no modifiers.

See the entry for SOURCE_PATTERN_REPLACEMENT for more information, including an example.

Tags
  • Operations on Un-Preprocessed Files

Specifies a text-replacement command to be executed on each source file being analyzed (before parsing occurs).

Type A string corresponding to a command that reads from stdin and writes to stdout.

Microsoft libc command line encoding rules apply (even on non-Windows systems).

Behavior The command will be executed on all source files in the CodeSonar project, including those imported with codesonar import_sarif.py and codesonar add_source_files.py, before parsing occurs.
Notes For example,
  SOURCE_REPLACE_COMMAND+=sed -e "s#@ *0x[0-9a-fA-F][0-9a-fA-F]*#/* CSURF: At removed */#"

specifies that all strings consisting of "@" followed by zero or more spaces followed by a hexadecimal number should be replaced by a comment reading "/* CSURF: At removed */"

You can specify as many SOURCE_REPLACE_COMMAND entries as you want: replacements will be carried out in the same order that the entries are specified.

All replacements specified with SOURCE_REPLACE_COMMAND will be carried out before any replacements specified with SOURCE_PATTERN_REPLACEMENT (or SOURCE_PATTERN, SOURCE_REPLACEMENT, SOURCE_MODIFIERS).

Analysis results are reported with respect to the modified versions of source files. Note that this means that any error reporting will involve line numbers and text from the updated files. If you want to preserve line numbering correspondence between the original and updated files, design your commands so that the replacement string has the same number of lines as the source string it replaces.

Here is an example of how to convert from a popular shift JIS variant to UTF8:

  SOURCE_REPLACE_COMMAND += $GTHOME/third-party/apr-iconv/inst/bin/apriconv -f cp932 -t utf-8
Tags
  • Operations on Un-Preprocessed Files

Specifies whether or not preprocessed versions of compilation units containing parse errors will be saved.

Type { Yes, No }
Notes If (deprecated) environment variable CS_PREPROCESS_IF_FAIL is set, its value will override the setting of this parameter.
Factory Setting
  • PREPROCESS_IF_FAIL = No
Tags
  • Analysis Properties

Specifies whether or not preprocessed versions of all compilation units will be saved.

Type { Yes, No }
Notes If (deprecated) environment variable CS_PREPROCESS_ALWAYS is set, its value will override the setting of this parameter.
Factory Setting
  • PREPROCESS_ALWAYS = No
Tags
  • Analysis Properties

Specifies a log file for hook* sub-commands.

Type file path
Behavior All process invocations inside a build, analyze, hook, hook-build, or hook-html sub-command will be logged to the specified file.
Notes For example:
    HOOK_LOG = /PATH/TO/log_file

This parameter has no effect on Windows systems.

If environment variable CS_HOOK_LOG is set, its value will override the setting of this parameter.

Tags
  • Additional Outputs from the Build/Analysis

Specifies whether or not to give users a chance to stop the build when we detect that the file system the project is being put on could cause reliability or performance problems.

Type { Yes, No }
Notes If environment variable GT_BADFS_NOSLEEP is set, its value will override the setting of this parameter.
Factory Setting
  • BADFS_NOSLEEP = No
Tags
  • Governs the Build/Analysis

Use to gather diagnostic information for CodeSonar support.

Type file path
Behavior If specified, diagnostic information will be saved to this file
Notes If environment variable FATSTATS_DUMP_FILE is set, its value will override the setting of this parameter.

For example:

     FATSTATS_DUMP_FILE = /PATH/TO/dump_file
Tags
  • Additional Outputs from the Build/Analysis

Limits the number of concurrent processes in the CodeSonar project build phase. Note that concurrent CodeSonar project building only occurs insofar as your normal build system invokes the compiler concurrently.

Type integer
Notes This limit is necessary because each concurrent compilation contributes to 5 files, and eventually the analysis needs to open all files simultaneously (estimated at 50 + 5 * NUMBER_OF_CONCURRENT_PARSES). Most systems have various limits on the number of files a process can open. Typical file descriptor limits for this platform are:
  • getrlimit(RLIMIT_NOFILE) = 8192
  • CodeSecure-Internal Limit = 4096

Increasing this value may cause the product to exhaust available file descriptors. Environments with low ulimits may need to decrease this value.

32-bit builds of CodeSonar set this limit to 2 by default, since 32-bit systems generally don't have enough RAM available to userland processes for running more than 2 concurrent parsers.

Factory Setting
  • MAX_CONCURRENT_BUILD_PROCESSES = 582
Tags
  • Analysis resource/effort limit

Seconds spent computing a metric for a single procedure before the operation is aborted.

Type integer
Behavior A value of -1 disables the timeout. Values of 0 or greater specify the maximum number of seconds (elapsed time) to spend computing a single procedure metric value. If the timeout occurs for a given procedure and metric, no metric value will be reported for that procedure and metric.
Notes Only applies to the following metrics:
  • Module Design Complexity (ivG)
  • Essential Complexity (evG)
Factory Setting
  • PROCEDURE_METRIC_TIMEOUT = 60

Provide paths to additional compiler model plugins.

Type string (representing a file path)
Notes CodeSonar will search in csurf/lib directory for user compiler models, then examine each compiler model specified in COMPILER_MODEL_PLUGINS. Compiler model plug-in names are prefixed with "lib". User compiler models override builtin compiler models that ship with CodeSonar.

For example:

     COMPILER_MODEL_PLUGINS += /PATH/TO/libsamplecm.so

Will add the compiler model samplecm.

Specifies whether or not native compilation log information will be sent to the hub.

Type { Yes, No }
Behavior
Notes Setting this to No will speed up the build phase.

If set to No, SEND_PARSE_LOG_TO_HUB will be disabled, too.

Factory Setting
  • SEND_HOOK_LOG_TO_HUB = Yes
Tags
  • Additional Outputs from the Build/Analysis

Specifies whether or not Parse Details Logs will be sent to the hub.

Type { Yes, No }
Behavior
Notes Setting this to No will speed up the build phase.

If SEND_HOOK_LOG_TO_HUB=No, CodeSonar behaves as if SEND_PARSE_LOG_TO_HUB=No (regardless of its actual setting).

Factory Setting
  • SEND_PARSE_LOG_TO_HUB = Yes
Tags
  • Additional Outputs from the Build/Analysis

Specifies directories under which patches to source are located.

Type string
Behavior For every directory D specified with SOURCE_PATCH_DIRECTORIES, patch files in subdirectory D/fname.x/ are applied to the source file named fname.x, where fname.x is the source file name as specified in the build command or #include statements, before any redirection (such as symbolic link resolution).
  • fname.x/ must be a direct subdirectory of D - it cannot be more deeply nested.
  • All patches in any such D/fname.x/ are applied to fname.x. There could be several such patches for a given file, whether because there are multiple SOURCE_PATCH_DIRECTORIES rules, because a single fname.x/ directory contains multiple patches, or both. The success or failure of any individual application does not affect the application of other patches.
  • If any part of a patch file fails, no part of that file is applied.
  • If there are multiple SOURCE_PATCH_DIRECTORIES rules, the directories are processed in reverse order: patches from the directory specified by the last SOURCE_PATCH_DIRECTORIES rule are applied first.

The successful application of one patch does not preclude attempts to subsequently apply additional patches: Every matching patch is attempted.

CodeSonar will instantiate variable $GTHOME with the path to the CodeSonar installation.

Notes This process is independent of the names of the patch files themselves - only the subdirectory name matters. Similarly, any from-file and to-file filenames specified in a patch file are ignored.
Factory Setting
  • SOURCE_PATCH_DIRECTORIES += $GTHOME/codesonar/libmodels/header_patches
Tags
  • Operations on Un-Preprocessed Files

Specifies whether or not the build/analysis will be incremental.

Type { Yes, No }
Behavior Let P be the name of the project. Then behavior is as follows.
  • Yes : Incrementality will be enabled for this build/analysis of P and all its descendant builds/analyses. If the project directory already contains a P.prj_files/ subdirectory, the current build/analysis will be an incremental child of the corresponding analysis, otherwise it will be a new base analysis.
  • No : Incrementality will not be enabled for this build/analysis - it will not have a parent, and cannot have any descendants. If the underlying software project is not being fully rebuilt, the CodeSonar project (and therefore any analysis of the project) will reflect only those parts that are being built.
Languages C/C++
Factory Setting
  • INCREMENTAL_BUILD = Yes
Tags
  • Governs the Build/Analysis

Dry runs are useful for counting lines and locating parse errors without running the CodeSonar analysis, and therefore without consuming licensed lines.

Type { Yes, No }
Behavior
  • Yes : CodeSonar will perform a "dry run" - it will count lines and report parse errors, but not perform the CodeSonar analysis. Because the analysis is not performed, no warnings are issued.
  • No : CodeSonar will perform the full build/analysis based on the specified build command.
Notes It can be useful to perform a dry run on a project before analyzing it to see whether it will exhaust your license (without actually exhausting your license).

Dry run results are presented in an Analysis page in the Web GUI. See Analysis: Dry Runs for more information.

CodeSonar does not require a license to perform a dry run.

Mixing dry runs and analysis runs for the same .prj_files directory (that is, the same project name) is not supported.

Do not use DRY_RUN if the hub is running version 3.5p1 or earlier: older hubs do not understand this parameter and will consume licensed lines regardless of its setting.

Factory Setting
  • DRY_RUN = No
Tags
  • Governs the Build/Analysis
  • Do Not Change Between Incremental Analyses or Stages of a Single Build/Analysis

Specifies the hub address CodeSonar should use.

Type String of the form <host>:<port>
Behavior CodeSonar will use the specified hub address.
  • If an address is specified on the command line, then it takes precedence.
  • The HUB_ADDRESS setting takes precedence over the CODESONAR_HUB environment variable.
  • Setting HUB_ADDRESS in template.conf affects the following codesonar commands: analyze, build, generate-hub-cert, hub-info, hub-start, hub-stop, relocate.
  • Setting HUB_ADDRESS in any other configuration file affects only the following commands, and only if they are using that file: analyze, build, relocate.
Notes For example:
  HUB_ADDRESS = 127.0.0.1:7340
  HUB_ADDRESS = 0.0.0.0:7340
  HUB_ADDRESS = [::1]:7340
  HUB_ADDRESS = [::]:7340

This parameter is ignored by the CodeSonar Windows build wizard.

Tags
  • Governs the Build/Analysis

Specifies how many concurrent upload streams may be used to upload warnings to the hub.

Type integer N such that 1 <= N <= 64
Behavior The analysis will employ up to this many simultaneous HTTP (or HTTPS) connections to the hub in order to upload warnings.
Notes Typically, only analyses with hundreds of thousands or more warnings are likely to benefit substantially from settings larger than 4. Usually this can only occur when performing checks related to a standard (e.g., MISRA) on code that has historically made no attempt to comply with that standard, leading to a large number of warnings. Values in the upper part of the permissible range are not suitable for use with hubs using default settings.

Higher settings will occupy more hub connection slots. The maximum number of slots is governed by the hub's Max Processes setting: you can modify this from the Settings: HTTP tab. If the hub is overloaded, there will be a warning in the footer about Max Processes being tripped.

A higher setting can reduce the amount of time spent flushing transactions to the hub after the analysis has finished. (To determine whether this is occurring, examine the Analysis Log for occurrences of "Flushing Transactions".)

You may wish to lower the HUB_UPLOAD_STREAMS setting for a particular project if:

  • other hub users also need to make use of hub connections, or
  • previous analyses of the project have not spent much time flushing transactions.

codesonar/bin/cshub_inspect may be used during analysis to monitor the hub's connections.

Factory Setting
  • HUB_UPLOAD_STREAMS = 4

Specifies a name for the analysis.

Type string
Behavior CodeSonar will label the analysis with the specified name. If a name is specified on the command line, then it takes precedence. Different analyses of the same project may have different names (e.g., to distinguish different versions).
Notes For example:
  ANALYSIS_NAME = Bob's Project Revision 472

CodeSonar will generate a name for the analysis if none is specified.

Tags
  • Analysis Properties

[Windows only] Specifies whether or not the CodeSonar launch daemon process will be created as a Windows service.

Type { Yes, No }
Behavior
  • Yes : any launch daemon started by "codesonar analyze" will be created as a Windows service, unless the -no-services option is specified.
  • No : launch daemons started by "codesonar analyze" will not be created as Windows services. This means that Windows will kill launch daemon processes when the user logs out, unless those processes were started from the Scheduled Tasks panel or by another Windows service.
Notes This parameter is ignored by the CodeSonar Windows build wizard and by the "codesonar install-launchd" command.

This parameter has no effect on non-Windows systems.

For example:

  USE_SERVICES = Yes
Tags
  • Governs the Build/Analysis

Specifies whether or not a "codesonar analyze" command will run the analysis in the codesonar analyze process itself.

Type { Yes, No }
Behavior
  • Yes : the "codesonar analyze" command runs the analysis itself.
  • No : a separate background process runs the analysis after control returns to the shell.
Notes This parameter is ignored by the CodeSonar Windows build wizard.

The CodeSonar Analysis Log in the web GUI will not be populated when this is set to "Yes". Instead, the log will show up on the analyze command's stdout and stderr. With factory settings, analysis processes run in the background and can continue running after the user has logged out.

The CodeSonar analysis will not implicitly start a launch daemon on behalf of a foreground analysis. For more information, see Letting codesonar analyze Start a Launch Daemon Implicitly.

Tags
  • Governs the Build/Analysis

Specifies whether or not the CodeSonar analysis will run in parallel mode. For local-requesting analyses (REQUEST_REMOTE_ANALYSIS_SLAVES=No), additionally specifies a bound below which the analysis master may automatically start new slaves as needed.

Type { Auto, Serial } or integer
Behavior
  • Serial with REQUEST_REMOTE_ANALYSIS_SLAVES=No: the analysis will take place in a single process. This will use the minimum amount of memory, but provides no parallelism or fault tolerance during analysis. It is useful on single-core systems and when resources are scarce.
  • Auto with REQUEST_REMOTE_ANALYSIS_SLAVES=No : CodeSonar will determine the appropriate maximum number of analysis slaves based on the total number of logical cores (Cores) on the machine and the amount of free physical memory (Mem) using the following formula: min(Cores, max(0, floor(Mem / MEMORY_PER_ANALYSIS_PROCESS ) - 1)). If the result is less than or equal to 1, a serial analysis is performed.
  • integer with REQUEST_REMOTE_ANALYSIS_SLAVES=No : if fewer than this many analysis slaves are running, CodeSonar will automatically start new analysis slaves as needed. Empirically, each process might use up to about 512MB of memory.
  • any setting (including Serial) with REQUEST_REMOTE_ANALYSIS_SLAVES=Yes : the analysis will be parallel and distributed. The precise setting of this parameter will not be used (except as described for MAX_ANALYSIS_SLAVES): the analysis master will request new slaves from the hub as it wants them, the hub in turn will request slaves from those analysis daemons that have not reached their analysis cloud process limits, and the master will accept the newly-started slaves up to the limit imposed by MAX_ANALYSIS_SLAVES.
Notes The optimal number of slave processes depends on available system resources; each slave process uses CPU cycles and memory.

Use ANALYSIS_MASTER_LISTEN_INTERFACE to specify the address on which the master process will listen.

Use DAEMON_SLAVES to specify how many slave processes CodeSonar may start to service web requests.

For more information, see the manual section on Parallelism in CodeSonar.

Factory Setting
  • ANALYSIS_SLAVES = Auto

Specifies whether or not automatically-started analysis slaves can be distributed through the hub's analysis cloud.

Type {Yes, No}
Behavior Determines how the analysis master will obtain additional slaves while it is running in analysis mode (to analyze the project).
  • Yes : if the analysis master determines that it requires additional analysis slaves, it will send a request to the hub. The hub determines which cslaunchd processes in its analysis cloud register have available capacity, then instructs each of these to start a new analysis slave.
  • No : if the analysis master determines that it requires additional analysis slaves, it will directly start one local slave at a time.
Notes Setting this to No is not sufficient to guarantee that an analysis will run entirely locally. If the master process is listening on an address to which other machines have access, it can accept manually-started slaves from those other machines. To eliminate this possibility, use a restrictive ANALYSIS_MASTER_LISTEN_INTERFACE setting.

For more information, see the manual sections on Parallelism in CodeSonar and Distributed Analysis.

Factory Setting
  • REQUEST_REMOTE_ANALYSIS_SLAVES = No

Specifies whether or not automatically-started analysis slaves can be distributed through the hub's analysis cloud while the analysis is running in daemon mode.

Type {Yes, No}
Behavior Determines how the analysis master will obtain additional slaves while it is running in daemon mode (to service requests from the hub, after the project has been built and analyzed).
  • Yes : if the analysis master determines that it requires additional analysis slaves, it will send a request to the hub. The hub determines which cslaunchd processes in its analysis cloud register have available capacity, then instructs each of these to start a new analysis slave.
  • No : if the analysis master determines that it requires additional analysis slaves, it will directly start one local slave at a time.
Notes Setting this to No is not sufficient to guarantee that an analysis will run entirely locally. If the master process is listening on an address to which other machines have access, it can accept manually-started slaves from those other machines. To eliminate this possibility, use a restrictive DAEMON_MASTER_LISTEN_INTERFACE setting.

For more information, see the manual sections on Parallelism in CodeSonar and Distributed Analysis.

Factory Setting
  • REQUEST_REMOTE_DAEMON_SLAVES = No

Specifies the launch daemon or daemons from which analysis slaves may be requested.

Type string or integer
Behavior Analysis slaves for remote-requesting analyses will only be requested from launch daemons that match the specified value, which can take any of the following forms.
  • Positive Integer N : Matches all launch daemons that are transitive descendants of the launchd group whose LDGroup ID is N.
  • Negative Integer -M : Matches the single launch daemon whose Launch Daemon ID is M.
  • (Integer 0 is not a valid setting.)
  • /Foo/Bar/* : Matches all launch daemons that are transitive descendants of the launch daemon group(s) whose LDGroup Path is /Foo/Bar. Case sensitive.
  • /Foo/Bar/user@machine : Matches all launch laemon(s) whose Parent LDGroup is /Foo/Bar, System User is user, and Machine is machine. Case sensitive.
Notes If security is a concern, then it is safer to use the positive integer and negative integer forms, since IDs are never reused, whereas multiple launch daemon groups can have the same path, and the truthfulness of the human readable launch daemon names (user@machine) cannot be verified by the hub.

It is advisable to only use trusted launch daemons. For best performance, it is advisable to only use launch daemons with reasonable performance and an ethernet quality network connection to the analysis master.

By default, all launch daemons on the hub will be used.

This setting has no effect if REQUEST_REMOTE_ANALYSIS_SLAVES=No.

Examples:

     REMOTE_ANALYSIS_SLAVES_LAUNCHDS += /siteA/*
     REMOTE_ANALYSIS_SLAVES_LAUNCHDS += /siteA/alex@sparky
     REMOTE_ANALYSIS_SLAVES_LAUNCHDS += 123
     REMOTE_ANALYSIS_SLAVES_LAUNCHDS += -123

For more information, see the manual section on Distributed Analysis.

Specifies the launch daemon or daemons from which analysis slaves may be requested while the analysis is running in daemon mode.

Type string or integer
Behavior Analysis slaves for remote-requesting analyses will only be requested from launch daemons that match the specified value, which can take any of the following forms.
  • Positive Integer N : Matches all launch daemons that are transitive descendants of the launchd group whose LDGroup ID is N.
  • Negative Integer -M : Matches the single launch daemon whose Launch Daemon ID is M.
  • (Integer 0 is not a valid setting.)
  • /Foo/Bar/* : Matches all launch daemons that are transitive descendants of the launch daemon group(s) whose LDGroup Path is /Foo/Bar. Case sensitive.
  • /Foo/Bar/user@machine : Matches all launch laemon(s) whose Parent LDGroup is /Foo/Bar, System User is user, and Machine is machine. Case sensitive.
Notes If security is a concern, then it is safer to use the positive integer and negative integer forms, since IDs are never reused, whereas multiple launch daemon groups can have the same path, and the truthfulness of the human readable launch daemon names (user@machine) cannot be verified by the hub.

It is advisable to only use trusted launch daemons. For best performance, it is advisable to only use launch daemons with reasonable performance and an ethernet quality network connection to the analysis master.

By default, all launch daemons on the hub will be used.

This setting has no effect if REQUEST_REMOTE_DAEMON_SLAVES=No.

Examples:

     REMOTE_DAEMON_SLAVES_LAUNCHDS += /siteA/*
     REMOTE_DAEMON_SLAVES_LAUNCHDS += /siteA/alex@sparky
     REMOTE_DAEMON_SLAVES_LAUNCHDS += 123
     REMOTE_DAEMON_SLAVES_LAUNCHDS += -123

For more information, see the manual section on Distributed Analysis.

Specifies that the CodeSonar analysis phase should be remote-managed, using the specified launch daemon.

Type string or integer
Behavior If no value is specified for this parameter, the analysis phase will be local-managed.

If a value <analysis-launchd> is specified, the analysis phase will be remote-managed by an analysis launch daemon matching <analysis-launchd>, which can take any of the following forms. At least one launch daemon matching <analysis-launchd> must already be running. If there are multiple matching launch daemons, the hub will select one.

  • Positive Integer N : Matches all launch daemons that are transitive descendants of the launchd group whose LDGroup ID is N.
  • Negative Integer -M : Matches the single launch daemon whose Launch Daemon ID is M.
  • (Integer 0 is not a valid setting.)
  • /Foo/Bar/* : Matches all launch daemons that are transitive descendants of the launch daemon group(s) whose LDGroup Path is /Foo/Bar. Case sensitive.
  • /Foo/Bar/user@machine : Matches all launch laemon(s) whose Parent LDGroup is /Foo/Bar, System User is user, and Machine is machine. Case sensitive.

When the analysis transitions to daemon mode, behavior depends on whether or not a separate launch daemon <archive_launchd> has been specified with REMOTE_DAEMON_LAUNCHD=<archive_launchd> or -remote-archive <archive-launchd>.

  • If so, data and control are transferred to <archive_launchd>, which will then service requests from the hub for information about the analysis.
  • Otherwise, <analysis-launchd> remains the analysis launch daemon after transition to daemon mode.
Notes For more information about remote-managed analysis, see Analysis: Local and Remote Analysis Management.

If security is a concern:

  • Use only trusted launch daemons.
  • Specify a positive or negative integer value for REMOTE_DAEMON_LAUNCHD rather than a path: IDs are never reused, whereas multiple launch daemon groups can have the same path, and the truthfulness of human-readable launch daemon names (user@machine) cannot be verified by the hub.

The CodeSonar build phase always takes place locally, regardless of this setting.

The -remote command line flag takes precedence over this setting.

Examples:

     REMOTE_ANALYSIS_LAUNCHD += /siteA/*
     REMOTE_ANALYSIS_LAUNCHD += /siteA/alex@sparky
     REMOTE_ANALYSIS_LAUNCHD += 123
     REMOTE_ANALYSIS_LAUNCHD += -123

Specifies that the CodeSonar analysis should be remote-managed after it transitions to daemon mode, using the specified launch daemon.

Type string or integer
Behavior If a value <archive-launchd> is specified, the analysis phase will be remote-managed by an analysis launch daemon matching <archive-launchd>, which can take any of the following forms. If there are multiple matching launch daemons, the hub will select one.
  • Positive Integer N : Matches all launch daemons that are transitive descendants of the launchd group whose LDGroup ID is N.
  • Negative Integer -M : Matches the single launch daemon whose Launch Daemon ID is M.
  • (Integer 0 is not a valid setting.)
  • /Foo/Bar/* : Matches all launch daemons that are transitive descendants of the launch daemon group(s) whose LDGroup Path is /Foo/Bar. Case sensitive.
  • /Foo/Bar/user@machine : Matches all launch laemon(s) whose Parent LDGroup is /Foo/Bar, System User is user, and Machine is machine. Case sensitive.

In the following cases, the analysis launch daemon will not change when the analysis transitions into daemon mode.

  • No value specified for this parameter (or -remote-archive).
  • REMOTE_DAEMON_LAUNCHD=<A> specified, but no launch daemon matching <A> is running.
  • REMOTE_ANALYSIS_LAUNCHD=<A> and REMOTE_DAEMON_LAUNCHD=<A> specified with identical values <A>. (If the two are specified with different but overlapping values REMOTE_ANALYSIS_LAUNCHD=<A> REMOTE_DAEMON_LAUNCHD=<B> CodeSonar will select the launch daemons for the analysis phase and daemon mode independently. If there is overlap between <A> and <B> then the same launch daemon may be selected for both, but this is not guaranteed.)

The -remote-archive command line flag takes precedence over this setting.

Notes For more information about remote-managed analysis, see Analysis: Local and Remote Analysis Management.

If security is a concern:

  • Use only trusted launch daemons.
  • Specify a positive or negative integer value for REMOTE_DAEMON_LAUNCHD rather than a path: IDs are never reused, whereas multiple launch daemon groups can have the same path, and the truthfulness of human-readable launch daemon names (user@machine) cannot be verified by the hub.

You can specify REMOTE_DAEMON_LAUNCHD=<archive_launchd> without specifying a value for REMOTE_ANALYSIS_LAUNCHD (or -remote-archive). When you do this, the analysis phase will run locally, then data and control will be transferred to <archive_launchd> for remote management in daemon mode.

The -remote-archive command line flag takes precedence over this setting.

Examples:

     REMOTE_DAEMON_LAUNCHD += /siteA/*
     REMOTE_DAEMON_LAUNCHD += /siteA/alex@sparky
     REMOTE_DAEMON_LAUNCHD += 123
     REMOTE_DAEMON_LAUNCHD += -123

Specifies the parent launchd group for new CodeSonar launch daemons.

Type string or integer
Behavior If a parent launchd group is not specified in a command that creates a launch daemon, this value will be used. If neither is specified, the root launchd group will be used. (In all cases, the command will fail if the authorizing user does not have LAUNCHDGROUP_ADD_CHILD permission for the launchd group in question.)

The parent launchd group G can be specified as either an integer or a string.

Notes This parameter is only used in creating new launch daemons: those whose identifying property tuples are not already present in the analysis cloud register). You can change the parent launchd group for an existing launch daemon from the corresponding Launchd Group page.

Specifies extra key data for CodeSonar launch daemon identification.

Type string
Behavior If a launch daemon key is not specified in a command that creates or specifies a launch daemon, this value will be used. If neither are specified, the empty string will be used.
Notes Usually, specifying a launchd key is unnecessary and CodeSonar can distinguish launch daemons by the other members of the launch daemon's identifying property tuple [Machine, System User, Hub User, Installation, Key].

However, in some circumstances, the other elements of the identifying tuple may not be sufficient to distinguish two launch daemons that should be handled separately.

  • If two machines A and B have the same name and CodeSonar installation location, a user who is running analyses on both A and B should specify distinct launch daemon keys for each so that the hub can distinguish the launch daemons.
  • If CodeSonar is being used from multiple chroot environments on the same machine, each chroot should specify a distinct launchd key to identify itself.
  • The situation is similar for tools like clearcase. If the .prj_files directory is being stored inside a view (not recommended for performance reasons), then each view should identify itself using a distinct launchd key.

Specifies an upper bound on the total number of CodeSonar analysis slaves.

Type integer
Behavior The upper bound on the number of CodeSonar analysis slaves is set to the higher of this value and the value of ANALYSIS_SLAVES (either the explicit value given by the user or the value computed for Auto).

If the current number of analysis slaves matches this upper bound, any attempt to attach a new slave to the analysis will fail.

For local-requesting analyses (REQUEST_REMOTE_ANALYSIS_SLAVES=No), this limit only affects manually-started analysis slaves: the upper bound is always greater than or equal to the value of ANALYSIS_SLAVES, so the analysis master will never automatically start any new slaves under these conditions.

For remote-requesting analyses (REQUEST_REMOTE_ANALYSIS_SLAVES=Yes), this limit affects both manually-started analysis slaves and slaves started due to a remote request.

Notes If the analysis is running serially (either because ANALYSIS_SLAVES=Serial, or because ANALYSIS_SLAVES=Auto and REQUEST_REMOTE_ANALYSIS_SLAVES=No and CodeSonar determined that it should run serially), MAX_ANALYSIS_SLAVES has no effect.
Factory Setting
  • MAX_ANALYSIS_SLAVES = 256

Specifies whether or not CodeSonar will service web requests in parallel mode. For local-requesting analyses (REQUEST_REMOTE_DAEMON_SLAVES=No), additionally specifies a bound below which the daemon master may automatically start new slaves as needed.

Type { Auto, Serial } or integer
Behavior
  • Serial with REQUEST_REMOTE_DAEMON_SLAVES=No : web requests are serviced by a single process.
  • Auto with REQUEST_REMOTE_DAEMON_SLAVES=No : CodeSonar will determine the appropriate maximum number of slaves based on the total number of logical cores (Cores) on the machine and the amount of free physical memory (Mem) using the following formula: min(Cores, max(0, floor(Mem / MEMORY_PER_ANALYSIS_PROCESS) - 1)). If the result is less than or equal to 1, web requests are serviced by a single process.
  • integer with REQUEST_REMOTE_DAEMON_SLAVES=No : if fewer than this many slaves are running to service web requests, the analysis master will automatically start/request new slaves as needed.
  • any setting (including Serial) with REQUEST_REMOTE_DAEMON_SLAVES=Yes : the daemon will be parallel and distributed. The precise setting of this parameter will not be used (except as described for MAX_DAEMON_SLAVES): the daemon master will request new slaves from the hub as it wants them, the hub in turn will request slaves from those analysis daemons that have not reached their analysis cloud process limits, and the master will accept the newly-started slaves up to the limit imposed by MAX_DAEMON_SLAVES.
Notes Multiple daemon slaves will only be required if multiple web requests are pending concurrently.

The optimal number of slave processes depends on available system resources; each slave process uses CPU cycles and memory.

This parameter is analogous to ANALYSIS_SLAVES, but determines the degree of parallelism for CodeSonar in daemon mode while ANALYSIS_SLAVES determines the degree of parallelism for the analysis.

Use DAEMON_MASTER_LISTEN_INTERFACE to specify the address on which the master process will listen.

For more information, see the manual sections on Parallelism in CodeSonar and Distributed Analysis.

Factory Setting
  • DAEMON_SLAVES = Auto

Specifies an upper bound on the total number of CodeSonar daemon slaves.

Type integer
Behavior The upper bound on the number of CodeSonar daemon slaves is set to the higher of this value and the value of DAEMON_SLAVES (either the explicit value given by the user or the value computed for Auto).

If the current number of daemon slaves matches this upper bound, any attempt to attach a new slave to the daemon master will fail.

For local-requesting analyses (REQUEST_REMOTE_DAEMON_SLAVES=No), this limit only affects manually-started daemon slaves: the upper bound is always greater than or equal to the value of DAEMON_SLAVES, so the daemon master will never automatically start any new slaves under these conditions.

For remote-requesting analyses (REQUEST_REMOTE_DAEMON_SLAVES=Yes), this limit affects both manually-started daemon slaves and slaves started due to a remote request.

Notes If the analysis is running serially in daemon mode (either because DAEMON_SLAVES=Serial, or because DAEMON_SLAVES=Auto and REQUEST_REMOTE_DAEMON_SLAVES=No and CodeSonar determined that it should run serially), MAX_DAEMON_SLAVES has no effect.
Factory Setting
  • MAX_DAEMON_SLAVES = 256

Used to compute analysis slave and daemon slave limits when other settings specify that these computations should be made automatically.

Type integer
Behavior When set to integer N, on a system with R megabytes (MB) available memory and C logical cores, CodeSonar will set the maximum number of slaves to min(C, max(0, floor(R/N) - 1)) in cases where an automatically-computed analysis slave or daemon slave limit is required.

For analysis slaves, an automatically-computed limit is required if:

For daemon slaves, an automatically-computed limit is required if:

In all other cases, this parameter has no effect.

Notes This parameter is used for automatically computing limits on the number of analysis and daemon slaves. It does not affect the memory consumption of individual CodeSonar processes. Rather, it represents an estimate of that consumption.

As the setting of this parameter decreases, the slave limit increases in a stepped manner up to the upper bound provided by the C (number of logical cores) term in the computation formula. Note that the stepping imposed by the rounding down of the R/N term means that small adjustments in this setting may not result in a change to the computed limit.

Depending on the relationship between R and C, too low a setting - and thus too high a slave limit - may result in the system runing out of memory.

Conversely, too high a setting will result in a slave limit that is lower than necessary, which could cause the analysis to run more slowly than it would with more slaves.

Factory Setting
  • MEMORY_PER_ANALYSIS_PROCESS = 512

Specifies how many units of work may be failed before the master should terminate the analysis.

Type integer
Behavior
  • negative N: keep going no matter how many units of work fail. UNIT_OF_WORK_RETRIES will still limit the number of times any individual unit of work is retried
  • non-negative N: Fail after N units of work fail.
Factory Setting
  • MAX_FAILED_UNITS_OF_WORK = -1

Specifies how many times the analysis master should retry a failing unit of work before giving up on it and moving on.

Type integer
Behavior
  • negative N: keep retrying the unit of work forever.
  • zero: do not retry; move on after the first failure.
  • positive N: retry the unit of work N times before moving on.
Notes When CodeSonar is running in parallel, slaves may experience various modes of failure, such as network socket disconnection or the slave process being killed by the user. Some of these modes of failure are intermittent and indepent of the particular unit of work being analyzed. Therefore, retrying a failed unit of work might be fruitful. On the other hand, if the slave is crashing due to the content of a particular unit of work, then repeated attempts on that unit of work will likely result in repeating crashes.

With factory settings, CodeSonar retries a failing unit of work up to three times before giving up on that unit of work and moving on. This strikes a balance between retrying forever and giving up immediately.

For more information, see the manual sections on Parallelism in CodeSonar and the CodeSonar Plug-In API.

Factory Setting
  • UNIT_OF_WORK_RETRIES = 3

Specifies the address on which the analysis master process will listen while it is in analysis mode (to analyze the project).

Type String of the form <host> or <host>:<port>
Behavior
  • If <port> is specified and available, the analysis master will listen on <host>:<port>.
  • If <port> is specified but unavailable, the master will not run and the analysis will crash. There will be an error message in the Analysis Log.
  • If <port> is not specified, the analysis master will listen on the interface specified by <host>, on a port allocated by the operating system. Inspect the analysis log to identify the port that is being used.
Notes Examples:
     ANALYSIS_MASTER_LISTEN_INTERFACE=0.0.0.0
     ANALYSIS_MASTER_LISTEN_INTERFACE=0.0.0.0:1234
     ANALYSIS_MASTER_LISTEN_INTERFACE=127.0.0.1
     ANALYSIS_MASTER_LISTEN_INTERFACE=127.0.0.1:1234
     ANALYSIS_MASTER_LISTEN_INTERFACE=[::]
     ANALYSIS_MASTER_LISTEN_INTERFACE=[::]:1234
     ANALYSIS_MASTER_LISTEN_INTERFACE=[::1]
     ANALYSIS_MASTER_LISTEN_INTERFACE=[::1]:1234
     ANALYSIS_MASTER_LISTEN_INTERFACE=mymachine
     ANALYSIS_MASTER_LISTEN_INTERFACE=mymachine:1234

For distributed analysis, ensure that <host> specifies an interface that other machines in the analysis cloud will be able to communicate with.

With factory settings, ANALYSIS_MASTER_LISTEN_INTERFACE is not specified. In this case, it is determined based on the value of REQUEST_REMOTE_ANALYSIS_SLAVES.

  • 0.0.0.0 or [::] if REQUEST_REMOTE_ANALYSIS_SLAVES=Yes
  • 127.0.0.1 or [::1] if REQUEST_REMOTE_ANALYSIS_SLAVES=No

Specifies whether analysis master<->slave sockets should use TLS.

Type {Yes, No}
Behavior
  • Yes : TLS sockets will be used for communications between analysis masters and slaves. This imposes some additional computational cost.
  • No : Plain TCP sockets will be used for communications between analysis masters and slaves.
  • unspecified : TLS sockets will be used if and only if HTTPS is enabled on the hub and ANALYSIS_MASTER_LISTEN_INTERFACE is not 127.0.0.1 ([::1] for IPv6). (Visit the hub's Configure HTTPS page to view or modify its HTTPS enabling status.)
Notes Set this to Yes if secrecy is desired.

Two way authentication takes place regardless of the ANALYSIS_MASTER_USE_TLS setting, but is vulnerable to snooping when TLS is not used.

The master will generate a fresh 2048 bit RSA private key for each master analysis process. The corresponding certificate is provided to all slaves on startup.

The number of seconds a slave will wait for network operations with the master to time out.

Type integer
Behavior
  • 0 : There is no timeout.
  • N (for N>0) : A slave will exit if a network operation does not make progress for N seconds.
Notes There are several reasons why timeouts can occur.
  • The network link is not functioning.
  • The master has lost power, blue screened, panicked, etc.
  • The master has disconnected the slave, but the slave never became aware of it.
  • The master has not given the slave any new work in the last N seconds (the slave is idle for a long time).
  • The master process is busy and isn't responding in a timely fashion.
  • The slave has asked the master to do work that takes longer than the timeout.

The latter two situations are unlikely to occur with the factory setting.

Timing out slaves that have been idle for a long time allows wasted system resources to be relinquished and put to better use. New slaves will be started if more slaves are desired.

When certain types of network errors occur, this setting can be important for preventing orphaned slaves from waiting indefinitely on a master that no longer exists.

Slaves obtain this timeout setting from the analysis master. However, slaves use the very connection that the timeout affects to download the timeout setting from the master. Before the timeout setting has been downloaded from the master, the effective timeout is the one in the template.conf file in the slave's installation. The startup window that uses the slave's template.conf setting is typically short.

For more information, see the manual section on Parallelism in CodeSonar.

Factory Setting
  • ANALYSIS_SLAVE_TIMEOUT = 1800

Specifies how often the master will broadcast keepalive requests to all slaves.

Type integer
Behavior
  • 0 : Keepalive requests are disabled.
  • N (for N>0) : A keepalive will be broadcast every N seconds. If it is time to broadcast another request, but nothing has been received from a slave since the previous request, then the slave is disconnected for being non-responsive.
Notes There are several reasons why keepalives can fail.
  • The network link is not functioning.
  • The slave has lost power, blue screened, panicked, etc.
  • The slave has disconnected the master, but the master never became aware of it.
  • The slave process got busy doing something for longer than this period.

The latter two situations are unlikely to occur with the factory setting.

This setting can be important to prevent the master from starving because it is waiting on slaves that no longer exist.

For more information, see the manual section on Parallelism in CodeSonar.

Factory Setting
  • ANALYSIS_MASTER_KEEPALIVE_PERIOD = 3000

Specifies the address on which the daemon master process will listen.

Type String of the form <host> or <host>:<port>
Behavior
  • If <port> is specified and available, the daemon master will listen on <host>:<port>.
  • If <port> is specified but unavailable, the daemon master will not run: the daemon will not start and requests will not be serviced. There will be an error message in the Analysis Log.
  • If <port> is not specified, the daemon master will listen on the interface specified by <host>, on a port allocated by the operating system. Inspect the analysis log to identify the port that is being used.
Notes Examples:
     DAEMON_MASTER_LISTEN_INTERFACE=0.0.0.0
     DAEMON_MASTER_LISTEN_INTERFACE=0.0.0.0:1234
     DAEMON_MASTER_LISTEN_INTERFACE=127.0.0.1
     DAEMON_MASTER_LISTEN_INTERFACE=127.0.0.1:1234
     DAEMON_MASTER_LISTEN_INTERFACE=[::]
     DAEMON_MASTER_LISTEN_INTERFACE=[::]:1234
     DAEMON_MASTER_LISTEN_INTERFACE=[::1]
     DAEMON_MASTER_LISTEN_INTERFACE=[::1]:1234
     DAEMON_MASTER_LISTEN_INTERFACE=mymachine
     DAEMON_MASTER_LISTEN_INTERFACE=mymachine:1234

For distributed analysis, ensure that <host> specifies an interface that other machines in the analysis cloud will be able to communicate with.

With factory settings, DAEMON_MASTER_LISTEN_INTERFACE is not specified. In this case, it is determined based on the value of REQUEST_REMOTE_DAEMON_SLAVES.

  • 0.0.0.0 or [::] if REQUEST_REMOTE_DAEMON_SLAVES=Yes
  • 127.0.0.1 or [::] if REQUEST_REMOTE_DAEMON_SLAVES=No

Specifies whether daemon master<->slave sockets should use TLS.

Type {Yes, No}
Behavior
  • Yes : TLS sockets will be used for communications between analysis masters and slaves. This imposes some additional computational cost.
  • No : Plain TCP sockets will be used for communications between analysis masters and slaves.
  • unspecified : TLS sockets will be used if and only if HTTPS is enabled on the hub and DAEMON_MASTER_LISTEN_INTERFACE is not 127.0.0.1 ([::1] for IPv6). (Visit the hub's Configure HTTPS page to view or modify its HTTPS enabling status.)
Notes Set this to Yes if secrecy is desired.

Two way authentication takes place regardless of the DAEMON_MASTER_USE_TLS setting, but is vulnerable to snooping when TLS is not used.

The master will generate a fresh 2048 bit RSA private key for each master analysis process. The corresponding certificate is provided to all slaves on startup.

The number of seconds a slave will wait for network operations with the master to time out.

Type integer
Behavior
  • 0 : There is no timeout.
  • N (for N>0) : A slave will exit if a network operation does not make progress for N seconds.
Notes There are several reasons why timeouts can occur.
  • The network link is not functioning.
  • The master has lost power, blue screened, panicked, etc.
  • The master has disconnected the slave, but the slave never became aware of it.
  • The master has not given the slave any new work in the last N seconds (the slave is idle for a long time).
  • The master process is busy and isn't responding in a timely fashion.
  • The slave has asked the master to do work that takes longer than the timeout.

The latter two situations are unlikely to occur with the factory setting.

Timing out slaves that have been idle for a long time allows wasted system resources to be relinquished and put to better use. New slaves will be started if more slaves are desired.

When certain types of network errors occur, this setting can be important for preventing orphaned slaves from waiting indefinitely on a master that no longer exists.

Slaves obtain this timeout setting from the analysis master. However, slaves use the very connection that the timeout affects to download the timeout setting from the master. Before the timeout setting has been downloaded from the master, the effective timeout is the one in the template.conf file in the slave's installation. The startup window that uses the slave's template.conf setting is typically short.

For more information, see the manual section on Parallelism in CodeSonar.

Factory Setting
  • DAEMON_SLAVE_TIMEOUT = 1800

Specifies how often the master will broadcast keepalive requests to all slaves.

Type integer
Behavior
  • 0 : Keepalive requests are disabled.
  • N (for N>0) : A keepalive will be broadcast every N seconds. If it is time to broadcast another request, but nothing has been received from a slave since the previous request, then the slave is disconnected for being non-responsive.
Notes There are several reasons why keepalives can fail.
  • The network link is not functioning.
  • The slave has lost power, blue screened, panicked, etc.
  • The slave has disconnected the master, but the master never became aware of it.
  • The slave process got busy doing something for longer than this period.

The latter two situations are unlikely to occur with the factory setting.

This setting can be important to prevent the master from starving because it is waiting on slaves that no longer exist.

For more information, see the manual section on Parallelism in CodeSonar.

Factory Setting
  • DAEMON_MASTER_KEEPALIVE_PERIOD = 3000

Allows warnings to be modified before they are submitted to the hub, or discarded entirely without being submitted.

Type Zero or more patterns, each consisting of an <action> followed by one or more <rule>s.

<action> is one of:

  • discard
  • allow
  • priority:=<priority>
  • owner:=<owner>

<rule> is one of:

  • categories <matcher> <string>
  • class <matcher> <string>
  • compilation_unit <matcher> <string>
  • file <matcher> <string>
  • is_sysinclude
  • language <matcher> <string>
  • line= <int>
  • line_contents <matcher> <string>
  • listing_xml <matcher> <string>
  • path_start_procedure <matcher> <string>
  • path <matcher> <string>
  • procedure <matcher> <string>
  • procedure_typed <matcher> <string>
  • reachable= <int>
  • starts_in_source_libraries= <int>

and <matcher> is one of:

Behavior Depends on the <action> and the <rule>s.

<action> is interpreted as follows.

  • discard : warnings matching the rules will be discarded instead of being submitted to the hub.
  • allow : warnings matching the rules will be submitted to the hub, even if they matched a previous "discard"
  • priority:=<priority> : warnings matching the rules will have their Priority set to <priority> before being submitted to the hub. If <priority> is not a legal priority value on the hub, the hub will be updated to add <priority> to the list of priority values.
  • owner:=<owner> : warnings matching the rules will have their Owner set to <owner> before being submitted to the hub. If <owner> is not an active user on the hub, the pattern has no effect.

Each <rule> specifies a condition that a warning must satisfy in order to match the rule. The different <rule> types represent constraints on various warning properties.

  • categories : Categories
  • class : Class
  • compilation_unit : Compilation Unit - the full path name of the top level source file containing the warning point. Use system-appropriate path separators; escape special characters (including backslashes) if enclosing the path in quotes "".
  • file : the basename of Warning File
  • is_sysinclude matches warnings for which Listing XML lies entirely within system include files (as designated by SYSTEM_INCLUDE_PATHS), with no user code involved.
  • language : Language
  • line : Line
  • line_contents : the contents of the source line on which the warning was issued (that is, the Line'th line of Warning File)
  • listing_xml : Listing XML
  • path : the full path name of Warning File. Use system-appropriate path separators; escape special characters (including backslashes) if enclosing the path in quotes "".
  • path_start_procedure : the first procedure in Listing
  • procedure : Procedure (cs_pdg_friendly_name())
  • procedure_typed : The cs_pdg_procedure_name(). This depends on the warning Language. If C++, rules specify constraints on the fully typed rendering of the warning Procedure (including template instantiations, name qualification, and argument types; the rendering is also whitespace-sensitive). If C, specifies a constraint on the warning Procedure (so has the same behavior as a procedure rule).
  • reachable : whether or not the first function in Listing XML belongs to set REACHABLE_FROM_ROOTS_EXTENDED. Set to non-zero to specify that the rule applies only to warnings for which the first function is in this set; zero to specify that the rule only applies to warnings for which the first function is NOT in this set. CodeSonar will issue an alert if there are one or more WARNING_FILTER reachable rules but set REACHABLE_FROM_ROOTS is empty.
  • starts_in_source_libraries : whether or not the first function in Listing XML belongs to set CONSERVATIVELY_REACHABLE_FROM_SOURCE_LIBRARIES. Set to non-zero to specify that the rule applies only to warnings for which the first function is in this set; zero to specify that it applies only to warnings for which the first function is not in this set.
Notes WARNING_FILTER rules are applied to all warnings submitted by the CodeSonar analysis, including those that originate from imported SARIF files.

If there are two or more <rule>s in a pattern, the pattern <action> will be applied to warnings that match ALL of the rules.

If WARNING_FILTER settings specify that all warnings of a specific class should be discarded (with no exceptions from subsequent "allow" patterns), CodeSonar will not even carry out checks for that class. This will generally lead to time savings.

Most configuration presets are composed primarily of WARNING_FILTER "allow" rules, plus the supporting configuration settings required by the allowed warning classes.

String guidelines:

  • Strings that contains spaces must be quoted.
  • Characters in quoted strings that must be backslash-escaped: " and \
  • Newlines and tabs are represented as \n and \t, respectively.

Example 1: Discard all warnings belonging to any class with a LANG.MEM.* mnemonic.

  WARNING_FILTER += discard categories:LANG.MEM

Example 2: Discard all warnings whose class is Buffer Underrun, Type Underrun, or any user-defined class with "underrun" in its name.

  WARNING_FILTER += discard class:underrun

Example 3: Discard all warnings in any compilation unit whose top level file has basename mylib.cpp

  WARNING_FILTER += discard compilation_unit:/mylib.cpp

Example 4: Assign all warnings in file mylib.h to alex. If the hub has no user called alex, this rule has no effect.

  WARNING_FILTER += owner:=alex file=mylib.h

Example 5: Assign all warnings in system include files to sandy. If the hub has no user called sandy, this rule has no effect.

  WARNING_FILTER += owner:=sandy is_sysinclude

Example 6: Discard all warnings in C compilation units.

  WARNING_FILTER += discard language=c

Example 7: Discard all warnings issued at line 47 (of any file).

  WARNING_FILTER += discard line=47

Example 8: Discard all warnings whose associated Listing XML contains substring 'callPrinter'.

  WARNING_FILTER += discard listing_xml:callPrinter

Example 9: For all warnings issued in procedure writeThis(), set Priority to "Incredible". For all warnings issued in any other procedure whose name contains substring 'write', set priority to "P0: High"

  • procedure writeThis() will match both rules, so the rule order is important.
  • if "Incredible" was not already a candidate Priority value on the hub, it will be added to the list of candidates once a warning with "Incredible" Priority is submitted.
  WARNING_FILTER += priority:="P0: High" procedure:write
  WARNING_FILTER += priority:="Incredible" procedure=writeThis

Example 10: In C compilation units, discard all warnings issued in a procedure whose name contains substring 'gridproc'. In C++ compilation units, discard all warnings issued in a procedure such that the fully-qualified procedure name contains substring 'gridproc', or one of the argument type names contains substring gridproc.

  WARNING_FILTER += discard procedure_typed:gridproc

Example 11: In C++ compilation units, discard all warnings issued in a procedure with exactly one, unsigned int, argument. Procedures with more complex types may also have "(unsigned int)" as a substring of their fully-typed name (for example, because of templating): warnings issued in those procedures will also be discarded. In C compilation units, this rule will not match anything.

  WARNING_FILTER += discard procedure_typed:"(unsigned int)"

Example 12: In C++ compilation units, discard all warnings issued inside the procedures with the specified (fully-qualified) names. If you are specifying a complicated procedure_typed argument (like these ones), it can be useful to check the exact rendering of the procedure name with cs_pdg_procedure_name() before creating the WARNING_FILTER rule.

  WARNING_FILTER += discard procedure_typed:"std::vector<int, std::allocator<int>>::operator [](unsigned long)"
  WARNING_FILTER += discard procedure_typed:"only_param::return_S(int *)"

Example 13: Discard all warnings in procedures that are not reachable from main() (this REACHABILITY_ROOTS rule matches any function called main occurring in any file in the project).

  REACHABILITY_ROOTS = :main
  WARNING_FILTER += discard reachable=0

Example 14: Discard all warnings whose Listing begins with a procedure whose name is "ignoreme" followed by one or more digits (eg ignoreme1(), ignoreme275(), ...).

  WARNING_FILTER += discard path_start_procedure=~ignoreme\d+

Example 15: Discard all warnings in files whose path includes directory ignoredir. Using two rules with different path separators provides (some) portability.

  WARNING_FILTER += discard path:/ignoredir/
  WARNING_FILTER += discard path:\ignoredir\ 

Example 16: Discard all warnings in files whose path includes directory "ignore dir" (note the space). Using two rules with different path separators provides (some) portability. Patterns containing spaces must be quoted, and backslashes must be escaped in quoted strings.

  WARNING_FILTER += discard path:"/ignore dir/"
  WARNING_FILTER += discard path:"\\ignore dir\\"

Example 17: Discard all warnings occurring on a source line that contains the text "do not issue a warning here" (presumably in a comment).

  WARNING_FILTER += discard line_contents:"do not issue a warning here"

Example 18: Discard all warnings for which the first function in Listing XML is a library model or is called (directly or transitively) by a library model.

  WARNING_FILTER += discard starts_in_source_libraries=1

The following checks are enabled by default. To discard warnings of a particular class, use the corresponding "discard" rule.

 (C and C++ warning classes) 
    WARNING_FILTER += discard class="Arctangent Domain Error" 
    WARNING_FILTER += discard class="Argument Too High" 
    WARNING_FILTER += discard class="Argument Too Low" 
    WARNING_FILTER += discard class="Blocking in Critical Section" 
    WARNING_FILTER += discard class="Buffer Overrun" 
    WARNING_FILTER += discard class="Buffer Underrun" 
    WARNING_FILTER += discard class="Cast Alters Value" 
    WARNING_FILTER += discard class="Coercion Alters Value" 
    WARNING_FILTER += discard class="Command Injection" 
    WARNING_FILTER += discard class="Comparison of Unrelated Pointers" 
    WARNING_FILTER += discard class="Copy-Paste Error" 
    WARNING_FILTER += discard class="Dangerous Function Cast" 
    WARNING_FILTER += discard class="Deadlock" 
    WARNING_FILTER += discard class="Division By Zero" 
    WARNING_FILTER += discard class="Double Close" 
    WARNING_FILTER += discard class="Double Free" 
    WARNING_FILTER += discard class="Double Initialization" 
    WARNING_FILTER += discard class="Double Lock" 
    WARNING_FILTER += discard class="Double Unlock" 
    WARNING_FILTER += discard class="Empty Branch Statement" 
    WARNING_FILTER += discard class="Empty for Statement" 
    WARNING_FILTER += discard class="Empty if Statement" 
    WARNING_FILTER += discard class="Empty switch Statement" 
    WARNING_FILTER += discard class="Empty while Statement" 
    WARNING_FILTER += discard class="Encryption without Padding" 
    WARNING_FILTER += discard class="File Open for Both Read and Write" 
    WARNING_FILTER += discard class="File System Race Condition" 
    WARNING_FILTER += discard class="Float Division By Zero" 
    WARNING_FILTER += discard class="Floating Point Domain Error" 
    WARNING_FILTER += discard class="Floating Point Range Error" 
    WARNING_FILTER += discard class="Format String Injection" 
    WARNING_FILTER += discard class="Format String Type Error" 
    WARNING_FILTER += discard class="Format String" 
    WARNING_FILTER += discard class="Free Null Pointer" 
    WARNING_FILTER += discard class="Function Call Has No Effect" 
    WARNING_FILTER += discard class="Gamma on Zero" 
    WARNING_FILTER += discard class="GlobalHandle on GMEM_FIXED Memory" 
    WARNING_FILTER += discard class="GlobalLock on GMEM_FIXED Memory" 
    WARNING_FILTER += discard class="GlobalUnlock on GMEM_FIXED Memory" 
    WARNING_FILTER += discard class="Hardcoded Authentication" 
    WARNING_FILTER += discard class="Hardcoded Crypto Key" 
    WARNING_FILTER += discard class="Hardcoded Crypto Salt" 
    WARNING_FILTER += discard class="Hardcoded Seed in PRNG" 
    WARNING_FILTER += discard class="Ignored Return Value" 
    WARNING_FILTER += discard class="Inappropriate C Atomic Initialization" 
    WARNING_FILTER += discard class="Inappropriate Call Outside Loop" 
    WARNING_FILTER += discard class="Input After Output Without Positioning" 
    WARNING_FILTER += discard class="Integer Overflow of Allocation Size" 
    WARNING_FILTER += discard class="LDAP Injection" 
    WARNING_FILTER += discard class="Leak" 
    WARNING_FILTER += discard class="Library Injection" 
    WARNING_FILTER += discard class="Local Variable Passed to Thread" 
    WARNING_FILTER += discard class="LocalHandle on LMEM_FIXED Memory" 
    WARNING_FILTER += discard class="LocalLock on LMEM_FIXED Memory" 
    WARNING_FILTER += discard class="LocalUnlock on LMEM_FIXED Memory" 
    WARNING_FILTER += discard class="Logarithm on Negative Value" 
    WARNING_FILTER += discard class="Logarithm on Zero" 
    WARNING_FILTER += discard class="MAX_PATH Exceeded" 
    WARNING_FILTER += discard class="Misaligned Object" 
    WARNING_FILTER += discard class="Missing Return Statement" 
    WARNING_FILTER += discard class="Missing Return Value" 
    WARNING_FILTER += discard class="Negative Character Value" 
    WARNING_FILTER += discard class="Negative Shift Amount" 
    WARNING_FILTER += discard class="Negative file descriptor" 
    WARNING_FILTER += discard class="No Space For Null Terminator" 
    WARNING_FILTER += discard class="Null Pointer Dereference" 
    WARNING_FILTER += discard class="Null Security Descriptor" 
    WARNING_FILTER += discard class="Null Test After Dereference" 
    WARNING_FILTER += discard class="Object Slicing" 
    WARNING_FILTER += discard class="Output After Input Without Positioning" 
    WARNING_FILTER += discard class="Overlapping Memory Regions" 
    WARNING_FILTER += discard class="Padding Passed Across a Trust Boundary" 
    WARNING_FILTER += discard class="Plaintext Storage of Password" 
    WARNING_FILTER += discard class="Plaintext Transmission of Password" 
    WARNING_FILTER += discard class="Pool Mismatch" 
    WARNING_FILTER += discard class="Predictable Seed in PRNG" 
    WARNING_FILTER += discard class="Raises FE_INVALID" 
    WARNING_FILTER += discard class="Read Past Null Terminator" 
    WARNING_FILTER += discard class="Redundant Condition" 
    WARNING_FILTER += discard class="Return Pointer to Freed" 
    WARNING_FILTER += discard class="Return Pointer to Local" 
    WARNING_FILTER += discard class="Return from noreturn" 
    WARNING_FILTER += discard class="SQL Injection" 
    WARNING_FILTER += discard class="Shift Amount Exceeds Bit Width" 
    WARNING_FILTER += discard class="Subtraction of Unrelated Pointers" 
    WARNING_FILTER += discard class="Tainted Buffer Access" 
    WARNING_FILTER += discard class="Tainted Environment Variable" 
    WARNING_FILTER += discard class="Thread is not Joinable" 
    WARNING_FILTER += discard class="Try-lock that will never succeed" 
    WARNING_FILTER += discard class="Type Mismatch" 
    WARNING_FILTER += discard class="Type Overrun" 
    WARNING_FILTER += discard class="Type Qualifier on Function Type" 
    WARNING_FILTER += discard class="Type Underrun" 
    WARNING_FILTER += discard class="Undefined Power of Zero" 
    WARNING_FILTER += discard class="Uninitialized Variable" 
    WARNING_FILTER += discard class="Unreachable Call" 
    WARNING_FILTER += discard class="Unreachable Computation" 
    WARNING_FILTER += discard class="Unreachable Conditional" 
    WARNING_FILTER += discard class="Unreachable Data Flow" 
    WARNING_FILTER += discard class="Unreasonable Size Argument" 
    WARNING_FILTER += discard class="Unterminated C String" 
    WARNING_FILTER += discard class="Unused Value" 
    WARNING_FILTER += discard class="Use After Close" 
    WARNING_FILTER += discard class="Use After Free" 
    WARNING_FILTER += discard class="Use of GetTempFileName" 
    WARNING_FILTER += discard class="Use of SO_REUSEADDR" 
    WARNING_FILTER += discard class="Use of Weak Cryptographic Algorithm" 
    WARNING_FILTER += discard class="Use of crypt" 
    WARNING_FILTER += discard class="Use of drem" 
    WARNING_FILTER += discard class="Use of gamma" 
    WARNING_FILTER += discard class="Use of gets" 
    WARNING_FILTER += discard class="Use of mktemp" 
    WARNING_FILTER += discard class="Use of tmpfile" 
    WARNING_FILTER += discard class="Use of tmpnam" 
    WARNING_FILTER += discard class="Useless Assignment" 
    WARNING_FILTER += discard class="Varargs Function Cast" 
    WARNING_FILTER += discard class="Virtual Call in Constructor" 
    WARNING_FILTER += discard class="Virtual Call in Destructor" 
    WARNING_FILTER += discard class="cosh on High Number" 
    WARNING_FILTER += discard class="cosh on Low Number" 
    WARNING_FILTER += discard class="sqrt on Negative Value" 

 (Java warning classes) 
    WARNING_FILTER += discard class="== Always Fails Because Types Always Different (Java)" 
    WARNING_FILTER += discard class="Abs on random (Java)" 
    WARNING_FILTER += discard class="Accessing File in Permissive Mode (Java)" 
    WARNING_FILTER += discard class="Ambiguous Call from Inner Class (Java)" 
    WARNING_FILTER += discard class="Android Leak (Java)" 
    WARNING_FILTER += discard class="Anonymous LDAP Authentication (Java)" 
    WARNING_FILTER += discard class="Approximate e Constant (Java)" 
    WARNING_FILTER += discard class="Approximate pi Constant (Java)" 
    WARNING_FILTER += discard class="Array Parameter Empty (Java)" 
    WARNING_FILTER += discard class="Assertion Contains Side Effects (Java)" 
    WARNING_FILTER += discard class="Assignment in Conditional (Java)" 
    WARNING_FILTER += discard class="Asymmetric compareTo (Java)" 
    WARNING_FILTER += discard class="Bitwise AND on Boolean (Java)" 
    WARNING_FILTER += discard class="Bitwise AND on Boolean Constant (Java)" 
    WARNING_FILTER += discard class="Bitwise OR on Boolean (Java)" 
    WARNING_FILTER += discard class="Bitwise OR on Boolean Constant (Java)" 
    WARNING_FILTER += discard class="Blocking in Critical Section (Java)" 
    WARNING_FILTER += discard class="Broad Throws Clause (Java)" 
    WARNING_FILTER += discard class="Call Might Return Null (Java)" 
    WARNING_FILTER += discard class="Cast: Integer to Floating Point (Java)" 
    WARNING_FILTER += discard class="Cast: int Computation to long (Java)" 
    WARNING_FILTER += discard class="Class Enables Debug Features (Java)" 
    WARNING_FILTER += discard class="Clone Call to Super is Missing (Java)" 
    WARNING_FILTER += discard class="Closeable Not Closed (Java)" 
    WARNING_FILTER += discard class="Closeable Not Stored (Java)" 
    WARNING_FILTER += discard class="Code Injection (Java)" 
    WARNING_FILTER += discard class="Command Injection (Java)" 
    WARNING_FILTER += discard class="Comparison to Class Names (Java)" 
    WARNING_FILTER += discard class="Comparison to Empty String (Java)" 
    WARNING_FILTER += discard class="Copy-Paste Error" 
    WARNING_FILTER += discard class="Cross Site Scripting (Java)" 
    WARNING_FILTER += discard class="Cross Site Scripting In Error Message Web Page (Java)" 
    WARNING_FILTER += discard class="Cryptographic Algorithm with Risky Default Cipher (Java)" 
    WARNING_FILTER += discard class="Cryptographic Algorithm with Weak Cipher (Java)" 
    WARNING_FILTER += discard class="Cryptographic Algorithm with Weak Hash (Java)" 
    WARNING_FILTER += discard class="DLL Injection (Java)" 
    WARNING_FILTER += discard class="DOS Injection (Java)" 
    WARNING_FILTER += discard class="Debug Call (Java)" 
    WARNING_FILTER += discard class="Debug Warning (Java)" 
    WARNING_FILTER += discard class="Defines equals but not hashCode (Java)" 
    WARNING_FILTER += discard class="Defines hashCode but not equals (Java)" 
    WARNING_FILTER += discard class="Deprecated Cryptography Provider (Java)" 
    WARNING_FILTER += discard class="Direct Thread Usage in Http Servlet (Java)" 
    WARNING_FILTER += discard class="Double-Checked Locking (Java)" 
    WARNING_FILTER += discard class="Empty Branch Statement (Java)" 
    WARNING_FILTER += discard class="Empty Exception Handler (Java)" 
    WARNING_FILTER += discard class="Empty jar File Archived (Java)" 
    WARNING_FILTER += discard class="Empty zip File Archived (Java)" 
    WARNING_FILTER += discard class="Exception Information Disclosure (Java)" 
    WARNING_FILTER += discard class="Execution After Redirect (Java)" 
    WARNING_FILTER += discard class="Explicit Finalize (Java)" 
    WARNING_FILTER += discard class="Field Never Read (Java)" 
    WARNING_FILTER += discard class="Field Never Written (Java)" 
    WARNING_FILTER += discard class="Floating Point Equality (Java)" 
    WARNING_FILTER += discard class="Format String Injection (Java)" 
    WARNING_FILTER += discard class="Fragment Injection (Java)" 
    WARNING_FILTER += discard class="Generic Exception Handler (Java)" 
    WARNING_FILTER += discard class="Hardcoded Cryptographic Key (Java)" 
    WARNING_FILTER += discard class="Hardcoded Filename (Java)" 
    WARNING_FILTER += discard class="Hardcoded Password (Java)" 
    WARNING_FILTER += discard class="Hardcoded Random Seed (Java)" 
    WARNING_FILTER += discard class="Hostname in Condition (Java)" 
    WARNING_FILTER += discard class="Ignored Return Value (Java)" 
    WARNING_FILTER += discard class="Ignored Return Value for Pure Function (Java)" 
    WARNING_FILTER += discard class="Impossible Client Side Locking (Java)" 
    WARNING_FILTER += discard class="Impossible reference comparison (Java)" 
    WARNING_FILTER += discard class="Inappropriate Exception Handler (Java)" 
    WARNING_FILTER += discard class="Inappropriate Instanceof (Java)" 
    WARNING_FILTER += discard class="Ineffective Cleansing of Fragment Taint (Java)" 
    WARNING_FILTER += discard class="Inefficient Bitwise AND (Java)" 
    WARNING_FILTER += discard class="Inefficient Bitwise OR (Java)" 
    WARNING_FILTER += discard class="Inefficient Box-Unbox (Java)" 
    WARNING_FILTER += discard class="Inefficient Instantiation (Java)" 
    WARNING_FILTER += discard class="Inner Class Should be Static (Java)" 
    WARNING_FILTER += discard class="Insecure Cookie (Java)" 
    WARNING_FILTER += discard class="Insecure Key Derivation (Java)" 
    WARNING_FILTER += discard class="Insecure Random Number Generator (Java)" 
    WARNING_FILTER += discard class="Insecure Socket Factory (Java)" 
    WARNING_FILTER += discard class="Insecure XSLT Execution (Java)" 
    WARNING_FILTER += discard class="Insecure verifier Override for Hostname (Java)" 
    WARNING_FILTER += discard class="Insecure verify Override for Certificate (Java)" 
    WARNING_FILTER += discard class="Instanceof Always False (Java)" 
    WARNING_FILTER += discard class="Instanceof Always True (Java)" 
    WARNING_FILTER += discard class="JavaScript Enabled (Java)" 
    WARNING_FILTER += discard class="JavaScript File Access from File URLs (Java)" 
    WARNING_FILTER += discard class="LDAP Authentication Disabled (Java)" 
    WARNING_FILTER += discard class="Lambda Parameter may be null (Java)" 
    WARNING_FILTER += discard class="Legacy Random Generator (Java)" 
    WARNING_FILTER += discard class="Method Enables Debug Features (Java)" 
    WARNING_FILTER += discard class="Method Names Differ Only in Case (Java)" 
    WARNING_FILTER += discard class="Method Should Not Return null (Java)" 
    WARNING_FILTER += discard class="Missing Authentication Annotation (Java)" 
    WARNING_FILTER += discard class="Missing Call to super (Java)" 
    WARNING_FILTER += discard class="Missing Equals Override (Java)" 
    WARNING_FILTER += discard class="Missing JavaScript Entry Point (Java)" 
    WARNING_FILTER += discard class="Missing JavaScript Execution (Java)" 
    WARNING_FILTER += discard class="Missing Required Cryptographic Step (Java)" 
    WARNING_FILTER += discard class="Missing Serial Version Field (Java)" 
    WARNING_FILTER += discard class="Missing isValidFragment Override (Java)" 
    WARNING_FILTER += discard class="Mutable Enumeration (Java)" 
    WARNING_FILTER += discard class="Mutable Public Static Final Array (Java)" 
    WARNING_FILTER += discard class="Non-Object compareTo Parameter (Java)" 
    WARNING_FILTER += discard class="Non-overriding Method Signature (Java)" 
    WARNING_FILTER += discard class="Nonserializable Field (Java)" 
    WARNING_FILTER += discard class="Nonserializable Field Element (Java)" 
    WARNING_FILTER += discard class="Nonserializable Outer Class (Java)" 
    WARNING_FILTER += discard class="Null Parameter Dereference (Java)" 
    WARNING_FILTER += discard class="Null Pointer Dereference (Java)" 
    WARNING_FILTER += discard class="Open Redirect (Java)" 
    WARNING_FILTER += discard class="Password in Property File (Java)" 
    WARNING_FILTER += discard class="Permissive File Mode (Java)" 
    WARNING_FILTER += discard class="Possible XML External Entity Reference (Java)" 
    WARNING_FILTER += discard class="Potential Infinite Recursion (Java)" 
    WARNING_FILTER += discard class="Potential LDAP Poisoning (Java)" 
    WARNING_FILTER += discard class="Redundant Call for Integral Argument (Java)" 
    WARNING_FILTER += discard class="Redundant Call for String Argument (Java)" 
    WARNING_FILTER += discard class="Redundant Condition (Java)" 
    WARNING_FILTER += discard class="Redundant Implements Clause (Java)" 
    WARNING_FILTER += discard class="Reflection Bypasses Member Accessibility (Java)" 
    WARNING_FILTER += discard class="Reflection Injection (Java)" 
    WARNING_FILTER += discard class="Reflection Modifies Member Accessibility (Java)" 
    WARNING_FILTER += discard class="Return null Array (Java)" 
    WARNING_FILTER += discard class="Return null Boolean (Java)" 
    WARNING_FILTER += discard class="Return null Optional (Java)" 
    WARNING_FILTER += discard class="Risky Cipher Algorithm (Java)" 
    WARNING_FILTER += discard class="Risky Cipher Field (Java)" 
    WARNING_FILTER += discard class="Risky Class Cast (Java)" 
    WARNING_FILTER += discard class="Risky Cryptographic Algorithm (Java)" 
    WARNING_FILTER += discard class="Risky Cryptographic Field (Java)" 
    WARNING_FILTER += discard class="Risky JavaScript Interface (Java)" 
    WARNING_FILTER += discard class="Risky array store (Java)" 
    WARNING_FILTER += discard class="SQL Injection (Java)" 
    WARNING_FILTER += discard class="Shadowed Identifier (Java)" 
    WARNING_FILTER += discard class="Should Use == Instead of equals() (Java)" 
    WARNING_FILTER += discard class="Should Use equals() Instead of == (Java)" 
    WARNING_FILTER += discard class="Single-use Random Number Generator (Java)" 
    WARNING_FILTER += discard class="Static Field Assigned Non-Static (Java)" 
    WARNING_FILTER += discard class="Synchronization on Interned String (Java)" 
    WARNING_FILTER += discard class="Synchronization on static (Java)" 
    WARNING_FILTER += discard class="Synchronous Call to Thread Body (Java)" 
    WARNING_FILTER += discard class="Tainted @Trusted Value (Java)" 
    WARNING_FILTER += discard class="Tainted Allocation Size (Java)" 
    WARNING_FILTER += discard class="Tainted Bundle (Java)" 
    WARNING_FILTER += discard class="Tainted Control (Java)" 
    WARNING_FILTER += discard class="Tainted Data in Vulnerable Method (Java)" 
    WARNING_FILTER += discard class="Tainted Expression Evaluation (Java)" 
    WARNING_FILTER += discard class="Tainted HTTP Response (Java)" 
    WARNING_FILTER += discard class="Tainted Hardware Device Property (Java)" 
    WARNING_FILTER += discard class="Tainted LDAP Attribute (Java)" 
    WARNING_FILTER += discard class="Tainted LDAP Filter (Java)" 
    WARNING_FILTER += discard class="Tainted Log (Java)" 
    WARNING_FILTER += discard class="Tainted Message (Java)" 
    WARNING_FILTER += discard class="Tainted Network Address (Java)" 
    WARNING_FILTER += discard class="Tainted Path (Java)" 
    WARNING_FILTER += discard class="Tainted Regular Expression (Java)" 
    WARNING_FILTER += discard class="Tainted Resource (Java)" 
    WARNING_FILTER += discard class="Tainted Session (Java)" 
    WARNING_FILTER += discard class="Tainted URL (Java)" 
    WARNING_FILTER += discard class="Tainted XAML (Java)" 
    WARNING_FILTER += discard class="Tainted XML (Java)" 
    WARNING_FILTER += discard class="Tainted Xpath (Java)" 
    WARNING_FILTER += discard class="Unchecked Parameter Dereference (Java)" 
    WARNING_FILTER += discard class="Unexpected Serial Version Field (Java)" 
    WARNING_FILTER += discard class="Universal JavaScript Access to File URLs (Java)" 
    WARNING_FILTER += discard class="Unnecessary Field (Java)" 
    WARNING_FILTER += discard class="Unnecessary Instantiation for GetClass (Java)" 
    WARNING_FILTER += discard class="Unreachable Instruction (Java)" 
    WARNING_FILTER += discard class="Unsafe Session Expiration Time (Java)" 
    WARNING_FILTER += discard class="Untrusted Network Host (Java)" 
    WARNING_FILTER += discard class="Unused Class (Java)" 
    WARNING_FILTER += discard class="Unused Field (Java)" 
    WARNING_FILTER += discard class="Unused Method (Java)" 
    WARNING_FILTER += discard class="Unused Object (Java)" 
    WARNING_FILTER += discard class="Unused Value: Actual Parameter (Java)" 
    WARNING_FILTER += discard class="Unused Value: Variable (Java)" 
    WARNING_FILTER += discard class="Unused Value: Write to Parameter (Java)" 
    WARNING_FILTER += discard class="Use of Hardware ID (Java)" 
    WARNING_FILTER += discard class="Use of Insecure verify for Certificate (Java)" 
    WARNING_FILTER += discard class="Use of Insecure verify for Hostname (Java)" 
    WARNING_FILTER += discard class="Use of Same Seed (Java)" 
    WARNING_FILTER += discard class="Useless Assignment (Java)" 
    WARNING_FILTER += discard class="Useless Assignment to Default (Java)" 
    WARNING_FILTER += discard class="Useless Class Cast (Java)" 
    WARNING_FILTER += discard class="Useless Synchronization (Java)" 
    WARNING_FILTER += discard class="Useless volatile Modifier (Java)" 
    WARNING_FILTER += discard class="Weak Cryptographic Value (Java)" 
    WARNING_FILTER += discard class="Weak Hash Algorithm (Java)" 
    WARNING_FILTER += discard class="Weak Hash Algorithm Field (Java)" 
    WARNING_FILTER += discard class="Weak Initialization Vector Field (Java)" 
    WARNING_FILTER += discard class="Weak Initialization Vector Value (Java)" 
    WARNING_FILTER += discard class="clone Non-cloneable (Java)" 
    WARNING_FILTER += discard class="clone not final (Java)" 
    WARNING_FILTER += discard class="compareTo in Non-Comparable Class (Java)" 
    WARNING_FILTER += discard class="compareTo without equals (Java)" 
    WARNING_FILTER += discard class="compareTo/equals mismatch (Java)" 
    WARNING_FILTER += discard class="equals Always Fails (Java)" 
    WARNING_FILTER += discard class="equals Parameter Should Be Object (Java)" 
    WARNING_FILTER += discard class="equals on Array (Java)" 
    WARNING_FILTER += discard class="toString on Array (Java)" 

 (C# warning classes) 
    WARNING_FILTER += discard class="'Buffer.BlockCopy' expects the number of bytes to be copied for the 'count' argument (C#)" 
    WARNING_FILTER += discard class="'ThreadStatic' only affects static fields (C#)" 
    WARNING_FILTER += discard class="== Always Fails Because Types Always Different (C#)" 
    WARNING_FILTER += discard class="A constant is expected for the parameter (C#)" 
    WARNING_FILTER += discard class="Abs on random (C#)" 
    WARNING_FILTER += discard class="All members declared in parent interfaces must have an implementation in a DynamicInterfaceCastableImplementation-attributed interface (C#)" 
    WARNING_FILTER += discard class="Ambiguous Call from Inner Class (C#)" 
    WARNING_FILTER += discard class="Anonymous LDAP Authentication (C#)" 
    WARNING_FILTER += discard class="Approximate e Constant (C#)" 
    WARNING_FILTER += discard class="Approximate pi Constant (C#)" 
    WARNING_FILTER += discard class="Argument passed to TaskCompletionSource constructor should be TaskCreationOptions enum instead of TaskContinuationOptions enum (C#)" 
    WARNING_FILTER += discard class="Assigning symbol and its member in the same statement (C#)" 
    WARNING_FILTER += discard class="Assignment in Conditional (C#)" 
    WARNING_FILTER += discard class="Asymmetric compareTo (C#)" 
    WARNING_FILTER += discard class="Avoid 'StringBuilder' parameters for P/Invokes (C#)" 
    WARNING_FILTER += discard class="Avoid constant arrays as arguments (C#)" 
    WARNING_FILTER += discard class="Avoid infinite recursion (C#)" 
    WARNING_FILTER += discard class="Avoid using 'Enumerable.Any()' extension method (C#)" 
    WARNING_FILTER += discard class="Avoid using cref tags with a prefix (C#)" 
    WARNING_FILTER += discard class="Avoid zero-length array allocations (C#)" 
    WARNING_FILTER += discard class="Bitwise AND on Boolean (C#)" 
    WARNING_FILTER += discard class="Bitwise AND on Boolean Constant (C#)" 
    WARNING_FILTER += discard class="Bitwise OR on Boolean (C#)" 
    WARNING_FILTER += discard class="Bitwise OR on Boolean Constant (C#)" 
    WARNING_FILTER += discard class="Blocking in Critical Section (C#)" 
    WARNING_FILTER += discard class="Cache and reuse 'JsonSerializerOptions' instances (C#)" 
    WARNING_FILTER += discard class="Call Might Return Null (C#)" 
    WARNING_FILTER += discard class="CancellationToken parameters must come last (C#)" 
    WARNING_FILTER += discard class="Cast: Integer to Floating Point (C#)" 
    WARNING_FILTER += discard class="Cast: int Computation to long (C#)" 
    WARNING_FILTER += discard class="Class Enables Debug Features (C#)" 
    WARNING_FILTER += discard class="Closeable Not Closed (C#)" 
    WARNING_FILTER += discard class="Closeable Not Stored (C#)" 
    WARNING_FILTER += discard class="Code Injection (C#)" 
    WARNING_FILTER += discard class="Command Injection (C#)" 
    WARNING_FILTER += discard class="Comparison to Class Names (C#)" 
    WARNING_FILTER += discard class="Comparison to Empty String (C#)" 
    WARNING_FILTER += discard class="Consider using 'StringBuilder.Append(char)' when applicable (C#)" 
    WARNING_FILTER += discard class="Consider using 'string.Contains' instead of 'string.IndexOf' (C#)" 
    WARNING_FILTER += discard class="Copy-Paste Error" 
    WARNING_FILTER += discard class="Cross Site Scripting (C#)" 
    WARNING_FILTER += discard class="Cross Site Scripting In Error Message Web Page (C#)" 
    WARNING_FILTER += discard class="Cryptographic Algorithm with Risky Default Cipher (C#)" 
    WARNING_FILTER += discard class="Cryptographic Algorithm with Weak Cipher (C#)" 
    WARNING_FILTER += discard class="Cryptographic Algorithm with Weak Hash (C#)" 
    WARNING_FILTER += discard class="DLL Injection (C#)" 
    WARNING_FILTER += discard class="DOS Injection (C#)" 
    WARNING_FILTER += discard class="Debug Call (C#)" 
    WARNING_FILTER += discard class="Debug Warning (C#)" 
    WARNING_FILTER += discard class="Declare types in namespaces (C#)" 
    WARNING_FILTER += discard class="Defines equals but not hashCode (C#)" 
    WARNING_FILTER += discard class="Defines hashCode but not equals (C#)" 
    WARNING_FILTER += discard class="Deprecated Cryptography Provider (C#)" 
    WARNING_FILTER += discard class="Dispose methods should call SuppressFinalize (C#)" 
    WARNING_FILTER += discard class="Dispose methods should call base class dispose (C#)" 
    WARNING_FILTER += discard class="Do Not Add Schema By URL (C#)" 
    WARNING_FILTER += discard class="Do Not Call Dangerous Methods In Deserialization (C#)" 
    WARNING_FILTER += discard class="Do Not Disable Certificate Validation (C#)" 
    WARNING_FILTER += discard class="Do Not Disable HTTP Header Checking (C#)" 
    WARNING_FILTER += discard class="Do Not Disable Request Validation (C#)" 
    WARNING_FILTER += discard class="Do Not Use Broken Cryptographic Algorithms (C#)" 
    WARNING_FILTER += discard class="Do Not Use Deprecated Security Protocols (C#)" 
    WARNING_FILTER += discard class="Do Not Use Digital Signature Algorithm (DSA) (C#)" 
    WARNING_FILTER += discard class="Do Not Use Weak Cryptographic Algorithms (C#)" 
    WARNING_FILTER += discard class="Do Not Use XslTransform (C#)" 
    WARNING_FILTER += discard class="Do not assign a property to itself (C#)" 
    WARNING_FILTER += discard class="Do not call Enumerable.Cast<T> or Enumerable.OfType<T> with incompatible types (C#)" 
    WARNING_FILTER += discard class="Do not call ToImmutableCollection on an ImmutableCollection value (C#)" 
    WARNING_FILTER += discard class="Do not declare event fields as virtual (C#)" 
    WARNING_FILTER += discard class="Do not declare protected member in sealed type (C#)" 
    WARNING_FILTER += discard class="Do not declare static members on generic types (C#)" 
    WARNING_FILTER += discard class="Do not declare visible instance fields (C#)" 
    WARNING_FILTER += discard class="Do not define finalizers for types derived from MemoryManager<T> (C#)" 
    WARNING_FILTER += discard class="Do not duplicate indexed element initializations (C#)" 
    WARNING_FILTER += discard class="Do not hide base class methods (C#)" 
    WARNING_FILTER += discard class="Do not ignore method results (C#)" 
    WARNING_FILTER += discard class="Do not initialize unnecessarily (C#)" 
    WARNING_FILTER += discard class="Do not prefix enum values with type name (C#)" 
    WARNING_FILTER += discard class="Do not raise exceptions in finally clauses (C#)" 
    WARNING_FILTER += discard class="Do not raise reserved exception types (C#)" 
    WARNING_FILTER += discard class="Do not use 'OutAttribute' on string parameters for P/Invokes (C#)" 
    WARNING_FILTER += discard class="Do not use 'WaitAll' with a single task (C#)" 
    WARNING_FILTER += discard class="Do not use 'WhenAll' with a single task (C#)" 
    WARNING_FILTER += discard class="Do not use ConfigureAwaitOptions.SuppressThrowing with Task<TResult> (C#)" 
    WARNING_FILTER += discard class="Do not use Count() or LongCount() when Any() can be used (C#)" 
    WARNING_FILTER += discard class="Do not use CountAsync() or LongCountAsync() when AnyAsync() can be used (C#)" 
    WARNING_FILTER += discard class="Do not use Enumerable methods on indexable collections (C#)" 
    WARNING_FILTER += discard class="Do not use ReferenceEquals with value types (C#)" 
    WARNING_FILTER += discard class="Do not use deprecated SslProtocols values (C#)" 
    WARNING_FILTER += discard class="Do not use obsolete key derivation function (C#)" 
    WARNING_FILTER += discard class="Do not use stackalloc in loops (C#)" 
    WARNING_FILTER += discard class="Double-Checked Locking (C#)" 
    WARNING_FILTER += discard class="Empty Branch Statement (C#)" 
    WARNING_FILTER += discard class="Empty Exception Handler (C#)" 
    WARNING_FILTER += discard class="Empty zip File Archived (C#)" 
    WARNING_FILTER += discard class="Ensure Key Derivation Function algorithm is sufficiently strong (C#)" 
    WARNING_FILTER += discard class="Enums values should not be duplicated (C#)" 
    WARNING_FILTER += discard class="Exception Information Disclosure (C#)" 
    WARNING_FILTER += discard class="Execution After Redirect (C#)" 
    WARNING_FILTER += discard class="Field Never Read (C#)" 
    WARNING_FILTER += discard class="Field Never Written (C#)" 
    WARNING_FILTER += discard class="Floating Point Equality (C#)" 
    WARNING_FILTER += discard class="Format String Injection (C#)" 
    WARNING_FILTER += discard class="Forward the 'CancellationToken' parameter to methods (C#)" 
    WARNING_FILTER += discard class="Generic Exception Handler (C#)" 
    WARNING_FILTER += discard class="Generic interface should also be implemented (C#)" 
    WARNING_FILTER += discard class="Hardcoded Cryptographic Key (C#)" 
    WARNING_FILTER += discard class="Hardcoded Filename (C#)" 
    WARNING_FILTER += discard class="Hardcoded Password (C#)" 
    WARNING_FILTER += discard class="Hardcoded Random Seed (C#)" 
    WARNING_FILTER += discard class="Hostname in Condition (C#)" 
    WARNING_FILTER += discard class="Identifier contains type name (C#)" 
    WARNING_FILTER += discard class="Identifiers should differ by more than case (C#)" 
    WARNING_FILTER += discard class="Identifiers should have correct prefix (C#)" 
    WARNING_FILTER += discard class="Identifiers should have correct suffix (C#)" 
    WARNING_FILTER += discard class="Identifiers should not contain underscores (C#)" 
    WARNING_FILTER += discard class="Identifiers should not have incorrect suffix (C#)" 
    WARNING_FILTER += discard class="Identifiers should not match keywords (C#)" 
    WARNING_FILTER += discard class="Ignored Return Value (C#)" 
    WARNING_FILTER += discard class="Ignored Return Value for Pure Function (C#)" 
    WARNING_FILTER += discard class="Impossible Client Side Locking (C#)" 
    WARNING_FILTER += discard class="Impossible reference comparison (C#)" 
    WARNING_FILTER += discard class="Improper 'ThreadStatic' field initialization (C#)" 
    WARNING_FILTER += discard class="Inappropriate Exception Handler (C#)" 
    WARNING_FILTER += discard class="Inappropriate Instanceof (C#)" 
    WARNING_FILTER += discard class="Incorrect usage of ConstantExpected attribute (C#)" 
    WARNING_FILTER += discard class="Inefficient Bitwise AND (C#)" 
    WARNING_FILTER += discard class="Inefficient Bitwise OR (C#)" 
    WARNING_FILTER += discard class="Insecure Cookie (C#)" 
    WARNING_FILTER += discard class="Insecure DTD processing in XML (C#)" 
    WARNING_FILTER += discard class="Insecure Key Derivation (C#)" 
    WARNING_FILTER += discard class="Insecure Processing in API Design, XmlDocument and XmlTextReader (C#)" 
    WARNING_FILTER += discard class="Insecure Random Number Generator (C#)" 
    WARNING_FILTER += discard class="Insecure XSLT Execution (C#)" 
    WARNING_FILTER += discard class="Insecure XSLT script processing (C#)" 
    WARNING_FILTER += discard class="Instanceof Always False (C#)" 
    WARNING_FILTER += discard class="Instanceof Always True (C#)" 
    WARNING_FILTER += discard class="Instantiate argument exceptions correctly (C#)" 
    WARNING_FILTER += discard class="Legacy Random Generator (C#)" 
    WARNING_FILTER += discard class="Mark Verb Handlers With Validate Antiforgery Token (C#)" 
    WARNING_FILTER += discard class="Mark assemblies with NeutralResourcesLanguageAttribute (C#)" 
    WARNING_FILTER += discard class="Mark assemblies with assembly version (C#)" 
    WARNING_FILTER += discard class="Mark attributes with AttributeUsageAttribute (C#)" 
    WARNING_FILTER += discard class="Mark members as static (C#)" 
    WARNING_FILTER += discard class="Members defined on an interface with the 'DynamicInterfaceCastableImplementationAttribute' should be 'static' (C#)" 
    WARNING_FILTER += discard class="Method Enables Debug Features (C#)" 
    WARNING_FILTER += discard class="Method Names Differ Only in Case (C#)" 
    WARNING_FILTER += discard class="Method Should Not Return null (C#)" 
    WARNING_FILTER += discard class="Missing Authentication Annotation (C#)" 
    WARNING_FILTER += discard class="Missing Call to super (C#)" 
    WARNING_FILTER += discard class="Missing Equals Override (C#)" 
    WARNING_FILTER += discard class="Missing Required Cryptographic Step (C#)" 
    WARNING_FILTER += discard class="Mutable Enumeration (C#)" 
    WARNING_FILTER += discard class="Mutable Public Static Final Array (C#)" 
    WARNING_FILTER += discard class="Named placeholders should not be numeric values (C#)" 
    WARNING_FILTER += discard class="Non-Object compareTo Parameter (C#)" 
    WARNING_FILTER += discard class="Non-constant fields should not be visible (C#)" 
    WARNING_FILTER += discard class="Non-overriding Method Signature (C#)" 
    WARNING_FILTER += discard class="Nonserializable Field (C#)" 
    WARNING_FILTER += discard class="Nonserializable Field Element (C#)" 
    WARNING_FILTER += discard class="Nonserializable Outer Class (C#)" 
    WARNING_FILTER += discard class="Null Parameter Dereference (C#)" 
    WARNING_FILTER += discard class="Null Pointer Dereference (C#)" 
    WARNING_FILTER += discard class="Open Redirect (C#)" 
    WARNING_FILTER += discard class="Overload operator equals on overriding value type Equals (C#)" 
    WARNING_FILTER += discard class="Override Object.Equals(object) when implementing IEquatable<T> (C#)" 
    WARNING_FILTER += discard class="Override methods on comparable types (C#)" 
    WARNING_FILTER += discard class="P/Invokes should not be visible (C#)" 
    WARNING_FILTER += discard class="Parameter count mismatch (C#)" 
    WARNING_FILTER += discard class="Parameter names should match base declaration (C#)" 
    WARNING_FILTER += discard class="Password in Property File (C#)" 
    WARNING_FILTER += discard class="Possible XML External Entity Reference (C#)" 
    WARNING_FILTER += discard class="Potential Infinite Recursion (C#)" 
    WARNING_FILTER += discard class="Prefer 'AsSpan' over 'Substring' (C#)" 
    WARNING_FILTER += discard class="Prefer 'Clear' over 'Fill' (C#)" 
    WARNING_FILTER += discard class="Prefer Dictionary.Contains methods (C#)" 
    WARNING_FILTER += discard class="Prefer IsEmpty over Count (C#)" 
    WARNING_FILTER += discard class="Prefer static 'HashData' method over 'ComputeHash' (C#)" 
    WARNING_FILTER += discard class="Prefer strongly-typed Append and Insert method overloads on StringBuilder (C#)" 
    WARNING_FILTER += discard class="Prefer the 'IDictionary.TryAdd(TKey, TValue)' method (C#)" 
    WARNING_FILTER += discard class="Prefer the 'IDictionary.TryGetValue(TKey, out TValue)' method (C#)" 
    WARNING_FILTER += discard class="Prefer the 'Memory'-based overloads for 'ReadAsync' and 'WriteAsync' (C#)" 
    WARNING_FILTER += discard class="Prevent behavioral change (C#)" 
    WARNING_FILTER += discard class="Property, type, or attribute requires runtime marshalling (C#)" 
    WARNING_FILTER += discard class="Provide ObsoleteAttribute message (C#)" 
    WARNING_FILTER += discard class="Provide a parameterless constructor that is as visible as the containing type for concrete types derived from 'System.Runtime.InteropServices.SafeHandle' (C#)" 
    WARNING_FILTER += discard class="Provide correct 'enum' argument to 'Enum.HasFlag' (C#)" 
    WARNING_FILTER += discard class="Provide correct arguments to formatting methods (C#)" 
    WARNING_FILTER += discard class="Provide memory-based overrides of async methods when subclassing 'Stream' (C#)" 
    WARNING_FILTER += discard class="Providing a 'DynamicInterfaceCastableImplementation' interface in Visual Basic is unsupported (C#)" 
    WARNING_FILTER += discard class="Redundant Call for Integral Argument (C#)" 
    WARNING_FILTER += discard class="Redundant Call for String Argument (C#)" 
    WARNING_FILTER += discard class="Redundant Condition (C#)" 
    WARNING_FILTER += discard class="Reflection Bypasses Member Accessibility (C#)" 
    WARNING_FILTER += discard class="Reflection Injection (C#)" 
    WARNING_FILTER += discard class="Reflection Modifies Member Accessibility (C#)" 
    WARNING_FILTER += discard class="Remove empty Finalizers (C#)" 
    WARNING_FILTER += discard class="Rethrow to preserve stack details (C#)" 
    WARNING_FILTER += discard class="Return null Array (C#)" 
    WARNING_FILTER += discard class="Risky Cipher Algorithm (C#)" 
    WARNING_FILTER += discard class="Risky Cipher Field (C#)" 
    WARNING_FILTER += discard class="Risky Class Cast (C#)" 
    WARNING_FILTER += discard class="Risky Cryptographic Algorithm (C#)" 
    WARNING_FILTER += discard class="Risky Cryptographic Field (C#)" 
    WARNING_FILTER += discard class="Risky array store (C#)" 
    WARNING_FILTER += discard class="SQL Injection (C#)" 
    WARNING_FILTER += discard class="Seal internal types (C#)" 
    WARNING_FILTER += discard class="Set ViewStateUserKey For Classes Derived From Page (C#)" 
    WARNING_FILTER += discard class="Shadowed Identifier (C#)" 
    WARNING_FILTER += discard class="Should Use == Instead of equals() (C#)" 
    WARNING_FILTER += discard class="Should Use equals() Instead of == (C#)" 
    WARNING_FILTER += discard class="Single-use Random Number Generator (C#)" 
    WARNING_FILTER += discard class="Specify CultureInfo (C#)" 
    WARNING_FILTER += discard class="Specify IFormatProvider (C#)" 
    WARNING_FILTER += discard class="Specify StringComparison for correctness (C#)" 
    WARNING_FILTER += discard class="Specify a culture or use an invariant version (C#)" 
    WARNING_FILTER += discard class="Specify marshaling for P/Invoke string arguments (C#)" 
    WARNING_FILTER += discard class="Static Field Assigned Non-Static (C#)" 
    WARNING_FILTER += discard class="Synchronization on Interned String (C#)" 
    WARNING_FILTER += discard class="Synchronization on static (C#)" 
    WARNING_FILTER += discard class="Synchronous Call to Thread Body (C#)" 
    WARNING_FILTER += discard class="Tainted @Trusted Value (C#)" 
    WARNING_FILTER += discard class="Tainted Allocation Size (C#)" 
    WARNING_FILTER += discard class="Tainted Bundle (C#)" 
    WARNING_FILTER += discard class="Tainted Control (C#)" 
    WARNING_FILTER += discard class="Tainted Expression Evaluation (C#)" 
    WARNING_FILTER += discard class="Tainted HTTP Response (C#)" 
    WARNING_FILTER += discard class="Tainted Hardware Device Property (C#)" 
    WARNING_FILTER += discard class="Tainted LDAP Attribute (C#)" 
    WARNING_FILTER += discard class="Tainted LDAP Filter (C#)" 
    WARNING_FILTER += discard class="Tainted Log (C#)" 
    WARNING_FILTER += discard class="Tainted Message (C#)" 
    WARNING_FILTER += discard class="Tainted Network Address (C#)" 
    WARNING_FILTER += discard class="Tainted Path (C#)" 
    WARNING_FILTER += discard class="Tainted Regular Expression (C#)" 
    WARNING_FILTER += discard class="Tainted Resource (C#)" 
    WARNING_FILTER += discard class="Tainted Session (C#)" 
    WARNING_FILTER += discard class="Tainted URL (C#)" 
    WARNING_FILTER += discard class="Tainted XAML (C#)" 
    WARNING_FILTER += discard class="Tainted XML (C#)" 
    WARNING_FILTER += discard class="Tainted Xpath (C#)" 
    WARNING_FILTER += discard class="Template should be a static expression (C#)" 
    WARNING_FILTER += discard class="Test for NaN correctly (C#)" 
    WARNING_FILTER += discard class="The 'ModuleInitializer' attribute should not be used in libraries (C#)" 
    WARNING_FILTER += discard class="This API requires opting into preview features (C#)" 
    WARNING_FILTER += discard class="This method uses runtime marshalling even when the 'DisableRuntimeMarshallingAttribute' is applied (C#)" 
    WARNING_FILTER += discard class="Types that own disposable fields should be disposable (C#)" 
    WARNING_FILTER += discard class="Unchecked Parameter Dereference (C#)" 
    WARNING_FILTER += discard class="Unnecessary Field (C#)" 
    WARNING_FILTER += discard class="Unnecessary call to 'Contains(item)' (C#)" 
    WARNING_FILTER += discard class="Unnecessary call to 'Dictionary.ContainsKey(key)' (C#)" 
    WARNING_FILTER += discard class="Unreachable Instruction (C#)" 
    WARNING_FILTER += discard class="Unsafe Session Expiration Time (C#)" 
    WARNING_FILTER += discard class="Unused Class (C#)" 
    WARNING_FILTER += discard class="Unused Field (C#)" 
    WARNING_FILTER += discard class="Unused Method (C#)" 
    WARNING_FILTER += discard class="Unused Object (C#)" 
    WARNING_FILTER += discard class="Unused Value: Actual Parameter (C#)" 
    WARNING_FILTER += discard class="Unused Value: Variable (C#)" 
    WARNING_FILTER += discard class="Unused Value: Write to Parameter (C#)" 
    WARNING_FILTER += discard class="Use 'CompositeFormat' (C#)" 
    WARNING_FILTER += discard class="Use 'Environment.CurrentManagedThreadId' (C#)" 
    WARNING_FILTER += discard class="Use 'Environment.ProcessId' (C#)" 
    WARNING_FILTER += discard class="Use 'Environment.ProcessPath' (C#)" 
    WARNING_FILTER += discard class="Use 'StartsWith' instead of 'IndexOf' (C#)" 
    WARNING_FILTER += discard class="Use 'ThrowIfCancellationRequested' (C#)" 
    WARNING_FILTER += discard class="Use 'string.Equals' (C#)" 
    WARNING_FILTER += discard class="Use ArgumentException throw helper (C#)" 
    WARNING_FILTER += discard class="Use ArgumentNullException throw helper (C#)" 
    WARNING_FILTER += discard class="Use ArgumentOutOfRangeException throw helper (C#)" 
    WARNING_FILTER += discard class="Use AsSpan or AsMemory instead of Range-based indexers (C#)" 
    WARNING_FILTER += discard class="Use AsSpan or AsMemory instead of Range-based indexers for getting Span of an array (C#)" 
    WARNING_FILTER += discard class="Use AsSpan or AsMemory instead of Range-based indexers when appropriate (C#)" 
    WARNING_FILTER += discard class="Use Length/Count property instead of Count() when available (C#)" 
    WARNING_FILTER += discard class="Use ObjectDisposedException throw helper (C#)" 
    WARNING_FILTER += discard class="Use PascalCase for named placeholders (C#)" 
    WARNING_FILTER += discard class="Use Rivest-Shamir-Adleman (RSA) Algorithm With Sufficient Key Size (C#)" 
    WARNING_FILTER += discard class="Use ValueTasks correctly (C#)" 
    WARNING_FILTER += discard class="Use XmlReader for 'DataSet.ReadXml()' (C#)" 
    WARNING_FILTER += discard class="Use XmlReader for 'XmlSchema.Read()' (C#)" 
    WARNING_FILTER += discard class="Use XmlReader for 'XmlSerializer.Deserialize()' (C#)" 
    WARNING_FILTER += discard class="Use XmlReader for XPathDocument constructor (C#)" 
    WARNING_FILTER += discard class="Use XmlReader for XmlValidatingReader constructor (C#)" 
    WARNING_FILTER += discard class="Use a cached 'SearchValues' instance (C#)" 
    WARNING_FILTER += discard class="Use char literal for a single character lookup (C#)" 
    WARNING_FILTER += discard class="Use char overload, CA1865 (C#)" 
    WARNING_FILTER += discard class="Use char overload, CA1866 (C#)" 
    WARNING_FILTER += discard class="Use concrete types when possible for improved performance (C#)" 
    WARNING_FILTER += discard class="Use correct type parameter (C#)" 
    WARNING_FILTER += discard class="Use nameof to express symbol names (C#)" 
    WARNING_FILTER += discard class="Use of Same Seed (C#)" 
    WARNING_FILTER += discard class="Use ordinal string comparison (C#)" 
    WARNING_FILTER += discard class="Use span-based 'string.Concat' (C#)" 
    WARNING_FILTER += discard class="Use the 'StringComparison' method overloads to perform case-insensitive string comparisons (C#)" 
    WARNING_FILTER += discard class="Use the LoggerMessage delegates (C#)" 
    WARNING_FILTER += discard class="Use valid platform string (C#)" 
    WARNING_FILTER += discard class="Useless Assignment (C#)" 
    WARNING_FILTER += discard class="Useless Assignment to Default (C#)" 
    WARNING_FILTER += discard class="Useless Class Cast (C#)" 
    WARNING_FILTER += discard class="Useless Synchronization (C#)" 
    WARNING_FILTER += discard class="Useless volatile Modifier (C#)" 
    WARNING_FILTER += discard class="Validate platform compatibility (C#)" 
    WARNING_FILTER += discard class="Validate platform compatibility - obsoleted APIs (C#)" 
    WARNING_FILTER += discard class="Weak Cryptographic Value (C#)" 
    WARNING_FILTER += discard class="Weak Hash Algorithm (C#)" 
    WARNING_FILTER += discard class="Weak Hash Algorithm Field (C#)" 
    WARNING_FILTER += discard class="Weak Initialization Vector Field (C#)" 
    WARNING_FILTER += discard class="Weak Initialization Vector Value (C#)" 
    WARNING_FILTER += discard class="clone Non-cloneable (C#)" 
    WARNING_FILTER += discard class="clone not final (C#)" 
    WARNING_FILTER += discard class="compareTo in Non-Comparable Class (C#)" 
    WARNING_FILTER += discard class="compareTo without equals (C#)" 
    WARNING_FILTER += discard class="compareTo/equals mismatch (C#)" 
    WARNING_FILTER += discard class="equals Always Fails (C#)" 
    WARNING_FILTER += discard class="equals Parameter Should Be Object (C#)" 
    WARNING_FILTER += discard class="equals on Array (C#)" 
    WARNING_FILTER += discard class="toString on Array (C#)" 

 (Go warning classes) 
    WARNING_FILTER += discard class="'&*x' Gets Simplified to 'x', It Does Not Copy 'x' (Staticcheck)" 
    WARNING_FILTER += discard class="'(*net Url.URL).Query' Returns a Copy, Modifying It Doesn't Change the URL (Staticcheck)" 
    WARNING_FILTER += discard class="'(*regexp.Regexp).FindAll' Called With 'n == 0', Which Will Always Return Zero Results (Staticcheck)" 
    WARNING_FILTER += discard class="'Printf' With Dynamic First Argument and No Further Arguments (Staticcheck)" 
    WARNING_FILTER += discard class="'TestMain' Doesn't Call 'os.Exit', Hiding Test Failures (Staticcheck)" 
    WARNING_FILTER += discard class="'else' Branch of a Type Assertion Is Probably Not Reading the Right Value (Staticcheck)" 
    WARNING_FILTER += discard class="'io.Seeker.Seek' Is Being Called With the Whence Constant As the First Argument, but It Should Be the Second (Staticcheck)" 
    WARNING_FILTER += discard class="'sort.Slice' Can Only Be Used on Slices (Staticcheck)" 
    WARNING_FILTER += discard class="'strings.Replace' Called With 'n == 0', Which Does Nothing (Staticcheck)" 
    WARNING_FILTER += discard class="'sync.WaitGroup.Add' Called Inside the Goroutine, Leading to a Race Condition (Staticcheck)" 
    WARNING_FILTER += discard class="'x % 1' Is Always Zero (Staticcheck)" 
    WARNING_FILTER += discard class="A Function Argument Is Overwritten Before Its First Use (Staticcheck)" 
    WARNING_FILTER += discard class="A Function's Error Value Should Be Its Last Return Value (Staticcheck)" 
    WARNING_FILTER += discard class="A Nil 'context.Context' Is Being Passed to a Function, Consider Using 'context.TODO' Instead (Staticcheck)" 
    WARNING_FILTER += discard class="A String Cutset Contains Duplicate Characters (Staticcheck)" 
    WARNING_FILTER += discard class="A Switch's Default Case Should Be the First or Last Case (Staticcheck)" 
    WARNING_FILTER += discard class="A Value Assigned to a Variable Is Never Read Before Being Overwritten. Forgotten Error Check or Dead Code? (Staticcheck)" 
    WARNING_FILTER += discard class="An If Else If Chain Has Repeated Conditions and No Side-effects; If the Condition Didn't Match the First Time, It Won't Match the Second Time, Either (Staticcheck)" 
    WARNING_FILTER += discard class="Assigning to 'b.N' in Benchmarks Distorts the Results (Staticcheck)" 
    WARNING_FILTER += discard class="Assignment to Nil Map (Staticcheck)" 
    WARNING_FILTER += discard class="Atomic Access to 64-bit Variable Must Be 64-bit Aligned (Staticcheck)" 
    WARNING_FILTER += discard class="Avoid Zero-width and Control Characters in String Literals (Staticcheck)" 
    WARNING_FILTER += discard class="Binary Operator Has Identical Expressions on Both Sides (Staticcheck)" 
    WARNING_FILTER += discard class="Break Statement With No Effect. Did You Mean to Break Out of an Outer Loop? (Staticcheck)" 
    WARNING_FILTER += discard class="Called 'testing.T.FailNow' or 'SkipNow' in a Goroutine, Which Isn't Allowed (Staticcheck)" 
    WARNING_FILTER += discard class="Calling Functions Like 'math.Ceil' on Floats Converted From Integers Doesn't Do Anything Useful (Staticcheck)" 
    WARNING_FILTER += discard class="Cannot Marshal Channels or Functions (Staticcheck)" 
    WARNING_FILTER += discard class="Certain Bitwise Operations, Such As 'x ^ 0', Do Not Do Anything Useful (Staticcheck)" 
    WARNING_FILTER += discard class="Channels Used With 'os Signal.Notify' Should Be Buffered (Staticcheck)" 
    WARNING_FILTER += discard class="Checking Never-nil Value Against Nil (Staticcheck)" 
    WARNING_FILTER += discard class="Checking for Impossible Return Value From a Builtin Function (Staticcheck)" 
    WARNING_FILTER += discard class="Comparing 'runtime.GOOS' or 'runtime.GOARCH' Against Impossible Value (Staticcheck)" 
    WARNING_FILTER += discard class="Comparing Unsigned Values Against Negative Values Is Pointless (Staticcheck)" 
    WARNING_FILTER += discard class="Comparing a Value Against NaN Even Though No Value Is Equal to NaN (Staticcheck)" 
    WARNING_FILTER += discard class="Comparing the Address of a Variable Against Nil (Staticcheck)" 
    WARNING_FILTER += discard class="Converting a String to a Slice of Runes Before Ranging Over It (Staticcheck)" 
    WARNING_FILTER += discard class="Copy-Paste Error" 
    WARNING_FILTER += discard class="Deferred 'Lock' Right After Locking, Likely Meant to Defer 'Unlock' Instead (Staticcheck)" 
    WARNING_FILTER += discard class="Deferring 'Close' Before Checking for a Possible Error (Staticcheck)" 
    WARNING_FILTER += discard class="Defers in Infinite Loops Will Never Execute (Staticcheck)" 
    WARNING_FILTER += discard class="Defers in Range Loops May Not Run When You Expect Them to (Staticcheck)" 
    WARNING_FILTER += discard class="Deleting a Directory That Shouldn't Be Deleted (Staticcheck)" 
    WARNING_FILTER += discard class="Discarding the Return Values of a Function Without Side Effects, Making the Call Pointless (Staticcheck)" 
    WARNING_FILTER += discard class="Don't Use 'fmt.Sprintf(\"%s\", X)' Unnecessarily (Staticcheck)" 
    WARNING_FILTER += discard class="Don't Use Yoda Conditions (Staticcheck)" 
    WARNING_FILTER += discard class="Dot Imports Are Discouraged (Staticcheck)" 
    WARNING_FILTER += discard class="Drop Unnecessary Use of the Blank Identifier (Staticcheck)" 
    WARNING_FILTER += discard class="Dubious Bit Shifting of a Fixed Size Integer Value (Staticcheck)" 
    WARNING_FILTER += discard class="Elaborate Way of Sleeping (Staticcheck)" 
    WARNING_FILTER += discard class="Empty Body in an If or Else Branch (Staticcheck)" 
    WARNING_FILTER += discard class="Empty Critical Section, Did You Mean to Defer the Unlock? (Staticcheck)" 
    WARNING_FILTER += discard class="Field Assignment That Will Never Be Observed. Did You Mean to Use a Pointer Receiver? (Staticcheck)" 
    WARNING_FILTER += discard class="Go Constants Cannot Express Negative Zero (Staticcheck)" 
    WARNING_FILTER += discard class="Importing the Same Package Multiple Times (Staticcheck)" 
    WARNING_FILTER += discard class="Impossible Comparison of Interface Value With Untyped Nil (Staticcheck)" 
    WARNING_FILTER += discard class="Impossible Type Assertion (Staticcheck)" 
    WARNING_FILTER += discard class="Inappropriate Key in Call to 'context.WithValue' (Staticcheck)" 
    WARNING_FILTER += discard class="Incorrect or Missing Package Comment (Staticcheck)" 
    WARNING_FILTER += discard class="Incorrectly Formatted Error String (Staticcheck)" 
    WARNING_FILTER += discard class="Ineffective Attempt at Generating Random Number (Staticcheck)" 
    WARNING_FILTER += discard class="Ineffective Attempt at Sorting Slice (Staticcheck)" 
    WARNING_FILTER += discard class="Inefficient String Comparison With 'strings.ToLower' or 'strings.ToUpper' (Staticcheck)" 
    WARNING_FILTER += discard class="Infinite Recursive Call (Staticcheck)" 
    WARNING_FILTER += discard class="Integer Division of Literals That Results in Zero (Staticcheck)" 
    WARNING_FILTER += discard class="Invalid Argument in Call to a 'strconv' Function (Staticcheck)" 
    WARNING_FILTER += discard class="Invalid First Argument to 'exec.Command' (Staticcheck)" 
    WARNING_FILTER += discard class="Invalid Format in 'time.Parse' (Staticcheck)" 
    WARNING_FILTER += discard class="Invalid Printf Call (Staticcheck)" 
    WARNING_FILTER += discard class="Invalid Regular Expression (Staticcheck)" 
    WARNING_FILTER += discard class="Invalid Struct Tag (Staticcheck)" 
    WARNING_FILTER += discard class="Invalid Template (Staticcheck)" 
    WARNING_FILTER += discard class="Invalid URL in 'net Url.Parse' (Staticcheck)" 
    WARNING_FILTER += discard class="It Is Not Possible to Use '(*time.Timer).Reset''s Return Value Correctly (Staticcheck)" 
    WARNING_FILTER += discard class="Merge Variable Declaration and Assignment (Staticcheck)" 
    WARNING_FILTER += discard class="Missing an Optimization Opportunity When Indexing Maps By Byte Slices (Staticcheck)" 
    WARNING_FILTER += discard class="Modifying the Buffer in an 'io.Writer' Implementation (Staticcheck)" 
    WARNING_FILTER += discard class="Multiple, Identical Build Constraints in the Same File (Staticcheck)" 
    WARNING_FILTER += discard class="Negating a Boolean Twice ('!!b') Is the Same As Writing 'b'. This Is Either Redundant, or a Typo. (Staticcheck)" 
    WARNING_FILTER += discard class="Non-canonical Key in 'http.Header' Map (Staticcheck)" 
    WARNING_FILTER += discard class="Non-pointer Value Passed to 'Unmarshal' or 'Decode' (Staticcheck)" 
    WARNING_FILTER += discard class="Omit Comparison With Boolean Constant (Staticcheck)" 
    WARNING_FILTER += discard class="Omit Default Slice Index (Staticcheck)" 
    WARNING_FILTER += discard class="Omit Redundant Control Flow (Staticcheck)" 
    WARNING_FILTER += discard class="Omit Redundant Nil Check Around Loop (Staticcheck)" 
    WARNING_FILTER += discard class="Omit Redundant Nil Check in Type Assertion (Staticcheck)" 
    WARNING_FILTER += discard class="Omit Redundant Nil Check on Slices (Staticcheck)" 
    WARNING_FILTER += discard class="Only the First Constant Has an Explicit Type (Staticcheck)" 
    WARNING_FILTER += discard class="Overlapping Byte Slices Passed to an Encoder (Staticcheck)" 
    WARNING_FILTER += discard class="Passing Odd-sized Slice to Function Expecting Even Size (Staticcheck)" 
    WARNING_FILTER += discard class="Poorly Chosen Identifier (Staticcheck)" 
    WARNING_FILTER += discard class="Poorly Chosen Name for Error Variable (Staticcheck)" 
    WARNING_FILTER += discard class="Poorly Chosen Name for Variable of Type 'time.Duration' (Staticcheck)" 
    WARNING_FILTER += discard class="Poorly Chosen Receiver Name (Staticcheck)" 
    WARNING_FILTER += discard class="Possible Nil Pointer Dereference (Staticcheck)" 
    WARNING_FILTER += discard class="Range Over the String Directly (Staticcheck)" 
    WARNING_FILTER += discard class="Redundant Call to 'net Http.CanonicalHeaderKey' in Method Call on 'net Http.Header' (Staticcheck)" 
    WARNING_FILTER += discard class="Redundant Type in Variable Declaration (Staticcheck)" 
    WARNING_FILTER += discard class="Replace 'time.Now().Sub(x)' With 'time.Since(x)' (Staticcheck)" 
    WARNING_FILTER += discard class="Replace 'x.Sub(time.Now())' With 'time.Until(x)' (Staticcheck)" 
    WARNING_FILTER += discard class="Replace Call to 'bytes.Compare' With 'bytes.Equal' (Staticcheck)" 
    WARNING_FILTER += discard class="Replace Call to 'strings.Index' With 'strings.Contains' (Staticcheck)" 
    WARNING_FILTER += discard class="Replace Manual Trimming With 'strings.TrimPrefix' (Staticcheck)" 
    WARNING_FILTER += discard class="Replace for Loop With Call to Copy (Staticcheck)" 
    WARNING_FILTER += discard class="Self-assignment of Variables (Staticcheck)" 
    WARNING_FILTER += discard class="Should Use Constants for HTTP Error Codes, Not Magic Numbers (Staticcheck)" 
    WARNING_FILTER += discard class="Simplify Error Construction With 'fmt.Errorf' (Staticcheck)" 
    WARNING_FILTER += discard class="Simplify Regular Expression By Using Raw String Literal (Staticcheck)" 
    WARNING_FILTER += discard class="Simplify Returning Boolean Expression (Staticcheck)" 
    WARNING_FILTER += discard class="Simplify \"make\" Call By Omitting Redundant Arguments (Staticcheck)" 
    WARNING_FILTER += discard class="Storing Non-pointer Values in 'sync.Pool' Allocates Memory (Staticcheck)" 
    WARNING_FILTER += discard class="Suspiciously Small Untyped Constant in 'time.Sleep' (Staticcheck)" 
    WARNING_FILTER += discard class="The Documentation of an Exported Function Should Start With the Function's Name (Staticcheck)" 
    WARNING_FILTER += discard class="The Documentation of an Exported Type Should Start With Type's Name (Staticcheck)" 
    WARNING_FILTER += discard class="The Documentation of an Exported Variable or Constant Should Start With Variable's Name (Staticcheck)" 
    WARNING_FILTER += discard class="The Empty for Loop (\"for {}\") Spins and Can Block the Scheduler (Staticcheck)" 
    WARNING_FILTER += discard class="The Finalizer References the Finalized Object, Preventing Garbage Collection (Staticcheck)" 
    WARNING_FILTER += discard class="The Loop Exits Unconditionally After One Iteration (Staticcheck)" 
    WARNING_FILTER += discard class="The Result of 'append' Will Never Be Observed Anywhere (Staticcheck)" 
    WARNING_FILTER += discard class="The Variable in the Loop Condition Never Changes, Are You Incrementing the Wrong Variable? (Staticcheck)" 
    WARNING_FILTER += discard class="Trapping a Signal That Cannot Be Trapped (Staticcheck)" 
    WARNING_FILTER += discard class="Trying to Marshal a Struct With No Public Fields Nor Custom Marshaling (Staticcheck)" 
    WARNING_FILTER += discard class="Type Assertion to Current Type (Staticcheck)" 
    WARNING_FILTER += discard class="Unnecessarily Complex Way of Printing Formatted String (Staticcheck)" 
    WARNING_FILTER += discard class="Unnecessary Guard Around Call to \"delete\" (Staticcheck)" 
    WARNING_FILTER += discard class="Unnecessary Guard Around Map Access (Staticcheck)" 
    WARNING_FILTER += discard class="Unnecessary Use of 'fmt.Sprint' (Staticcheck)" 
    WARNING_FILTER += discard class="Unreachable Case Clause in a Type Switch (Staticcheck)" 
    WARNING_FILTER += discard class="Unsupported Argument to Functions in 'encoding Binary' (Staticcheck)" 
    WARNING_FILTER += discard class="Unused Code (Staticcheck)" 
    WARNING_FILTER += discard class="Use 'bytes.Buffer.String' or 'bytes.Buffer.Bytes' (Staticcheck)" 
    WARNING_FILTER += discard class="Use 'sort.Ints(x)', 'sort.Float64s(x)', and 'sort.Strings(x)' (Staticcheck)" 
    WARNING_FILTER += discard class="Use Consistent Method Receiver Names (Staticcheck)" 
    WARNING_FILTER += discard class="Use Plain Channel Send or Receive Instead of Single-case Select (Staticcheck)" 
    WARNING_FILTER += discard class="Use Result of Type Assertion to Simplify Cases (Staticcheck)" 
    WARNING_FILTER += discard class="Use \"copy\" for Sliding Elements (Staticcheck)" 
    WARNING_FILTER += discard class="Use \"for { ... }\" for Infinite Loops (Staticcheck)" 
    WARNING_FILTER += discard class="Use a Single 'append' to Concatenate Two Slices (Staticcheck)" 
    WARNING_FILTER += discard class="Use a Type Conversion Instead of Manually Copying Struct Fields (Staticcheck)" 
    WARNING_FILTER += discard class="Using 'bytes.Equal' to Compare Two 'net.IP' (Staticcheck)" 
    WARNING_FILTER += discard class="Using 'regexp.Match' or Related in a Loop, Should Use 'regexp.Compile' (Staticcheck)" 
    WARNING_FILTER += discard class="Using 'time.Tick' in a Way That Will Leak. Consider Using 'time.NewTicker', and Only Use 'time.Tick' in Tests, Commands and Endless Functions (Staticcheck)" 
    WARNING_FILTER += discard class="Using Io.WriteString to Write '[]byte' (Staticcheck)" 
    WARNING_FILTER += discard class="Using a Deprecated Function, Variable, Constant or Field (Staticcheck)" 
    WARNING_FILTER += discard class="Using a Non-octal 'os.FileMode' That Looks Like It Was Meant to Be in Octal. (Staticcheck)" 
    WARNING_FILTER += discard class="Using an Invalid Host:port Pair With a 'net.Listen'-related Function (Staticcheck)" 
    WARNING_FILTER += discard class="Various Methods in the \"strings\" Package Expect Valid UTF-8, but Invalid Input Is Provided (Staticcheck)" 
    WARNING_FILTER += discard class="\"for { Select { ...\" With an Empty Default Branch Spins (Staticcheck)" 
    WARNING_FILTER += discard class="\"x = Append(y)\" Is Equivalent to \"x = Y\" (Staticcheck)" 

 (Kotlin warning classes) 
    WARNING_FILTER += discard class="Absent or Wrong File License (detekt)" 
    WARNING_FILTER += discard class="Also Could Be Apply (detekt)" 
    WARNING_FILTER += discard class="Array Primitive (detekt)" 
    WARNING_FILTER += discard class="Avoid Referential Equality (detekt)" 
    WARNING_FILTER += discard class="Boolean Property Naming (detekt)" 
    WARNING_FILTER += discard class="Braces on If Statements (detekt)" 
    WARNING_FILTER += discard class="Braces on When Statements (detekt)" 
    WARNING_FILTER += discard class="Can Be Non Nullable (detekt)" 
    WARNING_FILTER += discard class="Cascading Call Wrapping (detekt)" 
    WARNING_FILTER += discard class="Cast Nullable to Non Nullable Type (detekt)" 
    WARNING_FILTER += discard class="Cast to Nullable Type (detekt)" 
    WARNING_FILTER += discard class="Class Naming (detekt)" 
    WARNING_FILTER += discard class="Class Ordering (detekt)" 
    WARNING_FILTER += discard class="Cognitive Complex Method (detekt)" 
    WARNING_FILTER += discard class="Collapsible If Statements (detekt)" 
    WARNING_FILTER += discard class="Comment Over Private Function (detekt)" 
    WARNING_FILTER += discard class="Comment Over Private Property (detekt)" 
    WARNING_FILTER += discard class="Complex Condition (detekt)" 
    WARNING_FILTER += discard class="Complex Interface (detekt)" 
    WARNING_FILTER += discard class="Constructor Parameter Naming (detekt)" 
    WARNING_FILTER += discard class="Copy-Paste Error" 
    WARNING_FILTER += discard class="Could Be Sequence (detekt)" 
    WARNING_FILTER += discard class="Cyclomatic Complex Method (detekt)" 
    WARNING_FILTER += discard class="Data Class Contains Functions (detekt)" 
    WARNING_FILTER += discard class="Data Class Should Be Immutable (detekt)" 
    WARNING_FILTER += discard class="Deprecated Block Tag (detekt)" 
    WARNING_FILTER += discard class="Deprecation (detekt)" 
    WARNING_FILTER += discard class="Destructuring Declaration With Too Many Entries (detekt)" 
    WARNING_FILTER += discard class="Dont Downcast Collection Types (detekt)" 
    WARNING_FILTER += discard class="Double Mutability for Collection (detekt)" 
    WARNING_FILTER += discard class="Double Negative Lambda (detekt)" 
    WARNING_FILTER += discard class="Else Case Instead of Exhaustive When (detekt)" 
    WARNING_FILTER += discard class="Empty Catch Block (detekt)" 
    WARNING_FILTER += discard class="Empty Class Block (detekt)" 
    WARNING_FILTER += discard class="Empty Default Constructor (detekt)" 
    WARNING_FILTER += discard class="Empty Do While Block (detekt)" 
    WARNING_FILTER += discard class="Empty Else Block (detekt)" 
    WARNING_FILTER += discard class="Empty Finally Block (detekt)" 
    WARNING_FILTER += discard class="Empty Function Block (detekt)" 
    WARNING_FILTER += discard class="Empty If Block (detekt)" 
    WARNING_FILTER += discard class="Empty Init Block (detekt)" 
    WARNING_FILTER += discard class="Empty Kt File (detekt)" 
    WARNING_FILTER += discard class="Empty Secondary Constructor (detekt)" 
    WARNING_FILTER += discard class="Empty Try Block (detekt)" 
    WARNING_FILTER += discard class="Empty When Block (detekt)" 
    WARNING_FILTER += discard class="Empty While Block (detekt)" 
    WARNING_FILTER += discard class="Empty for Block (detekt)" 
    WARNING_FILTER += discard class="End of Sentence Format (detekt)" 
    WARNING_FILTER += discard class="Enum Naming (detekt)" 
    WARNING_FILTER += discard class="Equals Always Returns True or False (detekt)" 
    WARNING_FILTER += discard class="Equals Null Call (detekt)" 
    WARNING_FILTER += discard class="Equals With Hash Code Exist (detekt)" 
    WARNING_FILTER += discard class="Equals on Signature Line (detekt)" 
    WARNING_FILTER += discard class="Exception Raised in Unexpected Location (detekt)" 
    WARNING_FILTER += discard class="Exit Outside Main (detekt)" 
    WARNING_FILTER += discard class="Explicit Collection Element Access Method (detekt)" 
    WARNING_FILTER += discard class="Explicit Garbage Collection Call (detekt)" 
    WARNING_FILTER += discard class="Explicit It Lambda Parameter (detekt)" 
    WARNING_FILTER += discard class="Expression Body Syntax (detekt)" 
    WARNING_FILTER += discard class="For Each on Range (detekt)" 
    WARNING_FILTER += discard class="Forbidden Annotation (detekt)" 
    WARNING_FILTER += discard class="Forbidden Class Name (detekt)" 
    WARNING_FILTER += discard class="Forbidden Comment (detekt)" 
    WARNING_FILTER += discard class="Forbidden Import (detekt)" 
    WARNING_FILTER += discard class="Forbidden Method Call (detekt)" 
    WARNING_FILTER += discard class="Forbidden Suppress (detekt)" 
    WARNING_FILTER += discard class="Forbidden Void (detekt)" 
    WARNING_FILTER += discard class="Function Max Length (detekt)" 
    WARNING_FILTER += discard class="Function Min Length (detekt)" 
    WARNING_FILTER += discard class="Function Naming (detekt)" 
    WARNING_FILTER += discard class="Function Only Returning Constant (detekt)" 
    WARNING_FILTER += discard class="Function Parameter Naming (detekt)" 
    WARNING_FILTER += discard class="Global Coroutine Usage (detekt)" 
    WARNING_FILTER += discard class="Has Platform Type (detekt)" 
    WARNING_FILTER += discard class="Ignored Return Value (detekt)" 
    WARNING_FILTER += discard class="Implicit Default Locale (detekt)" 
    WARNING_FILTER += discard class="Implicit Unit Return Type (detekt)" 
    WARNING_FILTER += discard class="Inject Dispatcher (detekt)" 
    WARNING_FILTER += discard class="Instance of Check for Exception (detekt)" 
    WARNING_FILTER += discard class="Invalid Package Declaration (detekt)" 
    WARNING_FILTER += discard class="Invalid Range (detekt)" 
    WARNING_FILTER += discard class="Iterator Has Next Calls Next Method (detekt)" 
    WARNING_FILTER += discard class="Iterator Not Throwing No Such Element Exception (detekt)" 
    WARNING_FILTER += discard class="KDoc References Non Public Property (detekt)" 
    WARNING_FILTER += discard class="Labeled Expression (detekt)" 
    WARNING_FILTER += discard class="Lambda Parameter Naming (detekt)" 
    WARNING_FILTER += discard class="Large Class (detekt)" 
    WARNING_FILTER += discard class="Lateinit Usage (detekt)" 
    WARNING_FILTER += discard class="Long Method (detekt)" 
    WARNING_FILTER += discard class="Long Parameter List (detekt)" 
    WARNING_FILTER += discard class="Loop With Too Many Jump Statements (detekt)" 
    WARNING_FILTER += discard class="Magic Number (detekt)" 
    WARNING_FILTER += discard class="Mandatory Braces Loops (detekt)" 
    WARNING_FILTER += discard class="Map Get With Not Null Assertion Operator (detekt)" 
    WARNING_FILTER += discard class="Matching Declaration Name (detekt)" 
    WARNING_FILTER += discard class="Max Chained Calls on Same Line (detekt)" 
    WARNING_FILTER += discard class="Max Line Length (detekt)" 
    WARNING_FILTER += discard class="May Be Const (detekt)" 
    WARNING_FILTER += discard class="Member Name Equals Class Name (detekt)" 
    WARNING_FILTER += discard class="Method Overloading (detekt)" 
    WARNING_FILTER += discard class="Missing Package Declaration (detekt)" 
    WARNING_FILTER += discard class="Modifier Order (detekt)" 
    WARNING_FILTER += discard class="Multiline Lambda It Parameter (detekt)" 
    WARNING_FILTER += discard class="Multiline Raw String Indentation (detekt)" 
    WARNING_FILTER += discard class="Named Arguments (detekt)" 
    WARNING_FILTER += discard class="Nested Block Depth (detekt)" 
    WARNING_FILTER += discard class="Nested Classes Visibility (detekt)" 
    WARNING_FILTER += discard class="Nested Scope Functions (detekt)" 
    WARNING_FILTER += discard class="New Line at End of File (detekt)" 
    WARNING_FILTER += discard class="No Name Shadowing (detekt)" 
    WARNING_FILTER += discard class="No Tabs (detekt)" 
    WARNING_FILTER += discard class="Non Boolean Property Prefixed With Is (detekt)" 
    WARNING_FILTER += discard class="Not Implemented Declaration (detekt)" 
    WARNING_FILTER += discard class="Null Check on Mutable Property (detekt)" 
    WARNING_FILTER += discard class="Nullable Boolean Check (detekt)" 
    WARNING_FILTER += discard class="Nullable to String Call (detekt)" 
    WARNING_FILTER += discard class="Object Extends Throwable (detekt)" 
    WARNING_FILTER += discard class="Object Literal to Lambda (detekt)" 
    WARNING_FILTER += discard class="Object Property Naming (detekt)" 
    WARNING_FILTER += discard class="Optional Abstract Keyword (detekt)" 
    WARNING_FILTER += discard class="Optional Unit (detekt)" 
    WARNING_FILTER += discard class="Outdated Documentation (detekt)" 
    WARNING_FILTER += discard class="Package Naming (detekt)" 
    WARNING_FILTER += discard class="Prefer to Over Pair Syntax (detekt)" 
    WARNING_FILTER += discard class="Print Stack Trace (detekt)" 
    WARNING_FILTER += discard class="Property Used Before Declaration (detekt)" 
    WARNING_FILTER += discard class="Protected Member in Final Class (detekt)" 
    WARNING_FILTER += discard class="Redundant Explicit Type (detekt)" 
    WARNING_FILTER += discard class="Redundant Higher Order Map Usage (detekt)" 
    WARNING_FILTER += discard class="Redundant Suspend Modifier (detekt)" 
    WARNING_FILTER += discard class="Redundant Visibility Modifier Rule (detekt)" 
    WARNING_FILTER += discard class="Replace Safe Call Chain With Run (detekt)" 
    WARNING_FILTER += discard class="Rethrow Caught Exception (detekt)" 
    WARNING_FILTER += discard class="Return Count (detekt)" 
    WARNING_FILTER += discard class="Return From Finally (detekt)" 
    WARNING_FILTER += discard class="Safe Cast (detekt)" 
    WARNING_FILTER += discard class="Serial Version UIDIn Serializable Class (detekt)" 
    WARNING_FILTER += discard class="Sleep Instead of Delay (detekt)" 
    WARNING_FILTER += discard class="Spacing Between Package and Imports (detekt)" 
    WARNING_FILTER += discard class="Spread Operator (detekt)" 
    WARNING_FILTER += discard class="String Literal Duplication (detekt)" 
    WARNING_FILTER += discard class="String Should Be Raw String (detekt)" 
    WARNING_FILTER += discard class="Suspend Fun Swallowed Cancellation (detekt)" 
    WARNING_FILTER += discard class="Suspend Fun With Coroutine Scope Receiver (detekt)" 
    WARNING_FILTER += discard class="Suspend Fun With Flow Return Type (detekt)" 
    WARNING_FILTER += discard class="Swallowed Exception (detekt)" 
    WARNING_FILTER += discard class="Throwing Exception From Finally (detekt)" 
    WARNING_FILTER += discard class="Throwing Exception in Main (detekt)" 
    WARNING_FILTER += discard class="Throwing Exceptions Without Message or Cause (detekt)" 
    WARNING_FILTER += discard class="Throwing New Instance of Same Exception (detekt)" 
    WARNING_FILTER += discard class="Throws Count (detekt)" 
    WARNING_FILTER += discard class="Too Generic Exception Caught (detekt)" 
    WARNING_FILTER += discard class="Too Generic Exception Thrown (detekt)" 
    WARNING_FILTER += discard class="Too Many Functions (detekt)" 
    WARNING_FILTER += discard class="Top Level Property Naming (detekt)" 
    WARNING_FILTER += discard class="Trailing Whitespace (detekt)" 
    WARNING_FILTER += discard class="Trim Multiline Raw String (detekt)" 
    WARNING_FILTER += discard class="Unconditional Jump Statement in Loop (detekt)" 
    WARNING_FILTER += discard class="Underscores in Numeric Literals (detekt)" 
    WARNING_FILTER += discard class="Undocumented Public Class (detekt)" 
    WARNING_FILTER += discard class="Undocumented Public Function (detekt)" 
    WARNING_FILTER += discard class="Undocumented Public Property (detekt)" 
    WARNING_FILTER += discard class="Unnecessary Abstract Class (detekt)" 
    WARNING_FILTER += discard class="Unnecessary Annotation Use Site Target (detekt)" 
    WARNING_FILTER += discard class="Unnecessary Apply (detekt)" 
    WARNING_FILTER += discard class="Unnecessary Backticks (detekt)" 
    WARNING_FILTER += discard class="Unnecessary Braces Around Trailing Lambda (detekt)" 
    WARNING_FILTER += discard class="Unnecessary Filter (detekt)" 
    WARNING_FILTER += discard class="Unnecessary Inheritance (detekt)" 
    WARNING_FILTER += discard class="Unnecessary Inner Class (detekt)" 
    WARNING_FILTER += discard class="Unnecessary Let (detekt)" 
    WARNING_FILTER += discard class="Unnecessary Not Null Check (detekt)" 
    WARNING_FILTER += discard class="Unnecessary Not Null Operator (detekt)" 
    WARNING_FILTER += discard class="Unnecessary Parentheses (detekt)" 
    WARNING_FILTER += discard class="Unnecessary Part of Binary Expression (detekt)" 
    WARNING_FILTER += discard class="Unnecessary Safe Call (detekt)" 
    WARNING_FILTER += discard class="Unnecessary Temporary Instantiation (detekt)" 
    WARNING_FILTER += discard class="Unreachable Catch Block (detekt)" 
    WARNING_FILTER += discard class="Unreachable Code (detekt)" 
    WARNING_FILTER += discard class="Unsafe Call on Nullable Type (detekt)" 
    WARNING_FILTER += discard class="Unsafe Cast (detekt)" 
    WARNING_FILTER += discard class="Until Instead of Range to (detekt)" 
    WARNING_FILTER += discard class="Unused Imports (detekt)" 
    WARNING_FILTER += discard class="Unused Parameter (detekt)" 
    WARNING_FILTER += discard class="Unused Private Class (detekt)" 
    WARNING_FILTER += discard class="Unused Private Member (detekt)" 
    WARNING_FILTER += discard class="Unused Private Property (detekt)" 
    WARNING_FILTER += discard class="Unused Unary Operator (detekt)" 
    WARNING_FILTER += discard class="Use Any or None Instead of Find (detekt)" 
    WARNING_FILTER += discard class="Use Array Literals in Annotations (detekt)" 
    WARNING_FILTER += discard class="Use Check Not Null (detekt)" 
    WARNING_FILTER += discard class="Use Check or Error (detekt)" 
    WARNING_FILTER += discard class="Use Data Class (detekt)" 
    WARNING_FILTER += discard class="Use Empty Counterpart (detekt)" 
    WARNING_FILTER += discard class="Use If Empty or If Blank (detekt)" 
    WARNING_FILTER += discard class="Use If Instead of When (detekt)" 
    WARNING_FILTER += discard class="Use Is Null or Empty (detekt)" 
    WARNING_FILTER += discard class="Use Let (detekt)" 
    WARNING_FILTER += discard class="Use Require (detekt)" 
    WARNING_FILTER += discard class="Use Require Not Null (detekt)" 
    WARNING_FILTER += discard class="Use Sum of Instead of Flat Map Size (detekt)" 
    WARNING_FILTER += discard class="Use or Empty (detekt)" 
    WARNING_FILTER += discard class="Useless Call on Not Null (detekt)" 
    WARNING_FILTER += discard class="Useless Postfix Expression (detekt)" 
    WARNING_FILTER += discard class="Utility Class With Public Constructor (detekt)" 
    WARNING_FILTER += discard class="Var Could Be Val (detekt)" 
    WARNING_FILTER += discard class="Variable Max Length (detekt)" 
    WARNING_FILTER += discard class="Variable Min Length (detekt)" 
    WARNING_FILTER += discard class="Variable Naming (detekt)" 
    WARNING_FILTER += discard class="Wildcard Import (detekt)" 
    WARNING_FILTER += discard class="Wrong Equals Type Parameter (detekt)" 

 (Python warning classes) 
    WARNING_FILTER += discard class="Abstract Class Instantiated (Pylint)" 
    WARNING_FILTER += discard class="Abstract Method (Pylint)" 
    WARNING_FILTER += discard class="Access Member Before Definition (Pylint)" 
    WARNING_FILTER += discard class="Anomalous Backslash in String (Pylint)" 
    WARNING_FILTER += discard class="Anomalous Unicode Escape in String (Pylint)" 
    WARNING_FILTER += discard class="Arguments Differ (Pylint)" 
    WARNING_FILTER += discard class="Arguments Out of Order (Pylint)" 
    WARNING_FILTER += discard class="Arguments Renamed (Pylint)" 
    WARNING_FILTER += discard class="Assert on String Literal (Pylint)" 
    WARNING_FILTER += discard class="Assert on Tuple (Pylint)" 
    WARNING_FILTER += discard class="Assigning Non Slot (Pylint)" 
    WARNING_FILTER += discard class="Assignment From No Return (Pylint)" 
    WARNING_FILTER += discard class="Assignment From None (Pylint)" 
    WARNING_FILTER += discard class="Astroid Error (Pylint)" 
    WARNING_FILTER += discard class="Attribute Defined Outside Init (Pylint)" 
    WARNING_FILTER += discard class="Await Outside Async (Pylint)" 
    WARNING_FILTER += discard class="Bad Chained Comparison (Pylint)" 
    WARNING_FILTER += discard class="Bad Classmethod Argument (Pylint)" 
    WARNING_FILTER += discard class="Bad Configuration Section (Pylint)" 
    WARNING_FILTER += discard class="Bad Except Order (Pylint)" 
    WARNING_FILTER += discard class="Bad Exception Cause (Pylint)" 
    WARNING_FILTER += discard class="Bad File Encoding (Pylint)" 
    WARNING_FILTER += discard class="Bad Format Character (Pylint)" 
    WARNING_FILTER += discard class="Bad Format String (Pylint)" 
    WARNING_FILTER += discard class="Bad Format String Key (Pylint)" 
    WARNING_FILTER += discard class="Bad Indentation (Pylint)" 
    WARNING_FILTER += discard class="Bad Inline Option (Pylint)" 
    WARNING_FILTER += discard class="Bad Mcs Classmethod Argument (Pylint)" 
    WARNING_FILTER += discard class="Bad Mcs Method Argument (Pylint)" 
    WARNING_FILTER += discard class="Bad Open Mode (Pylint)" 
    WARNING_FILTER += discard class="Bad Plugin Value (Pylint)" 
    WARNING_FILTER += discard class="Bad Reversed Sequence (Pylint)" 
    WARNING_FILTER += discard class="Bad Staticmethod Argument (Pylint)" 
    WARNING_FILTER += discard class="Bad Str Strip Call (Pylint)" 
    WARNING_FILTER += discard class="Bad String Format Type (Pylint)" 
    WARNING_FILTER += discard class="Bad Super Call (Pylint)" 
    WARNING_FILTER += discard class="Bad Thread Instantiation (Pylint)" 
    WARNING_FILTER += discard class="Bare Except (Pylint)" 
    WARNING_FILTER += discard class="Bidirectional Unicode (Pylint)" 
    WARNING_FILTER += discard class="Binary Op Exception (Pylint)" 
    WARNING_FILTER += discard class="Boolean Datetime (Pylint)" 
    WARNING_FILTER += discard class="Broad Exception Caught (Pylint)" 
    WARNING_FILTER += discard class="Broad Exception Raised (Pylint)" 
    WARNING_FILTER += discard class="C Extension No Member (Pylint)" 
    WARNING_FILTER += discard class="Catching Non Exception (Pylint)" 
    WARNING_FILTER += discard class="Cell Var From Loop (Pylint)" 
    WARNING_FILTER += discard class="Chained Comparison (Pylint)" 
    WARNING_FILTER += discard class="Class Variable Slots Conflict (Pylint)" 
    WARNING_FILTER += discard class="Comparison With Callable (Pylint)" 
    WARNING_FILTER += discard class="Comparison With Itself (Pylint)" 
    WARNING_FILTER += discard class="Comparison of Constants (Pylint)" 
    WARNING_FILTER += discard class="Condition Evals to Constant (Pylint)" 
    WARNING_FILTER += discard class="Config Parse Error (Pylint)" 
    WARNING_FILTER += discard class="Confusing With Statement (Pylint)" 
    WARNING_FILTER += discard class="Consider Iterating Dictionary (Pylint)" 
    WARNING_FILTER += discard class="Consider Merging Isinstance (Pylint)" 
    WARNING_FILTER += discard class="Consider Swap Variables (Pylint)" 
    WARNING_FILTER += discard class="Consider Using Dict Comprehension (Pylint)" 
    WARNING_FILTER += discard class="Consider Using Dict Items (Pylint)" 
    WARNING_FILTER += discard class="Consider Using Enumerate (Pylint)" 
    WARNING_FILTER += discard class="Consider Using F String (Pylint)" 
    WARNING_FILTER += discard class="Consider Using From Import (Pylint)" 
    WARNING_FILTER += discard class="Consider Using Generator (Pylint)" 
    WARNING_FILTER += discard class="Consider Using Get (Pylint)" 
    WARNING_FILTER += discard class="Consider Using Join (Pylint)" 
    WARNING_FILTER += discard class="Consider Using Max Builtin (Pylint)" 
    WARNING_FILTER += discard class="Consider Using Min Builtin (Pylint)" 
    WARNING_FILTER += discard class="Consider Using Set Comprehension (Pylint)" 
    WARNING_FILTER += discard class="Consider Using Sys Exit (Pylint)" 
    WARNING_FILTER += discard class="Consider Using Ternary (Pylint)" 
    WARNING_FILTER += discard class="Consider Using With (Pylint)" 
    WARNING_FILTER += discard class="Consider Using in (Pylint)" 
    WARNING_FILTER += discard class="Continue in Finally (Pylint)" 
    WARNING_FILTER += discard class="Copy-Paste Error" 
    WARNING_FILTER += discard class="Cyclic Import (Pylint)" 
    WARNING_FILTER += discard class="Dangerous Default Value (Pylint)" 
    WARNING_FILTER += discard class="Deprecated Argument (Pylint)" 
    WARNING_FILTER += discard class="Deprecated Class (Pylint)" 
    WARNING_FILTER += discard class="Deprecated Decorator (Pylint)" 
    WARNING_FILTER += discard class="Deprecated Method (Pylint)" 
    WARNING_FILTER += discard class="Deprecated Module (Pylint)" 
    WARNING_FILTER += discard class="Deprecated Pragma (Pylint)" 
    WARNING_FILTER += discard class="Dict Iter Missing Items (Pylint)" 
    WARNING_FILTER += discard class="Disallowed Name (Pylint)" 
    WARNING_FILTER += discard class="Duplicate Argument Name (Pylint)" 
    WARNING_FILTER += discard class="Duplicate Bases (Pylint)" 
    WARNING_FILTER += discard class="Duplicate Code (Pylint)" 
    WARNING_FILTER += discard class="Duplicate Except (Pylint)" 
    WARNING_FILTER += discard class="Duplicate Key (Pylint)" 
    WARNING_FILTER += discard class="Duplicate String Formatting Argument (Pylint)" 
    WARNING_FILTER += discard class="Duplicate Value (Pylint)" 
    WARNING_FILTER += discard class="Empty Docstring (Pylint)" 
    WARNING_FILTER += discard class="Eval Used (Pylint)" 
    WARNING_FILTER += discard class="Exec Used (Pylint)" 
    WARNING_FILTER += discard class="Expression Not Assigned (Pylint)" 
    WARNING_FILTER += discard class="F String Without Interpolation (Pylint)" 
    WARNING_FILTER += discard class="Fatal (Pylint)" 
    WARNING_FILTER += discard class="File Ignored (Pylint)" 
    WARNING_FILTER += discard class="Fixme (Pylint)" 
    WARNING_FILTER += discard class="Forgotten Debug Statement (Pylint)" 
    WARNING_FILTER += discard class="Format Combined Specification (Pylint)" 
    WARNING_FILTER += discard class="Format Needs Mapping (Pylint)" 
    WARNING_FILTER += discard class="Format String Without Interpolation (Pylint)" 
    WARNING_FILTER += discard class="Function Redefined (Pylint)" 
    WARNING_FILTER += discard class="Global Statement (Pylint)" 
    WARNING_FILTER += discard class="Global Variable Not Assigned (Pylint)" 
    WARNING_FILTER += discard class="Global Variable Undefined (Pylint)" 
    WARNING_FILTER += discard class="Global at Module Level (Pylint)" 
    WARNING_FILTER += discard class="Implicit Flag Alias (Pylint)" 
    WARNING_FILTER += discard class="Implicit Str Concat (Pylint)" 
    WARNING_FILTER += discard class="Import Error (Pylint)" 
    WARNING_FILTER += discard class="Import Outside Toplevel (Pylint)" 
    WARNING_FILTER += discard class="Import Self (Pylint)" 
    WARNING_FILTER += discard class="Inconsistent Mro (Pylint)" 
    WARNING_FILTER += discard class="Inconsistent Quotes (Pylint)" 
    WARNING_FILTER += discard class="Inconsistent Return Statements (Pylint)" 
    WARNING_FILTER += discard class="Inherit Non Class (Pylint)" 
    WARNING_FILTER += discard class="Init Is Generator (Pylint)" 
    WARNING_FILTER += discard class="Invalid All Format (Pylint)" 
    WARNING_FILTER += discard class="Invalid All Object (Pylint)" 
    WARNING_FILTER += discard class="Invalid Bool Returned (Pylint)" 
    WARNING_FILTER += discard class="Invalid Bytes Returned (Pylint)" 
    WARNING_FILTER += discard class="Invalid Character Backspace (Pylint)" 
    WARNING_FILTER += discard class="Invalid Character Carriage Return (Pylint)" 
    WARNING_FILTER += discard class="Invalid Character Esc (Pylint)" 
    WARNING_FILTER += discard class="Invalid Character Nul (Pylint)" 
    WARNING_FILTER += discard class="Invalid Character Sub (Pylint)" 
    WARNING_FILTER += discard class="Invalid Character Zero Width Space (Pylint)" 
    WARNING_FILTER += discard class="Invalid Characters in Docstring (Pylint)" 
    WARNING_FILTER += discard class="Invalid Class Object (Pylint)" 
    WARNING_FILTER += discard class="Invalid Enum Extension (Pylint)" 
    WARNING_FILTER += discard class="Invalid Envvar Default (Pylint)" 
    WARNING_FILTER += discard class="Invalid Envvar Value (Pylint)" 
    WARNING_FILTER += discard class="Invalid Field Call (Pylint)" 
    WARNING_FILTER += discard class="Invalid Format Index (Pylint)" 
    WARNING_FILTER += discard class="Invalid Format Returned (Pylint)" 
    WARNING_FILTER += discard class="Invalid Getnewargs Ex Returned (Pylint)" 
    WARNING_FILTER += discard class="Invalid Getnewargs Returned (Pylint)" 
    WARNING_FILTER += discard class="Invalid Hash Returned (Pylint)" 
    WARNING_FILTER += discard class="Invalid Index Returned (Pylint)" 
    WARNING_FILTER += discard class="Invalid Length Hint Returned (Pylint)" 
    WARNING_FILTER += discard class="Invalid Length Returned (Pylint)" 
    WARNING_FILTER += discard class="Invalid Metaclass (Pylint)" 
    WARNING_FILTER += discard class="Invalid Name (Pylint)" 
    WARNING_FILTER += discard class="Invalid Overridden Method (Pylint)" 
    WARNING_FILTER += discard class="Invalid Repr Returned (Pylint)" 
    WARNING_FILTER += discard class="Invalid Sequence Index (Pylint)" 
    WARNING_FILTER += discard class="Invalid Slice Index (Pylint)" 
    WARNING_FILTER += discard class="Invalid Slice Step (Pylint)" 
    WARNING_FILTER += discard class="Invalid Slots (Pylint)" 
    WARNING_FILTER += discard class="Invalid Slots Object (Pylint)" 
    WARNING_FILTER += discard class="Invalid Star Assignment Target (Pylint)" 
    WARNING_FILTER += discard class="Invalid Str Returned (Pylint)" 
    WARNING_FILTER += discard class="Invalid Unary Operand Type (Pylint)" 
    WARNING_FILTER += discard class="Invalid Unicode Codec (Pylint)" 
    WARNING_FILTER += discard class="Isinstance Second Argument Not Valid Type (Pylint)" 
    WARNING_FILTER += discard class="Keyword Arg Before Vararg (Pylint)" 
    WARNING_FILTER += discard class="Kwarg Superseded By Positional Arg (Pylint)" 
    WARNING_FILTER += discard class="Line Too Long (Pylint)" 
    WARNING_FILTER += discard class="Literal Comparison (Pylint)" 
    WARNING_FILTER += discard class="Locally Disabled (Pylint)" 
    WARNING_FILTER += discard class="Logging Format Interpolation (Pylint)" 
    WARNING_FILTER += discard class="Logging Format Truncated (Pylint)" 
    WARNING_FILTER += discard class="Logging Fstring Interpolation (Pylint)" 
    WARNING_FILTER += discard class="Logging Not Lazy (Pylint)" 
    WARNING_FILTER += discard class="Logging Too Few Args (Pylint)" 
    WARNING_FILTER += discard class="Logging Too Many Args (Pylint)" 
    WARNING_FILTER += discard class="Logging Unsupported Format (Pylint)" 
    WARNING_FILTER += discard class="Lost Exception (Pylint)" 
    WARNING_FILTER += discard class="Method Cache Max Size None (Pylint)" 
    WARNING_FILTER += discard class="Method Check Failed (Pylint)" 
    WARNING_FILTER += discard class="Method Hidden (Pylint)" 
    WARNING_FILTER += discard class="Misplaced Bare Raise (Pylint)" 
    WARNING_FILTER += discard class="Misplaced Format Function (Pylint)" 
    WARNING_FILTER += discard class="Misplaced Future (Pylint)" 
    WARNING_FILTER += discard class="Missing Class Docstring (Pylint)" 
    WARNING_FILTER += discard class="Missing Final Newline (Pylint)" 
    WARNING_FILTER += discard class="Missing Format Argument Key (Pylint)" 
    WARNING_FILTER += discard class="Missing Format Attribute (Pylint)" 
    WARNING_FILTER += discard class="Missing Format String Key (Pylint)" 
    WARNING_FILTER += discard class="Missing Function Docstring (Pylint)" 
    WARNING_FILTER += discard class="Missing Kwoa (Pylint)" 
    WARNING_FILTER += discard class="Missing Module Docstring (Pylint)" 
    WARNING_FILTER += discard class="Missing Parentheses for Call in Test (Pylint)" 
    WARNING_FILTER += discard class="Missing Timeout (Pylint)" 
    WARNING_FILTER += discard class="Mixed Format String (Pylint)" 
    WARNING_FILTER += discard class="Mixed Line Endings (Pylint)" 
    WARNING_FILTER += discard class="Modified Iterating Dict (Pylint)" 
    WARNING_FILTER += discard class="Modified Iterating List (Pylint)" 
    WARNING_FILTER += discard class="Modified Iterating Set (Pylint)" 
    WARNING_FILTER += discard class="Multiple Imports (Pylint)" 
    WARNING_FILTER += discard class="Multiple Statements (Pylint)" 
    WARNING_FILTER += discard class="Named Expr Without Context (Pylint)" 
    WARNING_FILTER += discard class="Nan Comparison (Pylint)" 
    WARNING_FILTER += discard class="Nested Min Max (Pylint)" 
    WARNING_FILTER += discard class="No Classmethod Decorator (Pylint)" 
    WARNING_FILTER += discard class="No Else Break (Pylint)" 
    WARNING_FILTER += discard class="No Else Continue (Pylint)" 
    WARNING_FILTER += discard class="No Else Raise (Pylint)" 
    WARNING_FILTER += discard class="No Else Return (Pylint)" 
    WARNING_FILTER += discard class="No Member (Pylint)" 
    WARNING_FILTER += discard class="No Method Argument (Pylint)" 
    WARNING_FILTER += discard class="No Name in Module (Pylint)" 
    WARNING_FILTER += discard class="No Self Argument (Pylint)" 
    WARNING_FILTER += discard class="No Staticmethod Decorator (Pylint)" 
    WARNING_FILTER += discard class="No Value for Parameter (Pylint)" 
    WARNING_FILTER += discard class="Non Ascii File Name (Pylint)" 
    WARNING_FILTER += discard class="Non Ascii Module Import (Pylint)" 
    WARNING_FILTER += discard class="Non Ascii Name (Pylint)" 
    WARNING_FILTER += discard class="Non Iterator Returned (Pylint)" 
    WARNING_FILTER += discard class="Non Parent Init Called (Pylint)" 
    WARNING_FILTER += discard class="Non Str Assignment to Dunder Name (Pylint)" 
    WARNING_FILTER += discard class="Nonexistent Operator (Pylint)" 
    WARNING_FILTER += discard class="Nonlocal Without Binding (Pylint)" 
    WARNING_FILTER += discard class="Nonlocal and Global (Pylint)" 
    WARNING_FILTER += discard class="Not Async Context Manager (Pylint)" 
    WARNING_FILTER += discard class="Not Callable (Pylint)" 
    WARNING_FILTER += discard class="Not Context Manager (Pylint)" 
    WARNING_FILTER += discard class="Not a Mapping (Pylint)" 
    WARNING_FILTER += discard class="Not an Iterable (Pylint)" 
    WARNING_FILTER += discard class="Not in Loop (Pylint)" 
    WARNING_FILTER += discard class="Notimplemented Raised (Pylint)" 
    WARNING_FILTER += discard class="Overridden Final Method (Pylint)" 
    WARNING_FILTER += discard class="Parse Error (Pylint)" 
    WARNING_FILTER += discard class="Pointless Exception Statement (Pylint)" 
    WARNING_FILTER += discard class="Pointless Statement (Pylint)" 
    WARNING_FILTER += discard class="Pointless String Statement (Pylint)" 
    WARNING_FILTER += discard class="Positional Only Arguments Expected (Pylint)" 
    WARNING_FILTER += discard class="Possibly Unused Variable (Pylint)" 
    WARNING_FILTER += discard class="Potential Index Error (Pylint)" 
    WARNING_FILTER += discard class="Preferred Module (Pylint)" 
    WARNING_FILTER += discard class="Property With Parameters (Pylint)" 
    WARNING_FILTER += discard class="Protected Access (Pylint)" 
    WARNING_FILTER += discard class="Raise Missing From (Pylint)" 
    WARNING_FILTER += discard class="Raising Bad Type (Pylint)" 
    WARNING_FILTER += discard class="Raising Format Tuple (Pylint)" 
    WARNING_FILTER += discard class="Raising Non Exception (Pylint)" 
    WARNING_FILTER += discard class="Raw Checker Failed (Pylint)" 
    WARNING_FILTER += discard class="Redeclared Assigned Name (Pylint)" 
    WARNING_FILTER += discard class="Redefined Argument From Local (Pylint)" 
    WARNING_FILTER += discard class="Redefined Builtin (Pylint)" 
    WARNING_FILTER += discard class="Redefined Outer Name (Pylint)" 
    WARNING_FILTER += discard class="Redefined Slots in Subclass (Pylint)" 
    WARNING_FILTER += discard class="Redundant Keyword Arg (Pylint)" 
    WARNING_FILTER += discard class="Redundant U String Prefix (Pylint)" 
    WARNING_FILTER += discard class="Redundant Unittest Assert (Pylint)" 
    WARNING_FILTER += discard class="Reimported (Pylint)" 
    WARNING_FILTER += discard class="Relative Beyond Top Level (Pylint)" 
    WARNING_FILTER += discard class="Repeated Keyword (Pylint)" 
    WARNING_FILTER += discard class="Return Arg in Generator (Pylint)" 
    WARNING_FILTER += discard class="Return Outside Function (Pylint)" 
    WARNING_FILTER += discard class="Return in Finally (Pylint)" 
    WARNING_FILTER += discard class="Return in Init (Pylint)" 
    WARNING_FILTER += discard class="Self Assigning Variable (Pylint)" 
    WARNING_FILTER += discard class="Self Cls Assignment (Pylint)" 
    WARNING_FILTER += discard class="Shadowed Import (Pylint)" 
    WARNING_FILTER += discard class="Shallow Copy Environ (Pylint)" 
    WARNING_FILTER += discard class="Signature Differs (Pylint)" 
    WARNING_FILTER += discard class="Simplifiable Condition (Pylint)" 
    WARNING_FILTER += discard class="Simplifiable If Expression (Pylint)" 
    WARNING_FILTER += discard class="Simplifiable If Statement (Pylint)" 
    WARNING_FILTER += discard class="Simplify Boolean Expression (Pylint)" 
    WARNING_FILTER += discard class="Single String Used for Slots (Pylint)" 
    WARNING_FILTER += discard class="Singledispatch Method (Pylint)" 
    WARNING_FILTER += discard class="Singledispatchmethod Function (Pylint)" 
    WARNING_FILTER += discard class="Singleton Comparison (Pylint)" 
    WARNING_FILTER += discard class="Star Needs Assignment Target (Pylint)" 
    WARNING_FILTER += discard class="Stop Iteration Return (Pylint)" 
    WARNING_FILTER += discard class="Subclassed Final Class (Pylint)" 
    WARNING_FILTER += discard class="Subprocess Popen Preexec Fn (Pylint)" 
    WARNING_FILTER += discard class="Subprocess Run Check (Pylint)" 
    WARNING_FILTER += discard class="Super Init Not Called (Pylint)" 
    WARNING_FILTER += discard class="Super With Arguments (Pylint)" 
    WARNING_FILTER += discard class="Super Without Brackets (Pylint)" 
    WARNING_FILTER += discard class="Superfluous Parens (Pylint)" 
    WARNING_FILTER += discard class="Suppressed Message (Pylint)" 
    WARNING_FILTER += discard class="Syntax Error (Pylint)" 
    WARNING_FILTER += discard class="Too Few Format Args (Pylint)" 
    WARNING_FILTER += discard class="Too Few Public Methods (Pylint)" 
    WARNING_FILTER += discard class="Too Many Ancestors (Pylint)" 
    WARNING_FILTER += discard class="Too Many Arguments (Pylint)" 
    WARNING_FILTER += discard class="Too Many Boolean Expressions (Pylint)" 
    WARNING_FILTER += discard class="Too Many Branches (Pylint)" 
    WARNING_FILTER += discard class="Too Many Format Args (Pylint)" 
    WARNING_FILTER += discard class="Too Many Function Args (Pylint)" 
    WARNING_FILTER += discard class="Too Many Instance Attributes (Pylint)" 
    WARNING_FILTER += discard class="Too Many Lines (Pylint)" 
    WARNING_FILTER += discard class="Too Many Locals (Pylint)" 
    WARNING_FILTER += discard class="Too Many Nested Blocks (Pylint)" 
    WARNING_FILTER += discard class="Too Many Public Methods (Pylint)" 
    WARNING_FILTER += discard class="Too Many Return Statements (Pylint)" 
    WARNING_FILTER += discard class="Too Many Star Expressions (Pylint)" 
    WARNING_FILTER += discard class="Too Many Statements (Pylint)" 
    WARNING_FILTER += discard class="Trailing Comma Tuple (Pylint)" 
    WARNING_FILTER += discard class="Trailing Newlines (Pylint)" 
    WARNING_FILTER += discard class="Trailing Whitespace (Pylint)" 
    WARNING_FILTER += discard class="Truncated Format String (Pylint)" 
    WARNING_FILTER += discard class="Try Except Raise (Pylint)" 
    WARNING_FILTER += discard class="Typevar Double Variance (Pylint)" 
    WARNING_FILTER += discard class="Typevar Name Incorrect Variance (Pylint)" 
    WARNING_FILTER += discard class="Typevar Name Mismatch (Pylint)" 
    WARNING_FILTER += discard class="Unbalanced Dict Unpacking (Pylint)" 
    WARNING_FILTER += discard class="Unbalanced Tuple Unpacking (Pylint)" 
    WARNING_FILTER += discard class="Undefined All Variable (Pylint)" 
    WARNING_FILTER += discard class="Undefined Loop Variable (Pylint)" 
    WARNING_FILTER += discard class="Undefined Variable (Pylint)" 
    WARNING_FILTER += discard class="Unexpected Keyword Arg (Pylint)" 
    WARNING_FILTER += discard class="Unexpected Line Ending Format (Pylint)" 
    WARNING_FILTER += discard class="Unexpected Special Method Signature (Pylint)" 
    WARNING_FILTER += discard class="Ungrouped Imports (Pylint)" 
    WARNING_FILTER += discard class="Unhashable Member (Pylint)" 
    WARNING_FILTER += discard class="Unidiomatic Typecheck (Pylint)" 
    WARNING_FILTER += discard class="Unknown Option Value (Pylint)" 
    WARNING_FILTER += discard class="Unnecessary Comprehension (Pylint)" 
    WARNING_FILTER += discard class="Unnecessary Dict Index Lookup (Pylint)" 
    WARNING_FILTER += discard class="Unnecessary Direct Lambda Call (Pylint)" 
    WARNING_FILTER += discard class="Unnecessary Dunder Call (Pylint)" 
    WARNING_FILTER += discard class="Unnecessary Ellipsis (Pylint)" 
    WARNING_FILTER += discard class="Unnecessary Lambda (Pylint)" 
    WARNING_FILTER += discard class="Unnecessary Lambda Assignment (Pylint)" 
    WARNING_FILTER += discard class="Unnecessary List Index Lookup (Pylint)" 
    WARNING_FILTER += discard class="Unnecessary Negation (Pylint)" 
    WARNING_FILTER += discard class="Unnecessary Pass (Pylint)" 
    WARNING_FILTER += discard class="Unnecessary Semicolon (Pylint)" 
    WARNING_FILTER += discard class="Unpacking Non Sequence (Pylint)" 
    WARNING_FILTER += discard class="Unreachable (Pylint)" 
    WARNING_FILTER += discard class="Unrecognized Inline Option (Pylint)" 
    WARNING_FILTER += discard class="Unrecognized Option (Pylint)" 
    WARNING_FILTER += discard class="Unspecified Encoding (Pylint)" 
    WARNING_FILTER += discard class="Unsubscriptable Object (Pylint)" 
    WARNING_FILTER += discard class="Unsupported Assignment Operation (Pylint)" 
    WARNING_FILTER += discard class="Unsupported Binary Operation (Pylint)" 
    WARNING_FILTER += discard class="Unsupported Delete Operation (Pylint)" 
    WARNING_FILTER += discard class="Unsupported Membership Test (Pylint)" 
    WARNING_FILTER += discard class="Unused Argument (Pylint)" 
    WARNING_FILTER += discard class="Unused Format String Argument (Pylint)" 
    WARNING_FILTER += discard class="Unused Format String Key (Pylint)" 
    WARNING_FILTER += discard class="Unused Import (Pylint)" 
    WARNING_FILTER += discard class="Unused Private Member (Pylint)" 
    WARNING_FILTER += discard class="Unused Variable (Pylint)" 
    WARNING_FILTER += discard class="Unused Wildcard Import (Pylint)" 
    WARNING_FILTER += discard class="Use Dict Literal (Pylint)" 
    WARNING_FILTER += discard class="Use Implicit Booleaness Not Comparison (Pylint)" 
    WARNING_FILTER += discard class="Use Implicit Booleaness Not Comparison to String (Pylint)" 
    WARNING_FILTER += discard class="Use Implicit Booleaness Not Comparison to Zero (Pylint)" 
    WARNING_FILTER += discard class="Use Implicit Booleaness Not Len (Pylint)" 
    WARNING_FILTER += discard class="Use List Literal (Pylint)" 
    WARNING_FILTER += discard class="Use Maxsplit Arg (Pylint)" 
    WARNING_FILTER += discard class="Use Sequence for Iteration (Pylint)" 
    WARNING_FILTER += discard class="Use Symbolic Message Instead (Pylint)" 
    WARNING_FILTER += discard class="Use a Generator (Pylint)" 
    WARNING_FILTER += discard class="Used Before Assignment (Pylint)" 
    WARNING_FILTER += discard class="Used Prior Global Declaration (Pylint)" 
    WARNING_FILTER += discard class="Useless Else on Loop (Pylint)" 
    WARNING_FILTER += discard class="Useless Import Alias (Pylint)" 
    WARNING_FILTER += discard class="Useless Object Inheritance (Pylint)" 
    WARNING_FILTER += discard class="Useless Option Value (Pylint)" 
    WARNING_FILTER += discard class="Useless Parent Delegation (Pylint)" 
    WARNING_FILTER += discard class="Useless Return (Pylint)" 
    WARNING_FILTER += discard class="Useless Suppression (Pylint)" 
    WARNING_FILTER += discard class="Useless With Lock (Pylint)" 
    WARNING_FILTER += discard class="Using Constant Test (Pylint)" 
    WARNING_FILTER += discard class="Using F String in Unsupported Version (Pylint)" 
    WARNING_FILTER += discard class="Using Final Decorator in Unsupported Version (Pylint)" 
    WARNING_FILTER += discard class="Wildcard Import (Pylint)" 
    WARNING_FILTER += discard class="Wrong Exception Operation (Pylint)" 
    WARNING_FILTER += discard class="Wrong Import Order (Pylint)" 
    WARNING_FILTER += discard class="Wrong Import Position (Pylint)" 
    WARNING_FILTER += discard class="Wrong Spelling in Comment (Pylint)" 
    WARNING_FILTER += discard class="Wrong Spelling in Docstring (Pylint)" 
    WARNING_FILTER += discard class="Yield Inside Async Function (Pylint)" 
    WARNING_FILTER += discard class="Yield Outside Function (Pylint)" 

 (Rust warning classes) 
    WARNING_FILTER += discard class="Absolute Paths (Rust Clippy)" 
    WARNING_FILTER += discard class="Absurd Extreme Comparisons (Rust Clippy)" 
    WARNING_FILTER += discard class="Alloc Instead of Core (Rust Clippy)" 
    WARNING_FILTER += discard class="Allow Attributes (Rust Clippy)" 
    WARNING_FILTER += discard class="Allow Attributes Without Reason (Rust Clippy)" 
    WARNING_FILTER += discard class="Almost Complete Range (Rust Clippy)" 
    WARNING_FILTER += discard class="Almost Swapped (Rust Clippy)" 
    WARNING_FILTER += discard class="Approx Constant (Rust Clippy)" 
    WARNING_FILTER += discard class="Arc With Non Send Sync (Rust Clippy)" 
    WARNING_FILTER += discard class="Arithmetic Side Effects (Rust Clippy)" 
    WARNING_FILTER += discard class="As Conversions (Rust Clippy)" 
    WARNING_FILTER += discard class="As Ptr Cast Mut (Rust Clippy)" 
    WARNING_FILTER += discard class="As Underscore (Rust Clippy)" 
    WARNING_FILTER += discard class="Assertions on Constants (Rust Clippy)" 
    WARNING_FILTER += discard class="Assertions on Result States (Rust Clippy)" 
    WARNING_FILTER += discard class="Assign Op Pattern (Rust Clippy)" 
    WARNING_FILTER += discard class="Assign Ops (Rust Clippy)" 
    WARNING_FILTER += discard class="Async Yields Async (Rust Clippy)" 
    WARNING_FILTER += discard class="Await Holding Invalid Type (Rust Clippy)" 
    WARNING_FILTER += discard class="Await Holding Lock (Rust Clippy)" 
    WARNING_FILTER += discard class="Await Holding Refcell Ref (Rust Clippy)" 
    WARNING_FILTER += discard class="Bad Bit Mask (Rust Clippy)" 
    WARNING_FILTER += discard class="Big Endian Bytes (Rust Clippy)" 
    WARNING_FILTER += discard class="Bind Instead of Map (Rust Clippy)" 
    WARNING_FILTER += discard class="Blanket Clippy Restriction Lints (Rust Clippy)" 
    WARNING_FILTER += discard class="Blocks in If Conditions (Rust Clippy)" 
    WARNING_FILTER += discard class="Bool Assert Comparison (Rust Clippy)" 
    WARNING_FILTER += discard class="Bool Comparison (Rust Clippy)" 
    WARNING_FILTER += discard class="Bool to Int With If (Rust Clippy)" 
    WARNING_FILTER += discard class="Borrow As Ptr (Rust Clippy)" 
    WARNING_FILTER += discard class="Borrow Deref Ref (Rust Clippy)" 
    WARNING_FILTER += discard class="Borrow Interior Mutable Const (Rust Clippy)" 
    WARNING_FILTER += discard class="Borrowed Box (Rust Clippy)" 
    WARNING_FILTER += discard class="Box Collection (Rust Clippy)" 
    WARNING_FILTER += discard class="Box Default (Rust Clippy)" 
    WARNING_FILTER += discard class="Boxed Local (Rust Clippy)" 
    WARNING_FILTER += discard class="Branches Sharing Code (Rust Clippy)" 
    WARNING_FILTER += discard class="Builtin Type Shadow (Rust Clippy)" 
    WARNING_FILTER += discard class="Bytes Count to Len (Rust Clippy)" 
    WARNING_FILTER += discard class="Bytes Nth (Rust Clippy)" 
    WARNING_FILTER += discard class="Cargo Common Metadata (Rust Clippy)" 
    WARNING_FILTER += discard class="Case Sensitive File Extension Comparisons (Rust Clippy)" 
    WARNING_FILTER += discard class="Cast Abs to Unsigned (Rust Clippy)" 
    WARNING_FILTER += discard class="Cast Enum Constructor (Rust Clippy)" 
    WARNING_FILTER += discard class="Cast Enum Truncation (Rust Clippy)" 
    WARNING_FILTER += discard class="Cast Lossless (Rust Clippy)" 
    WARNING_FILTER += discard class="Cast Nan to Int (Rust Clippy)" 
    WARNING_FILTER += discard class="Cast Possible Truncation (Rust Clippy)" 
    WARNING_FILTER += discard class="Cast Possible Wrap (Rust Clippy)" 
    WARNING_FILTER += discard class="Cast Precision Loss (Rust Clippy)" 
    WARNING_FILTER += discard class="Cast Ptr Alignment (Rust Clippy)" 
    WARNING_FILTER += discard class="Cast Sign Loss (Rust Clippy)" 
    WARNING_FILTER += discard class="Cast Slice Different Sizes (Rust Clippy)" 
    WARNING_FILTER += discard class="Cast Slice From Raw Parts (Rust Clippy)" 
    WARNING_FILTER += discard class="Char Lit As U8 (Rust Clippy)" 
    WARNING_FILTER += discard class="Chars Last Cmp (Rust Clippy)" 
    WARNING_FILTER += discard class="Chars Next Cmp (Rust Clippy)" 
    WARNING_FILTER += discard class="Checked Conversions (Rust Clippy)" 
    WARNING_FILTER += discard class="Clear With Drain (Rust Clippy)" 
    WARNING_FILTER += discard class="Clone on Copy (Rust Clippy)" 
    WARNING_FILTER += discard class="Clone on Ref Ptr (Rust Clippy)" 
    WARNING_FILTER += discard class="Cloned Instead of Copied (Rust Clippy)" 
    WARNING_FILTER += discard class="Cmp Null (Rust Clippy)" 
    WARNING_FILTER += discard class="Cmp Owned (Rust Clippy)" 
    WARNING_FILTER += discard class="Cognitive Complexity (Rust Clippy)" 
    WARNING_FILTER += discard class="Collapsible Else If (Rust Clippy)" 
    WARNING_FILTER += discard class="Collapsible If (Rust Clippy)" 
    WARNING_FILTER += discard class="Collapsible Match (Rust Clippy)" 
    WARNING_FILTER += discard class="Collapsible Str Replace (Rust Clippy)" 
    WARNING_FILTER += discard class="Collection Is Never Read (Rust Clippy)" 
    WARNING_FILTER += discard class="Comparison Chain (Rust Clippy)" 
    WARNING_FILTER += discard class="Comparison to Empty (Rust Clippy)" 
    WARNING_FILTER += discard class="Copy Iterator (Rust Clippy)" 
    WARNING_FILTER += discard class="Copy-Paste Error" 
    WARNING_FILTER += discard class="Crate in Macro Def (Rust Clippy)" 
    WARNING_FILTER += discard class="Create Dir (Rust Clippy)" 
    WARNING_FILTER += discard class="Crosspointer Transmute (Rust Clippy)" 
    WARNING_FILTER += discard class="Dbg Macro (Rust Clippy)" 
    WARNING_FILTER += discard class="Debug Assert With Mut Call (Rust Clippy)" 
    WARNING_FILTER += discard class="Decimal Literal Representation (Rust Clippy)" 
    WARNING_FILTER += discard class="Declare Interior Mutable Const (Rust Clippy)" 
    WARNING_FILTER += discard class="Default Constructed Unit Structs (Rust Clippy)" 
    WARNING_FILTER += discard class="Default Instead of Iter Empty (Rust Clippy)" 
    WARNING_FILTER += discard class="Default Numeric Fallback (Rust Clippy)" 
    WARNING_FILTER += discard class="Default Trait Access (Rust Clippy)" 
    WARNING_FILTER += discard class="Default Union Representation (Rust Clippy)" 
    WARNING_FILTER += discard class="Deprecated Cfg Attr (Rust Clippy)" 
    WARNING_FILTER += discard class="Deprecated Semver (Rust Clippy)" 
    WARNING_FILTER += discard class="Deref Addrof (Rust Clippy)" 
    WARNING_FILTER += discard class="Deref By Slicing (Rust Clippy)" 
    WARNING_FILTER += discard class="Derivable Impls (Rust Clippy)" 
    WARNING_FILTER += discard class="Derive Ord Xor Partial Ord (Rust Clippy)" 
    WARNING_FILTER += discard class="Derive Partial Eq Without Eq (Rust Clippy)" 
    WARNING_FILTER += discard class="Derived Hash With Manual Eq (Rust Clippy)" 
    WARNING_FILTER += discard class="Disallowed Macros (Rust Clippy)" 
    WARNING_FILTER += discard class="Disallowed Methods (Rust Clippy)" 
    WARNING_FILTER += discard class="Disallowed Names (Rust Clippy)" 
    WARNING_FILTER += discard class="Disallowed Script Idents (Rust Clippy)" 
    WARNING_FILTER += discard class="Disallowed Types (Rust Clippy)" 
    WARNING_FILTER += discard class="Diverging Sub Expression (Rust Clippy)" 
    WARNING_FILTER += discard class="Doc Link With Quotes (Rust Clippy)" 
    WARNING_FILTER += discard class="Doc Markdown (Rust Clippy)" 
    WARNING_FILTER += discard class="Double Comparisons (Rust Clippy)" 
    WARNING_FILTER += discard class="Double Must Use (Rust Clippy)" 
    WARNING_FILTER += discard class="Double Neg (Rust Clippy)" 
    WARNING_FILTER += discard class="Double Parens (Rust Clippy)" 
    WARNING_FILTER += discard class="Drain Collect (Rust Clippy)" 
    WARNING_FILTER += discard class="Drop Non Drop (Rust Clippy)" 
    WARNING_FILTER += discard class="Duplicate Mod (Rust Clippy)" 
    WARNING_FILTER += discard class="Duplicate Underscore Argument (Rust Clippy)" 
    WARNING_FILTER += discard class="Duration Subsec (Rust Clippy)" 
    WARNING_FILTER += discard class="Else If Without Else (Rust Clippy)" 
    WARNING_FILTER += discard class="Empty Drop (Rust Clippy)" 
    WARNING_FILTER += discard class="Empty Enum (Rust Clippy)" 
    WARNING_FILTER += discard class="Empty Line After Doc Comments (Rust Clippy)" 
    WARNING_FILTER += discard class="Empty Line After Outer Attr (Rust Clippy)" 
    WARNING_FILTER += discard class="Empty Loop (Rust Clippy)" 
    WARNING_FILTER += discard class="Empty Structs With Brackets (Rust Clippy)" 
    WARNING_FILTER += discard class="Enum Clike Unportable Variant (Rust Clippy)" 
    WARNING_FILTER += discard class="Enum Glob Use (Rust Clippy)" 
    WARNING_FILTER += discard class="Enum Variant Names (Rust Clippy)" 
    WARNING_FILTER += discard class="Eq Op (Rust Clippy)" 
    WARNING_FILTER += discard class="Equatable If Let (Rust Clippy)" 
    WARNING_FILTER += discard class="Erasing Op (Rust Clippy)" 
    WARNING_FILTER += discard class="Err Expect (Rust Clippy)" 
    WARNING_FILTER += discard class="Error Impl Error (Rust Clippy)" 
    WARNING_FILTER += discard class="Excessive Nesting (Rust Clippy)" 
    WARNING_FILTER += discard class="Excessive Precision (Rust Clippy)" 
    WARNING_FILTER += discard class="Exhaustive Enums (Rust Clippy)" 
    WARNING_FILTER += discard class="Exhaustive Structs (Rust Clippy)" 
    WARNING_FILTER += discard class="Exit (Rust Clippy)" 
    WARNING_FILTER += discard class="Expect Fun Call (Rust Clippy)" 
    WARNING_FILTER += discard class="Expect Used (Rust Clippy)" 
    WARNING_FILTER += discard class="Expl Impl Clone on Copy (Rust Clippy)" 
    WARNING_FILTER += discard class="Explicit Auto Deref (Rust Clippy)" 
    WARNING_FILTER += discard class="Explicit Counter Loop (Rust Clippy)" 
    WARNING_FILTER += discard class="Explicit Deref Methods (Rust Clippy)" 
    WARNING_FILTER += discard class="Explicit Into Iter Loop (Rust Clippy)" 
    WARNING_FILTER += discard class="Explicit Iter Loop (Rust Clippy)" 
    WARNING_FILTER += discard class="Explicit Write (Rust Clippy)" 
    WARNING_FILTER += discard class="Extend From Slice (Rust Clippy)" 
    WARNING_FILTER += discard class="Extend With Drain (Rust Clippy)" 
    WARNING_FILTER += discard class="Extra Unused Lifetimes (Rust Clippy)" 
    WARNING_FILTER += discard class="Extra Unused Type Parameters (Rust Clippy)" 
    WARNING_FILTER += discard class="Fallible Impl From (Rust Clippy)" 
    WARNING_FILTER += discard class="Field Reassign With Default (Rust Clippy)" 
    WARNING_FILTER += discard class="Filetype Is File (Rust Clippy)" 
    WARNING_FILTER += discard class="Filter Map (Rust Clippy)" 
    WARNING_FILTER += discard class="Filter Map Bool Then (Rust Clippy)" 
    WARNING_FILTER += discard class="Filter Map Identity (Rust Clippy)" 
    WARNING_FILTER += discard class="Filter Map Next (Rust Clippy)" 
    WARNING_FILTER += discard class="Filter Next (Rust Clippy)" 
    WARNING_FILTER += discard class="Find Map (Rust Clippy)" 
    WARNING_FILTER += discard class="Flat Map Identity (Rust Clippy)" 
    WARNING_FILTER += discard class="Flat Map Option (Rust Clippy)" 
    WARNING_FILTER += discard class="Float Arithmetic (Rust Clippy)" 
    WARNING_FILTER += discard class="Float Cmp (Rust Clippy)" 
    WARNING_FILTER += discard class="Float Cmp Const (Rust Clippy)" 
    WARNING_FILTER += discard class="Float Equality Without Abs (Rust Clippy)" 
    WARNING_FILTER += discard class="Fn Address Comparisons (Rust Clippy)" 
    WARNING_FILTER += discard class="Fn Params Excessive Bools (Rust Clippy)" 
    WARNING_FILTER += discard class="Fn to Numeric Cast (Rust Clippy)" 
    WARNING_FILTER += discard class="Fn to Numeric Cast Any (Rust Clippy)" 
    WARNING_FILTER += discard class="Fn to Numeric Cast With Truncation (Rust Clippy)" 
    WARNING_FILTER += discard class="For Kv Map (Rust Clippy)" 
    WARNING_FILTER += discard class="Forget Non Drop (Rust Clippy)" 
    WARNING_FILTER += discard class="Format Collect (Rust Clippy)" 
    WARNING_FILTER += discard class="Format Push String (Rust Clippy)" 
    WARNING_FILTER += discard class="Format in Format Args (Rust Clippy)" 
    WARNING_FILTER += discard class="Four Forward Slashes (Rust Clippy)" 
    WARNING_FILTER += discard class="From Iter Instead of Collect (Rust Clippy)" 
    WARNING_FILTER += discard class="From Over Into (Rust Clippy)" 
    WARNING_FILTER += discard class="From Raw With Void Ptr (Rust Clippy)" 
    WARNING_FILTER += discard class="From Str Radix 10 (Rust Clippy)" 
    WARNING_FILTER += discard class="Future Not Send (Rust Clippy)" 
    WARNING_FILTER += discard class="Get First (Rust Clippy)" 
    WARNING_FILTER += discard class="Get Last With Len (Rust Clippy)" 
    WARNING_FILTER += discard class="Get Unwrap (Rust Clippy)" 
    WARNING_FILTER += discard class="Host Endian Bytes (Rust Clippy)" 
    WARNING_FILTER += discard class="Identity Op (Rust Clippy)" 
    WARNING_FILTER += discard class="If Let Mutex (Rust Clippy)" 
    WARNING_FILTER += discard class="If Let Redundant Pattern Matching (Rust Clippy)" 
    WARNING_FILTER += discard class="If Not Else (Rust Clippy)" 
    WARNING_FILTER += discard class="If Same Then Else (Rust Clippy)" 
    WARNING_FILTER += discard class="If Then Some Else None (Rust Clippy)" 
    WARNING_FILTER += discard class="Ifs Same Cond (Rust Clippy)" 
    WARNING_FILTER += discard class="Ignored Unit Patterns (Rust Clippy)" 
    WARNING_FILTER += discard class="Impl Trait in Params (Rust Clippy)" 
    WARNING_FILTER += discard class="Implicit Clone (Rust Clippy)" 
    WARNING_FILTER += discard class="Implicit Hasher (Rust Clippy)" 
    WARNING_FILTER += discard class="Implicit Return (Rust Clippy)" 
    WARNING_FILTER += discard class="Implicit Saturating Add (Rust Clippy)" 
    WARNING_FILTER += discard class="Implicit Saturating Sub (Rust Clippy)" 
    WARNING_FILTER += discard class="Implied Bounds in Impls (Rust Clippy)" 
    WARNING_FILTER += discard class="Impossible Comparisons (Rust Clippy)" 
    WARNING_FILTER += discard class="Imprecise Flops (Rust Clippy)" 
    WARNING_FILTER += discard class="Inconsistent Digit Grouping (Rust Clippy)" 
    WARNING_FILTER += discard class="Inconsistent Struct Constructor (Rust Clippy)" 
    WARNING_FILTER += discard class="Index Refutable Slice (Rust Clippy)" 
    WARNING_FILTER += discard class="Indexing Slicing (Rust Clippy)" 
    WARNING_FILTER += discard class="Ineffective Bit Mask (Rust Clippy)" 
    WARNING_FILTER += discard class="Inefficient to String (Rust Clippy)" 
    WARNING_FILTER += discard class="Infallible Destructuring Match (Rust Clippy)" 
    WARNING_FILTER += discard class="Infinite Iter (Rust Clippy)" 
    WARNING_FILTER += discard class="Inherent to String (Rust Clippy)" 
    WARNING_FILTER += discard class="Inherent to String Shadow Display (Rust Clippy)" 
    WARNING_FILTER += discard class="Init Numbered Fields (Rust Clippy)" 
    WARNING_FILTER += discard class="Inline Always (Rust Clippy)" 
    WARNING_FILTER += discard class="Inline Asm X86 Att Syntax (Rust Clippy)" 
    WARNING_FILTER += discard class="Inline Asm X86 Intel Syntax (Rust Clippy)" 
    WARNING_FILTER += discard class="Inline Fn Without Body (Rust Clippy)" 
    WARNING_FILTER += discard class="Inspect for Each (Rust Clippy)" 
    WARNING_FILTER += discard class="Int Plus One (Rust Clippy)" 
    WARNING_FILTER += discard class="Integer Division (Rust Clippy)" 
    WARNING_FILTER += discard class="Into Iter Without Iter (Rust Clippy)" 
    WARNING_FILTER += discard class="Into Iter on Ref (Rust Clippy)" 
    WARNING_FILTER += discard class="Invalid Null Ptr Usage (Rust Clippy)" 
    WARNING_FILTER += discard class="Invalid Regex (Rust Clippy)" 
    WARNING_FILTER += discard class="Invalid Upcast Comparisons (Rust Clippy)" 
    WARNING_FILTER += discard class="Invisible Characters (Rust Clippy)" 
    WARNING_FILTER += discard class="Is Digit Ascii Radix (Rust Clippy)" 
    WARNING_FILTER += discard class="Items After Statements (Rust Clippy)" 
    WARNING_FILTER += discard class="Items After Test Module (Rust Clippy)" 
    WARNING_FILTER += discard class="Iter Cloned Collect (Rust Clippy)" 
    WARNING_FILTER += discard class="Iter Count (Rust Clippy)" 
    WARNING_FILTER += discard class="Iter Kv Map (Rust Clippy)" 
    WARNING_FILTER += discard class="Iter Next Loop (Rust Clippy)" 
    WARNING_FILTER += discard class="Iter Next Slice (Rust Clippy)" 
    WARNING_FILTER += discard class="Iter Not Returning Iterator (Rust Clippy)" 
    WARNING_FILTER += discard class="Iter Nth (Rust Clippy)" 
    WARNING_FILTER += discard class="Iter Nth Zero (Rust Clippy)" 
    WARNING_FILTER += discard class="Iter Out of Bounds (Rust Clippy)" 
    WARNING_FILTER += discard class="Iter Overeager Cloned (Rust Clippy)" 
    WARNING_FILTER += discard class="Iter Skip Next (Rust Clippy)" 
    WARNING_FILTER += discard class="Iter Skip Zero (Rust Clippy)" 
    WARNING_FILTER += discard class="Iter With Drain (Rust Clippy)" 
    WARNING_FILTER += discard class="Iter Without Into Iter (Rust Clippy)" 
    WARNING_FILTER += discard class="Iter on Empty Collections (Rust Clippy)" 
    WARNING_FILTER += discard class="Iter on Single Items (Rust Clippy)" 
    WARNING_FILTER += discard class="Iterator Step By Zero (Rust Clippy)" 
    WARNING_FILTER += discard class="Just Underscores and Digits (Rust Clippy)" 
    WARNING_FILTER += discard class="Large Const Arrays (Rust Clippy)" 
    WARNING_FILTER += discard class="Large Digit Groups (Rust Clippy)" 
    WARNING_FILTER += discard class="Large Enum Variant (Rust Clippy)" 
    WARNING_FILTER += discard class="Large Futures (Rust Clippy)" 
    WARNING_FILTER += discard class="Large Include File (Rust Clippy)" 
    WARNING_FILTER += discard class="Large Stack Arrays (Rust Clippy)" 
    WARNING_FILTER += discard class="Large Stack Frames (Rust Clippy)" 
    WARNING_FILTER += discard class="Large Types Passed By Value (Rust Clippy)" 
    WARNING_FILTER += discard class="Len Without Is Empty (Rust Clippy)" 
    WARNING_FILTER += discard class="Len Zero (Rust Clippy)" 
    WARNING_FILTER += discard class="Let Underscore Future (Rust Clippy)" 
    WARNING_FILTER += discard class="Let Underscore Lock (Rust Clippy)" 
    WARNING_FILTER += discard class="Let Underscore Must Use (Rust Clippy)" 
    WARNING_FILTER += discard class="Let Underscore Untyped (Rust Clippy)" 
    WARNING_FILTER += discard class="Let Unit Value (Rust Clippy)" 
    WARNING_FILTER += discard class="Let With Type Underscore (Rust Clippy)" 
    WARNING_FILTER += discard class="Let and Return (Rust Clippy)" 
    WARNING_FILTER += discard class="Lines Filter Map Ok (Rust Clippy)" 
    WARNING_FILTER += discard class="Linkedlist (Rust Clippy)" 
    WARNING_FILTER += discard class="Little Endian Bytes (Rust Clippy)" 
    WARNING_FILTER += discard class="Lossy Float Literal (Rust Clippy)" 
    WARNING_FILTER += discard class="Macro Use Imports (Rust Clippy)" 
    WARNING_FILTER += discard class="Main Recursion (Rust Clippy)" 
    WARNING_FILTER += discard class="Manual Assert (Rust Clippy)" 
    WARNING_FILTER += discard class="Manual Async Fn (Rust Clippy)" 
    WARNING_FILTER += discard class="Manual Bits (Rust Clippy)" 
    WARNING_FILTER += discard class="Manual Clamp (Rust Clippy)" 
    WARNING_FILTER += discard class="Manual Filter (Rust Clippy)" 
    WARNING_FILTER += discard class="Manual Filter Map (Rust Clippy)" 
    WARNING_FILTER += discard class="Manual Find (Rust Clippy)" 
    WARNING_FILTER += discard class="Manual Find Map (Rust Clippy)" 
    WARNING_FILTER += discard class="Manual Flatten (Rust Clippy)" 
    WARNING_FILTER += discard class="Manual Hash One (Rust Clippy)" 
    WARNING_FILTER += discard class="Manual Instant Elapsed (Rust Clippy)" 
    WARNING_FILTER += discard class="Manual Is Ascii Check (Rust Clippy)" 
    WARNING_FILTER += discard class="Manual Is Finite (Rust Clippy)" 
    WARNING_FILTER += discard class="Manual Is Infinite (Rust Clippy)" 
    WARNING_FILTER += discard class="Manual Let Else (Rust Clippy)" 
    WARNING_FILTER += discard class="Manual Main Separator Str (Rust Clippy)" 
    WARNING_FILTER += discard class="Manual Map (Rust Clippy)" 
    WARNING_FILTER += discard class="Manual Memcpy (Rust Clippy)" 
    WARNING_FILTER += discard class="Manual Next Back (Rust Clippy)" 
    WARNING_FILTER += discard class="Manual Non Exhaustive (Rust Clippy)" 
    WARNING_FILTER += discard class="Manual Ok or (Rust Clippy)" 
    WARNING_FILTER += discard class="Manual Range Contains (Rust Clippy)" 
    WARNING_FILTER += discard class="Manual Range Patterns (Rust Clippy)" 
    WARNING_FILTER += discard class="Manual Rem Euclid (Rust Clippy)" 
    WARNING_FILTER += discard class="Manual Retain (Rust Clippy)" 
    WARNING_FILTER += discard class="Manual Saturating Arithmetic (Rust Clippy)" 
    WARNING_FILTER += discard class="Manual Slice Size Calculation (Rust Clippy)" 
    WARNING_FILTER += discard class="Manual Split Once (Rust Clippy)" 
    WARNING_FILTER += discard class="Manual Str Repeat (Rust Clippy)" 
    WARNING_FILTER += discard class="Manual String New (Rust Clippy)" 
    WARNING_FILTER += discard class="Manual Strip (Rust Clippy)" 
    WARNING_FILTER += discard class="Manual Swap (Rust Clippy)" 
    WARNING_FILTER += discard class="Manual Try Fold (Rust Clippy)" 
    WARNING_FILTER += discard class="Manual Unwrap or (Rust Clippy)" 
    WARNING_FILTER += discard class="Manual While Let Some (Rust Clippy)" 
    WARNING_FILTER += discard class="Many Single Char Names (Rust Clippy)" 
    WARNING_FILTER += discard class="Map Clone (Rust Clippy)" 
    WARNING_FILTER += discard class="Map Collect Result Unit (Rust Clippy)" 
    WARNING_FILTER += discard class="Map Entry (Rust Clippy)" 
    WARNING_FILTER += discard class="Map Err Ignore (Rust Clippy)" 
    WARNING_FILTER += discard class="Map Flatten (Rust Clippy)" 
    WARNING_FILTER += discard class="Map Identity (Rust Clippy)" 
    WARNING_FILTER += discard class="Map Unwrap or (Rust Clippy)" 
    WARNING_FILTER += discard class="Match As Ref (Rust Clippy)" 
    WARNING_FILTER += discard class="Match Bool (Rust Clippy)" 
    WARNING_FILTER += discard class="Match Like Matches Macro (Rust Clippy)" 
    WARNING_FILTER += discard class="Match Overlapping Arm (Rust Clippy)" 
    WARNING_FILTER += discard class="Match Ref Pats (Rust Clippy)" 
    WARNING_FILTER += discard class="Match Result Ok (Rust Clippy)" 
    WARNING_FILTER += discard class="Match Same Arms (Rust Clippy)" 
    WARNING_FILTER += discard class="Match Single Binding (Rust Clippy)" 
    WARNING_FILTER += discard class="Match Str Case Mismatch (Rust Clippy)" 
    WARNING_FILTER += discard class="Match Wild Err Arm (Rust Clippy)" 
    WARNING_FILTER += discard class="Match Wildcard for Single Variants (Rust Clippy)" 
    WARNING_FILTER += discard class="Match on Vec Items (Rust Clippy)" 
    WARNING_FILTER += discard class="Maybe Infinite Iter (Rust Clippy)" 
    WARNING_FILTER += discard class="Maybe Misused Cfg (Rust Clippy)" 
    WARNING_FILTER += discard class="Mem Forget (Rust Clippy)" 
    WARNING_FILTER += discard class="Mem Replace Option With None (Rust Clippy)" 
    WARNING_FILTER += discard class="Mem Replace With Default (Rust Clippy)" 
    WARNING_FILTER += discard class="Mem Replace With Uninit (Rust Clippy)" 
    WARNING_FILTER += discard class="Min Ident Chars (Rust Clippy)" 
    WARNING_FILTER += discard class="Min Max (Rust Clippy)" 
    WARNING_FILTER += discard class="Misaligned Transmute (Rust Clippy)" 
    WARNING_FILTER += discard class="Mismatched Target Os (Rust Clippy)" 
    WARNING_FILTER += discard class="Mismatching Type Param Order (Rust Clippy)" 
    WARNING_FILTER += discard class="Misnamed Getters (Rust Clippy)" 
    WARNING_FILTER += discard class="Misrefactored Assign Op (Rust Clippy)" 
    WARNING_FILTER += discard class="Missing Assert Message (Rust Clippy)" 
    WARNING_FILTER += discard class="Missing Asserts for Indexing (Rust Clippy)" 
    WARNING_FILTER += discard class="Missing Const for Fn (Rust Clippy)" 
    WARNING_FILTER += discard class="Missing Docs in Private Items (Rust Clippy)" 
    WARNING_FILTER += discard class="Missing Enforced Import Renames (Rust Clippy)" 
    WARNING_FILTER += discard class="Missing Errors Doc (Rust Clippy)" 
    WARNING_FILTER += discard class="Missing Fields in Debug (Rust Clippy)" 
    WARNING_FILTER += discard class="Missing Inline in Public Items (Rust Clippy)" 
    WARNING_FILTER += discard class="Missing Panics Doc (Rust Clippy)" 
    WARNING_FILTER += discard class="Missing Safety Doc (Rust Clippy)" 
    WARNING_FILTER += discard class="Missing Spin Loop (Rust Clippy)" 
    WARNING_FILTER += discard class="Missing Trait Methods (Rust Clippy)" 
    WARNING_FILTER += discard class="Mistyped Literal Suffixes (Rust Clippy)" 
    WARNING_FILTER += discard class="Mixed Case Hex Literals (Rust Clippy)" 
    WARNING_FILTER += discard class="Mixed Read Write in Expression (Rust Clippy)" 
    WARNING_FILTER += discard class="Mod Module Files (Rust Clippy)" 
    WARNING_FILTER += discard class="Module Inception (Rust Clippy)" 
    WARNING_FILTER += discard class="Module Name Repetitions (Rust Clippy)" 
    WARNING_FILTER += discard class="Modulo Arithmetic (Rust Clippy)" 
    WARNING_FILTER += discard class="Modulo One (Rust Clippy)" 
    WARNING_FILTER += discard class="Multi Assignments (Rust Clippy)" 
    WARNING_FILTER += discard class="Multiple Crate Versions (Rust Clippy)" 
    WARNING_FILTER += discard class="Multiple Inherent Impl (Rust Clippy)" 
    WARNING_FILTER += discard class="Multiple Unsafe Ops Per Block (Rust Clippy)" 
    WARNING_FILTER += discard class="Must Use Candidate (Rust Clippy)" 
    WARNING_FILTER += discard class="Must Use Unit (Rust Clippy)" 
    WARNING_FILTER += discard class="Mut From Ref (Rust Clippy)" 
    WARNING_FILTER += discard class="Mut Mut (Rust Clippy)" 
    WARNING_FILTER += discard class="Mut Mutex Lock (Rust Clippy)" 
    WARNING_FILTER += discard class="Mut Range Bound (Rust Clippy)" 
    WARNING_FILTER += discard class="Mutable Key Type (Rust Clippy)" 
    WARNING_FILTER += discard class="Mutex Atomic (Rust Clippy)" 
    WARNING_FILTER += discard class="Mutex Integer (Rust Clippy)" 
    WARNING_FILTER += discard class="Naive Bytecount (Rust Clippy)" 
    WARNING_FILTER += discard class="Needless Arbitrary Self Type (Rust Clippy)" 
    WARNING_FILTER += discard class="Needless Bitwise Bool (Rust Clippy)" 
    WARNING_FILTER += discard class="Needless Bool (Rust Clippy)" 
    WARNING_FILTER += discard class="Needless Bool Assign (Rust Clippy)" 
    WARNING_FILTER += discard class="Needless Borrow (Rust Clippy)" 
    WARNING_FILTER += discard class="Needless Borrowed Reference (Rust Clippy)" 
    WARNING_FILTER += discard class="Needless Borrows for Generic Args (Rust Clippy)" 
    WARNING_FILTER += discard class="Needless Collect (Rust Clippy)" 
    WARNING_FILTER += discard class="Needless Continue (Rust Clippy)" 
    WARNING_FILTER += discard class="Needless Doctest Main (Rust Clippy)" 
    WARNING_FILTER += discard class="Needless Else (Rust Clippy)" 
    WARNING_FILTER += discard class="Needless If (Rust Clippy)" 
    WARNING_FILTER += discard class="Needless Late Init (Rust Clippy)" 
    WARNING_FILTER += discard class="Needless Lifetimes (Rust Clippy)" 
    WARNING_FILTER += discard class="Needless Match (Rust Clippy)" 
    WARNING_FILTER += discard class="Needless Option As Deref (Rust Clippy)" 
    WARNING_FILTER += discard class="Needless Option Take (Rust Clippy)" 
    WARNING_FILTER += discard class="Needless Parens on Range Literals (Rust Clippy)" 
    WARNING_FILTER += discard class="Needless Pass By Ref Mut (Rust Clippy)" 
    WARNING_FILTER += discard class="Needless Pass By Value (Rust Clippy)" 
    WARNING_FILTER += discard class="Needless Pub Self (Rust Clippy)" 
    WARNING_FILTER += discard class="Needless Question Mark (Rust Clippy)" 
    WARNING_FILTER += discard class="Needless Range Loop (Rust Clippy)" 
    WARNING_FILTER += discard class="Needless Raw String Hashes (Rust Clippy)" 
    WARNING_FILTER += discard class="Needless Raw Strings (Rust Clippy)" 
    WARNING_FILTER += discard class="Needless Return (Rust Clippy)" 
    WARNING_FILTER += discard class="Needless Return With Question Mark (Rust Clippy)" 
    WARNING_FILTER += discard class="Needless Splitn (Rust Clippy)" 
    WARNING_FILTER += discard class="Needless Update (Rust Clippy)" 
    WARNING_FILTER += discard class="Needless for Each (Rust Clippy)" 
    WARNING_FILTER += discard class="Neg Cmp Op on Partial Ord (Rust Clippy)" 
    WARNING_FILTER += discard class="Neg Multiply (Rust Clippy)" 
    WARNING_FILTER += discard class="Negative Feature Names (Rust Clippy)" 
    WARNING_FILTER += discard class="Never Loop (Rust Clippy)" 
    WARNING_FILTER += discard class="New Ret No Self (Rust Clippy)" 
    WARNING_FILTER += discard class="New Without Default (Rust Clippy)" 
    WARNING_FILTER += discard class="No Effect (Rust Clippy)" 
    WARNING_FILTER += discard class="No Effect Replace (Rust Clippy)" 
    WARNING_FILTER += discard class="No Effect Underscore Binding (Rust Clippy)" 
    WARNING_FILTER += discard class="No Mangle With Rust Abi (Rust Clippy)" 
    WARNING_FILTER += discard class="Non Ascii Literal (Rust Clippy)" 
    WARNING_FILTER += discard class="Non Canonical Clone Impl (Rust Clippy)" 
    WARNING_FILTER += discard class="Non Canonical Partial Ord Impl (Rust Clippy)" 
    WARNING_FILTER += discard class="Non Minimal Cfg (Rust Clippy)" 
    WARNING_FILTER += discard class="Non Octal Unix Permissions (Rust Clippy)" 
    WARNING_FILTER += discard class="Non Send Fields in Send Ty (Rust Clippy)" 
    WARNING_FILTER += discard class="Nonminimal Bool (Rust Clippy)" 
    WARNING_FILTER += discard class="Nonsensical Open Options (Rust Clippy)" 
    WARNING_FILTER += discard class="Nonstandard Macro Braces (Rust Clippy)" 
    WARNING_FILTER += discard class="Not Unsafe Ptr Arg Deref (Rust Clippy)" 
    WARNING_FILTER += discard class="Obfuscated If Else (Rust Clippy)" 
    WARNING_FILTER += discard class="Octal Escapes (Rust Clippy)" 
    WARNING_FILTER += discard class="Ok Expect (Rust Clippy)" 
    WARNING_FILTER += discard class="Only Used in Recursion (Rust Clippy)" 
    WARNING_FILTER += discard class="Op Ref (Rust Clippy)" 
    WARNING_FILTER += discard class="Option As Ref Deref (Rust Clippy)" 
    WARNING_FILTER += discard class="Option Env Unwrap (Rust Clippy)" 
    WARNING_FILTER += discard class="Option Filter Map (Rust Clippy)" 
    WARNING_FILTER += discard class="Option If Let Else (Rust Clippy)" 
    WARNING_FILTER += discard class="Option Map Unit Fn (Rust Clippy)" 
    WARNING_FILTER += discard class="Option Map or None (Rust Clippy)" 
    WARNING_FILTER += discard class="Option Option (Rust Clippy)" 
    WARNING_FILTER += discard class="Or Fun Call (Rust Clippy)" 
    WARNING_FILTER += discard class="Or Then Unwrap (Rust Clippy)" 
    WARNING_FILTER += discard class="Out of Bounds Indexing (Rust Clippy)" 
    WARNING_FILTER += discard class="Overflow Check Conditional (Rust Clippy)" 
    WARNING_FILTER += discard class="Overly Complex Bool Expr (Rust Clippy)" 
    WARNING_FILTER += discard class="Panic (Rust Clippy)" 
    WARNING_FILTER += discard class="Panic in Result Fn (Rust Clippy)" 
    WARNING_FILTER += discard class="Panicking Unwrap (Rust Clippy)" 
    WARNING_FILTER += discard class="Partial Pub Fields (Rust Clippy)" 
    WARNING_FILTER += discard class="Partialeq Ne Impl (Rust Clippy)" 
    WARNING_FILTER += discard class="Partialeq to None (Rust Clippy)" 
    WARNING_FILTER += discard class="Path Buf Push Overwrite (Rust Clippy)" 
    WARNING_FILTER += discard class="Path Ends With Ext (Rust Clippy)" 
    WARNING_FILTER += discard class="Pattern Type Mismatch (Rust Clippy)" 
    WARNING_FILTER += discard class="Permissions Set Readonly False (Rust Clippy)" 
    WARNING_FILTER += discard class="Possible Missing Comma (Rust Clippy)" 
    WARNING_FILTER += discard class="Precedence (Rust Clippy)" 
    WARNING_FILTER += discard class="Print Literal (Rust Clippy)" 
    WARNING_FILTER += discard class="Print Stderr (Rust Clippy)" 
    WARNING_FILTER += discard class="Print Stdout (Rust Clippy)" 
    WARNING_FILTER += discard class="Print With Newline (Rust Clippy)" 
    WARNING_FILTER += discard class="Print in Format Impl (Rust Clippy)" 
    WARNING_FILTER += discard class="Println Empty String (Rust Clippy)" 
    WARNING_FILTER += discard class="Ptr Arg (Rust Clippy)" 
    WARNING_FILTER += discard class="Ptr As Ptr (Rust Clippy)" 
    WARNING_FILTER += discard class="Ptr Cast Constness (Rust Clippy)" 
    WARNING_FILTER += discard class="Ptr Eq (Rust Clippy)" 
    WARNING_FILTER += discard class="Ptr Offset With Cast (Rust Clippy)" 
    WARNING_FILTER += discard class="Pub Enum Variant Names (Rust Clippy)" 
    WARNING_FILTER += discard class="Pub Use (Rust Clippy)" 
    WARNING_FILTER += discard class="Pub With Shorthand (Rust Clippy)" 
    WARNING_FILTER += discard class="Pub Without Shorthand (Rust Clippy)" 
    WARNING_FILTER += discard class="Question Mark (Rust Clippy)" 
    WARNING_FILTER += discard class="Question Mark Used (Rust Clippy)" 
    WARNING_FILTER += discard class="Range Minus One (Rust Clippy)" 
    WARNING_FILTER += discard class="Range Plus One (Rust Clippy)" 
    WARNING_FILTER += discard class="Range Step By Zero (Rust Clippy)" 
    WARNING_FILTER += discard class="Range Zip With Len (Rust Clippy)" 
    WARNING_FILTER += discard class="Rc Buffer (Rust Clippy)" 
    WARNING_FILTER += discard class="Rc Clone in Vec Init (Rust Clippy)" 
    WARNING_FILTER += discard class="Rc Mutex (Rust Clippy)" 
    WARNING_FILTER += discard class="Read Line Without Trim (Rust Clippy)" 
    WARNING_FILTER += discard class="Read Zero Byte Vec (Rust Clippy)" 
    WARNING_FILTER += discard class="Readonly Write Lock (Rust Clippy)" 
    WARNING_FILTER += discard class="Recursive Format Impl (Rust Clippy)" 
    WARNING_FILTER += discard class="Redundant Allocation (Rust Clippy)" 
    WARNING_FILTER += discard class="Redundant As Str (Rust Clippy)" 
    WARNING_FILTER += discard class="Redundant Async Block (Rust Clippy)" 
    WARNING_FILTER += discard class="Redundant Clone (Rust Clippy)" 
    WARNING_FILTER += discard class="Redundant Closure (Rust Clippy)" 
    WARNING_FILTER += discard class="Redundant Closure Call (Rust Clippy)" 
    WARNING_FILTER += discard class="Redundant Closure for Method Calls (Rust Clippy)" 
    WARNING_FILTER += discard class="Redundant Comparisons (Rust Clippy)" 
    WARNING_FILTER += discard class="Redundant Else (Rust Clippy)" 
    WARNING_FILTER += discard class="Redundant Feature Names (Rust Clippy)" 
    WARNING_FILTER += discard class="Redundant Field Names (Rust Clippy)" 
    WARNING_FILTER += discard class="Redundant Guards (Rust Clippy)" 
    WARNING_FILTER += discard class="Redundant Locals (Rust Clippy)" 
    WARNING_FILTER += discard class="Redundant Pattern (Rust Clippy)" 
    WARNING_FILTER += discard class="Redundant Pattern Matching (Rust Clippy)" 
    WARNING_FILTER += discard class="Redundant Pub Crate (Rust Clippy)" 
    WARNING_FILTER += discard class="Redundant Slicing (Rust Clippy)" 
    WARNING_FILTER += discard class="Redundant Static Lifetimes (Rust Clippy)" 
    WARNING_FILTER += discard class="Redundant Type Annotations (Rust Clippy)" 
    WARNING_FILTER += discard class="Redundant at Rest Pattern (Rust Clippy)" 
    WARNING_FILTER += discard class="Ref Binding to Reference (Rust Clippy)" 
    WARNING_FILTER += discard class="Ref Option Ref (Rust Clippy)" 
    WARNING_FILTER += discard class="Ref Patterns (Rust Clippy)" 
    WARNING_FILTER += discard class="Regex Macro (Rust Clippy)" 
    WARNING_FILTER += discard class="Repeat Once (Rust Clippy)" 
    WARNING_FILTER += discard class="Replace Consts (Rust Clippy)" 
    WARNING_FILTER += discard class="Reserve After Initialization (Rust Clippy)" 
    WARNING_FILTER += discard class="Rest Pat in Fully Bound Structs (Rust Clippy)" 
    WARNING_FILTER += discard class="Result Large Err (Rust Clippy)" 
    WARNING_FILTER += discard class="Result Map Unit Fn (Rust Clippy)" 
    WARNING_FILTER += discard class="Result Map or Into Option (Rust Clippy)" 
    WARNING_FILTER += discard class="Result Unit Err (Rust Clippy)" 
    WARNING_FILTER += discard class="Return Self Not Must Use (Rust Clippy)" 
    WARNING_FILTER += discard class="Reversed Empty Ranges (Rust Clippy)" 
    WARNING_FILTER += discard class="Same Functions in If Condition (Rust Clippy)" 
    WARNING_FILTER += discard class="Same Item Push (Rust Clippy)" 
    WARNING_FILTER += discard class="Same Name Method (Rust Clippy)" 
    WARNING_FILTER += discard class="Search Is Some (Rust Clippy)" 
    WARNING_FILTER += discard class="Seek From Current (Rust Clippy)" 
    WARNING_FILTER += discard class="Seek to Start Instead of Rewind (Rust Clippy)" 
    WARNING_FILTER += discard class="Self Assignment (Rust Clippy)" 
    WARNING_FILTER += discard class="Self Named Constructors (Rust Clippy)" 
    WARNING_FILTER += discard class="Self Named Module Files (Rust Clippy)" 
    WARNING_FILTER += discard class="Semicolon If Nothing Returned (Rust Clippy)" 
    WARNING_FILTER += discard class="Semicolon Inside Block (Rust Clippy)" 
    WARNING_FILTER += discard class="Semicolon Outside Block (Rust Clippy)" 
    WARNING_FILTER += discard class="Separated Literal Suffix (Rust Clippy)" 
    WARNING_FILTER += discard class="Serde Api Misuse (Rust Clippy)" 
    WARNING_FILTER += discard class="Shadow Reuse (Rust Clippy)" 
    WARNING_FILTER += discard class="Shadow Same (Rust Clippy)" 
    WARNING_FILTER += discard class="Shadow Unrelated (Rust Clippy)" 
    WARNING_FILTER += discard class="Short Circuit Statement (Rust Clippy)" 
    WARNING_FILTER += discard class="Should Assert Eq (Rust Clippy)" 
    WARNING_FILTER += discard class="Should Implement Trait (Rust Clippy)" 
    WARNING_FILTER += discard class="Should Panic Without Expect (Rust Clippy)" 
    WARNING_FILTER += discard class="Significant Drop Tightening (Rust Clippy)" 
    WARNING_FILTER += discard class="Significant Drop in Scrutinee (Rust Clippy)" 
    WARNING_FILTER += discard class="Similar Names (Rust Clippy)" 
    WARNING_FILTER += discard class="Single Call Fn (Rust Clippy)" 
    WARNING_FILTER += discard class="Single Char Add Str (Rust Clippy)" 
    WARNING_FILTER += discard class="Single Char Lifetime Names (Rust Clippy)" 
    WARNING_FILTER += discard class="Single Char Pattern (Rust Clippy)" 
    WARNING_FILTER += discard class="Single Component Path Imports (Rust Clippy)" 
    WARNING_FILTER += discard class="Single Element Loop (Rust Clippy)" 
    WARNING_FILTER += discard class="Single Match (Rust Clippy)" 
    WARNING_FILTER += discard class="Single Match Else (Rust Clippy)" 
    WARNING_FILTER += discard class="Single Range in Vec Init (Rust Clippy)" 
    WARNING_FILTER += discard class="Size of Ref (Rust Clippy)" 
    WARNING_FILTER += discard class="Size of in Element Count (Rust Clippy)" 
    WARNING_FILTER += discard class="Skip While Next (Rust Clippy)" 
    WARNING_FILTER += discard class="Slow Vector Initialization (Rust Clippy)" 
    WARNING_FILTER += discard class="Stable Sort Primitive (Rust Clippy)" 
    WARNING_FILTER += discard class="Std Instead of Alloc (Rust Clippy)" 
    WARNING_FILTER += discard class="Std Instead of Core (Rust Clippy)" 
    WARNING_FILTER += discard class="Str to String (Rust Clippy)" 
    WARNING_FILTER += discard class="String Add (Rust Clippy)" 
    WARNING_FILTER += discard class="String Add Assign (Rust Clippy)" 
    WARNING_FILTER += discard class="String Extend Chars (Rust Clippy)" 
    WARNING_FILTER += discard class="String From Utf8 As Bytes (Rust Clippy)" 
    WARNING_FILTER += discard class="String Lit As Bytes (Rust Clippy)" 
    WARNING_FILTER += discard class="String Lit Chars Any (Rust Clippy)" 
    WARNING_FILTER += discard class="String Slice (Rust Clippy)" 
    WARNING_FILTER += discard class="String to String (Rust Clippy)" 
    WARNING_FILTER += discard class="Strlen on C Strings (Rust Clippy)" 
    WARNING_FILTER += discard class="Struct Excessive Bools (Rust Clippy)" 
    WARNING_FILTER += discard class="Struct Field Names (Rust Clippy)" 
    WARNING_FILTER += discard class="Suboptimal Flops (Rust Clippy)" 
    WARNING_FILTER += discard class="Suspicious Arithmetic Impl (Rust Clippy)" 
    WARNING_FILTER += discard class="Suspicious Assignment Formatting (Rust Clippy)" 
    WARNING_FILTER += discard class="Suspicious Command Arg Space (Rust Clippy)" 
    WARNING_FILTER += discard class="Suspicious Doc Comments (Rust Clippy)" 
    WARNING_FILTER += discard class="Suspicious Else Formatting (Rust Clippy)" 
    WARNING_FILTER += discard class="Suspicious Map (Rust Clippy)" 
    WARNING_FILTER += discard class="Suspicious Op Assign Impl (Rust Clippy)" 
    WARNING_FILTER += discard class="Suspicious Operation Groupings (Rust Clippy)" 
    WARNING_FILTER += discard class="Suspicious Splitn (Rust Clippy)" 
    WARNING_FILTER += discard class="Suspicious Unary Op Formatting (Rust Clippy)" 
    WARNING_FILTER += discard class="Suspicious Xor Used As Pow (Rust Clippy)" 
    WARNING_FILTER += discard class="Suspicious to Owned (Rust Clippy)" 
    WARNING_FILTER += discard class="Swap Ptr to Ref (Rust Clippy)" 
    WARNING_FILTER += discard class="Tabs in Doc Comments (Rust Clippy)" 
    WARNING_FILTER += discard class="Temporary Assignment (Rust Clippy)" 
    WARNING_FILTER += discard class="Tests Outside Test Module (Rust Clippy)" 
    WARNING_FILTER += discard class="To Digit Is Some (Rust Clippy)" 
    WARNING_FILTER += discard class="To String in Format Args (Rust Clippy)" 
    WARNING_FILTER += discard class="Todo (Rust Clippy)" 
    WARNING_FILTER += discard class="Too Many Arguments (Rust Clippy)" 
    WARNING_FILTER += discard class="Too Many Lines (Rust Clippy)" 
    WARNING_FILTER += discard class="Toplevel Ref Arg (Rust Clippy)" 
    WARNING_FILTER += discard class="Trailing Empty Array (Rust Clippy)" 
    WARNING_FILTER += discard class="Trait Duplication in Bounds (Rust Clippy)" 
    WARNING_FILTER += discard class="Transmute Bytes to Str (Rust Clippy)" 
    WARNING_FILTER += discard class="Transmute Float to Int (Rust Clippy)" 
    WARNING_FILTER += discard class="Transmute Int to Bool (Rust Clippy)" 
    WARNING_FILTER += discard class="Transmute Int to Char (Rust Clippy)" 
    WARNING_FILTER += discard class="Transmute Int to Float (Rust Clippy)" 
    WARNING_FILTER += discard class="Transmute Int to Non Zero (Rust Clippy)" 
    WARNING_FILTER += discard class="Transmute Null to Fn (Rust Clippy)" 
    WARNING_FILTER += discard class="Transmute Num to Bytes (Rust Clippy)" 
    WARNING_FILTER += discard class="Transmute Ptr to Ptr (Rust Clippy)" 
    WARNING_FILTER += discard class="Transmute Ptr to Ref (Rust Clippy)" 
    WARNING_FILTER += discard class="Transmute Undefined Repr (Rust Clippy)" 
    WARNING_FILTER += discard class="Transmutes Expressible As Ptr Casts (Rust Clippy)" 
    WARNING_FILTER += discard class="Transmuting Null (Rust Clippy)" 
    WARNING_FILTER += discard class="Trim Split Whitespace (Rust Clippy)" 
    WARNING_FILTER += discard class="Trivial Regex (Rust Clippy)" 
    WARNING_FILTER += discard class="Trivially Copy Pass By Ref (Rust Clippy)" 
    WARNING_FILTER += discard class="Try Err (Rust Clippy)" 
    WARNING_FILTER += discard class="Tuple Array Conversions (Rust Clippy)" 
    WARNING_FILTER += discard class="Type Complexity (Rust Clippy)" 
    WARNING_FILTER += discard class="Type Id on Box (Rust Clippy)" 
    WARNING_FILTER += discard class="Type Repetition in Bounds (Rust Clippy)" 
    WARNING_FILTER += discard class="Unchecked Duration Subtraction (Rust Clippy)" 
    WARNING_FILTER += discard class="Undocumented Unsafe Blocks (Rust Clippy)" 
    WARNING_FILTER += discard class="Unicode Not Nfc (Rust Clippy)" 
    WARNING_FILTER += discard class="Unimplemented (Rust Clippy)" 
    WARNING_FILTER += discard class="Uninit Assumed Init (Rust Clippy)" 
    WARNING_FILTER += discard class="Uninit Vec (Rust Clippy)" 
    WARNING_FILTER += discard class="Uninlined Format Args (Rust Clippy)" 
    WARNING_FILTER += discard class="Unit Arg (Rust Clippy)" 
    WARNING_FILTER += discard class="Unit Cmp (Rust Clippy)" 
    WARNING_FILTER += discard class="Unit Hash (Rust Clippy)" 
    WARNING_FILTER += discard class="Unit Return Expecting Ord (Rust Clippy)" 
    WARNING_FILTER += discard class="Unnecessary Box Returns (Rust Clippy)" 
    WARNING_FILTER += discard class="Unnecessary Cast (Rust Clippy)" 
    WARNING_FILTER += discard class="Unnecessary Fallible Conversions (Rust Clippy)" 
    WARNING_FILTER += discard class="Unnecessary Filter Map (Rust Clippy)" 
    WARNING_FILTER += discard class="Unnecessary Find Map (Rust Clippy)" 
    WARNING_FILTER += discard class="Unnecessary Fold (Rust Clippy)" 
    WARNING_FILTER += discard class="Unnecessary Join (Rust Clippy)" 
    WARNING_FILTER += discard class="Unnecessary Lazy Evaluations (Rust Clippy)" 
    WARNING_FILTER += discard class="Unnecessary Literal Unwrap (Rust Clippy)" 
    WARNING_FILTER += discard class="Unnecessary Map on Constructor (Rust Clippy)" 
    WARNING_FILTER += discard class="Unnecessary Mut Passed (Rust Clippy)" 
    WARNING_FILTER += discard class="Unnecessary Operation (Rust Clippy)" 
    WARNING_FILTER += discard class="Unnecessary Owned Empty Strings (Rust Clippy)" 
    WARNING_FILTER += discard class="Unnecessary Safety Comment (Rust Clippy)" 
    WARNING_FILTER += discard class="Unnecessary Safety Doc (Rust Clippy)" 
    WARNING_FILTER += discard class="Unnecessary Self Imports (Rust Clippy)" 
    WARNING_FILTER += discard class="Unnecessary Sort By (Rust Clippy)" 
    WARNING_FILTER += discard class="Unnecessary Struct Initialization (Rust Clippy)" 
    WARNING_FILTER += discard class="Unnecessary Unwrap (Rust Clippy)" 
    WARNING_FILTER += discard class="Unnecessary Wraps (Rust Clippy)" 
    WARNING_FILTER += discard class="Unnecessary to Owned (Rust Clippy)" 
    WARNING_FILTER += discard class="Unneeded Field Pattern (Rust Clippy)" 
    WARNING_FILTER += discard class="Unneeded Wildcard Pattern (Rust Clippy)" 
    WARNING_FILTER += discard class="Unnested or Patterns (Rust Clippy)" 
    WARNING_FILTER += discard class="Unreachable (Rust Clippy)" 
    WARNING_FILTER += discard class="Unreadable Literal (Rust Clippy)" 
    WARNING_FILTER += discard class="Unsafe Derive Deserialize (Rust Clippy)" 
    WARNING_FILTER += discard class="Unsafe Removed From Name (Rust Clippy)" 
    WARNING_FILTER += discard class="Unsafe Vector Initialization (Rust Clippy)" 
    WARNING_FILTER += discard class="Unseparated Literal Suffix (Rust Clippy)" 
    WARNING_FILTER += discard class="Unsound Collection Transmute (Rust Clippy)" 
    WARNING_FILTER += discard class="Unstable As Mut Slice (Rust Clippy)" 
    WARNING_FILTER += discard class="Unstable As Slice (Rust Clippy)" 
    WARNING_FILTER += discard class="Unused Async (Rust Clippy)" 
    WARNING_FILTER += discard class="Unused Collect (Rust Clippy)" 
    WARNING_FILTER += discard class="Unused Enumerate Index (Rust Clippy)" 
    WARNING_FILTER += discard class="Unused Format Specs (Rust Clippy)" 
    WARNING_FILTER += discard class="Unused Io Amount (Rust Clippy)" 
    WARNING_FILTER += discard class="Unused Peekable (Rust Clippy)" 
    WARNING_FILTER += discard class="Unused Rounding (Rust Clippy)" 
    WARNING_FILTER += discard class="Unused Self (Rust Clippy)" 
    WARNING_FILTER += discard class="Unused Unit (Rust Clippy)" 
    WARNING_FILTER += discard class="Unusual Byte Groupings (Rust Clippy)" 
    WARNING_FILTER += discard class="Unwrap Used (Rust Clippy)" 
    WARNING_FILTER += discard class="Unwrap in Result (Rust Clippy)" 
    WARNING_FILTER += discard class="Unwrap or Default (Rust Clippy)" 
    WARNING_FILTER += discard class="Upper Case Acronyms (Rust Clippy)" 
    WARNING_FILTER += discard class="Use Debug (Rust Clippy)" 
    WARNING_FILTER += discard class="Use Self (Rust Clippy)" 
    WARNING_FILTER += discard class="Used Underscore Binding (Rust Clippy)" 
    WARNING_FILTER += discard class="Useless Asref (Rust Clippy)" 
    WARNING_FILTER += discard class="Useless Attribute (Rust Clippy)" 
    WARNING_FILTER += discard class="Useless Conversion (Rust Clippy)" 
    WARNING_FILTER += discard class="Useless Format (Rust Clippy)" 
    WARNING_FILTER += discard class="Useless Let If Seq (Rust Clippy)" 
    WARNING_FILTER += discard class="Useless Transmute (Rust Clippy)" 
    WARNING_FILTER += discard class="Useless Vec (Rust Clippy)" 
    WARNING_FILTER += discard class="Vec Box (Rust Clippy)" 
    WARNING_FILTER += discard class="Vec Init Then Push (Rust Clippy)" 
    WARNING_FILTER += discard class="Vec Resize to Zero (Rust Clippy)" 
    WARNING_FILTER += discard class="Verbose Bit Mask (Rust Clippy)" 
    WARNING_FILTER += discard class="Verbose File Reads (Rust Clippy)" 
    WARNING_FILTER += discard class="Vtable Address Comparisons (Rust Clippy)" 
    WARNING_FILTER += discard class="Waker Clone Wake (Rust Clippy)" 
    WARNING_FILTER += discard class="While Immutable Condition (Rust Clippy)" 
    WARNING_FILTER += discard class="While Let Loop (Rust Clippy)" 
    WARNING_FILTER += discard class="While Let on Iterator (Rust Clippy)" 
    WARNING_FILTER += discard class="Wildcard Dependencies (Rust Clippy)" 
    WARNING_FILTER += discard class="Wildcard Enum Match Arm (Rust Clippy)" 
    WARNING_FILTER += discard class="Wildcard Imports (Rust Clippy)" 
    WARNING_FILTER += discard class="Wildcard in or Patterns (Rust Clippy)" 
    WARNING_FILTER += discard class="Write Literal (Rust Clippy)" 
    WARNING_FILTER += discard class="Write With Newline (Rust Clippy)" 
    WARNING_FILTER += discard class="Writeln Empty String (Rust Clippy)" 
    WARNING_FILTER += discard class="Wrong Pub Self Convention (Rust Clippy)" 
    WARNING_FILTER += discard class="Wrong Self Convention (Rust Clippy)" 
    WARNING_FILTER += discard class="Wrong Transmute (Rust Clippy)" 
    WARNING_FILTER += discard class="Zero Divided By Zero (Rust Clippy)" 
    WARNING_FILTER += discard class="Zero Prefixed Literal (Rust Clippy)" 
    WARNING_FILTER += discard class="Zero Ptr (Rust Clippy)" 
    WARNING_FILTER += discard class="Zero Sized Map Values (Rust Clippy)" 
    WARNING_FILTER += discard class="Zst Offset (Rust Clippy)" 

 (JavaScript warning classes) 
    WARNING_FILTER += discard class="Accessor Pairs (ESLint)" 
    WARNING_FILTER += discard class="Array Bracket Newline (ESLint)" 
    WARNING_FILTER += discard class="Array Bracket Spacing (ESLint)" 
    WARNING_FILTER += discard class="Array Callback Return (ESLint)" 
    WARNING_FILTER += discard class="Array Element Newline (ESLint)" 
    WARNING_FILTER += discard class="Arrow Body Style (ESLint)" 
    WARNING_FILTER += discard class="Arrow Parens (ESLint)" 
    WARNING_FILTER += discard class="Arrow Spacing (ESLint)" 
    WARNING_FILTER += discard class="Block Scoped Var (ESLint)" 
    WARNING_FILTER += discard class="Block Spacing (ESLint)" 
    WARNING_FILTER += discard class="Brace Style (ESLint)" 
    WARNING_FILTER += discard class="Callback Return (ESLint)" 
    WARNING_FILTER += discard class="Camelcase (ESLint)" 
    WARNING_FILTER += discard class="Capitalized Comments (ESLint)" 
    WARNING_FILTER += discard class="Class Methods Use This (ESLint)" 
    WARNING_FILTER += discard class="Comma Dangle (ESLint)" 
    WARNING_FILTER += discard class="Comma Spacing (ESLint)" 
    WARNING_FILTER += discard class="Comma Style (ESLint)" 
    WARNING_FILTER += discard class="Complexity (ESLint)" 
    WARNING_FILTER += discard class="Computed Property Spacing (ESLint)" 
    WARNING_FILTER += discard class="Consistent Return (ESLint)" 
    WARNING_FILTER += discard class="Consistent This (ESLint)" 
    WARNING_FILTER += discard class="Constructor Super (ESLint)" 
    WARNING_FILTER += discard class="Copy-Paste Error" 
    WARNING_FILTER += discard class="Curly (ESLint)" 
    WARNING_FILTER += discard class="Default Case (ESLint)" 
    WARNING_FILTER += discard class="Default Case Last (ESLint)" 
    WARNING_FILTER += discard class="Default Param Last (ESLint)" 
    WARNING_FILTER += discard class="Dot Location (ESLint)" 
    WARNING_FILTER += discard class="Dot Notation (ESLint)" 
    WARNING_FILTER += discard class="Eol Last (ESLint)" 
    WARNING_FILTER += discard class="Equal-Equal-Equal (ESLint)" 
    WARNING_FILTER += discard class="For Direction (ESLint)" 
    WARNING_FILTER += discard class="Func Call Spacing (ESLint)" 
    WARNING_FILTER += discard class="Func Name Matching (ESLint)" 
    WARNING_FILTER += discard class="Func Names (ESLint)" 
    WARNING_FILTER += discard class="Func Style (ESLint)" 
    WARNING_FILTER += discard class="Function Call Argument Newline (ESLint)" 
    WARNING_FILTER += discard class="Function Paren Newline (ESLint)" 
    WARNING_FILTER += discard class="Generator Star Spacing (ESLint)" 
    WARNING_FILTER += discard class="Getter Return (ESLint)" 
    WARNING_FILTER += discard class="Global Require (ESLint)" 
    WARNING_FILTER += discard class="Grouped Accessor Pairs (ESLint)" 
    WARNING_FILTER += discard class="Guard for in (ESLint)" 
    WARNING_FILTER += discard class="Handle Callback Err (ESLint)" 
    WARNING_FILTER += discard class="Id Blacklist (ESLint)" 
    WARNING_FILTER += discard class="Id Denylist (ESLint)" 
    WARNING_FILTER += discard class="Id Length (ESLint)" 
    WARNING_FILTER += discard class="Id Match (ESLint)" 
    WARNING_FILTER += discard class="Implicit Arrow Linebreak (ESLint)" 
    WARNING_FILTER += discard class="Indent (ESLint)" 
    WARNING_FILTER += discard class="Indent Legacy (ESLint)" 
    WARNING_FILTER += discard class="Init Declarations (ESLint)" 
    WARNING_FILTER += discard class="Jsx Quotes (ESLint)" 
    WARNING_FILTER += discard class="Key Spacing (ESLint)" 
    WARNING_FILTER += discard class="Keyword Spacing (ESLint)" 
    WARNING_FILTER += discard class="Line Comment Position (ESLint)" 
    WARNING_FILTER += discard class="Linebreak Style (ESLint)" 
    WARNING_FILTER += discard class="Lines Around Comment (ESLint)" 
    WARNING_FILTER += discard class="Lines Around Directive (ESLint)" 
    WARNING_FILTER += discard class="Lines Between Class Members (ESLint)" 
    WARNING_FILTER += discard class="Logical Assignment Operators (ESLint)" 
    WARNING_FILTER += discard class="Max Classes Per File (ESLint)" 
    WARNING_FILTER += discard class="Max Depth (ESLint)" 
    WARNING_FILTER += discard class="Max Len (ESLint)" 
    WARNING_FILTER += discard class="Max Lines (ESLint)" 
    WARNING_FILTER += discard class="Max Lines Per Function (ESLint)" 
    WARNING_FILTER += discard class="Max Nested Callbacks (ESLint)" 
    WARNING_FILTER += discard class="Max Params (ESLint)" 
    WARNING_FILTER += discard class="Max Statements (ESLint)" 
    WARNING_FILTER += discard class="Max Statements Per Line (ESLint)" 
    WARNING_FILTER += discard class="Multiline Comment Style (ESLint)" 
    WARNING_FILTER += discard class="Multiline Ternary (ESLint)" 
    WARNING_FILTER += discard class="New Cap (ESLint)" 
    WARNING_FILTER += discard class="New Parens (ESLint)" 
    WARNING_FILTER += discard class="Newline After Var (ESLint)" 
    WARNING_FILTER += discard class="Newline Before Return (ESLint)" 
    WARNING_FILTER += discard class="Newline Per Chained Call (ESLint)" 
    WARNING_FILTER += discard class="No Alert (ESLint)" 
    WARNING_FILTER += discard class="No Array Constructor (ESLint)" 
    WARNING_FILTER += discard class="No Async Promise Executor (ESLint)" 
    WARNING_FILTER += discard class="No Await in Loop (ESLint)" 
    WARNING_FILTER += discard class="No Bitwise (ESLint)" 
    WARNING_FILTER += discard class="No Buffer Constructor (ESLint)" 
    WARNING_FILTER += discard class="No Caller (ESLint)" 
    WARNING_FILTER += discard class="No Case Declarations (ESLint)" 
    WARNING_FILTER += discard class="No Catch Shadow (ESLint)" 
    WARNING_FILTER += discard class="No Class Assign (ESLint)" 
    WARNING_FILTER += discard class="No Compare Neg Zero (ESLint)" 
    WARNING_FILTER += discard class="No Cond Assign (ESLint)" 
    WARNING_FILTER += discard class="No Confusing Arrow (ESLint)" 
    WARNING_FILTER += discard class="No Console (ESLint)" 
    WARNING_FILTER += discard class="No Const Assign (ESLint)" 
    WARNING_FILTER += discard class="No Constant Binary Expression (ESLint)" 
    WARNING_FILTER += discard class="No Constant Condition (ESLint)" 
    WARNING_FILTER += discard class="No Constructor Return (ESLint)" 
    WARNING_FILTER += discard class="No Continue (ESLint)" 
    WARNING_FILTER += discard class="No Control Regex (ESLint)" 
    WARNING_FILTER += discard class="No Debugger (ESLint)" 
    WARNING_FILTER += discard class="No Delete Var (ESLint)" 
    WARNING_FILTER += discard class="No Div Regex (ESLint)" 
    WARNING_FILTER += discard class="No Dupe Args (ESLint)" 
    WARNING_FILTER += discard class="No Dupe Class Members (ESLint)" 
    WARNING_FILTER += discard class="No Dupe Else If (ESLint)" 
    WARNING_FILTER += discard class="No Dupe Keys (ESLint)" 
    WARNING_FILTER += discard class="No Duplicate Case (ESLint)" 
    WARNING_FILTER += discard class="No Duplicate Imports (ESLint)" 
    WARNING_FILTER += discard class="No Else Return (ESLint)" 
    WARNING_FILTER += discard class="No Empty (ESLint)" 
    WARNING_FILTER += discard class="No Empty Character Class (ESLint)" 
    WARNING_FILTER += discard class="No Empty Function (ESLint)" 
    WARNING_FILTER += discard class="No Empty Pattern (ESLint)" 
    WARNING_FILTER += discard class="No Empty Static Block (ESLint)" 
    WARNING_FILTER += discard class="No Eq Null (ESLint)" 
    WARNING_FILTER += discard class="No Eval (ESLint)" 
    WARNING_FILTER += discard class="No Ex Assign (ESLint)" 
    WARNING_FILTER += discard class="No Extend Native (ESLint)" 
    WARNING_FILTER += discard class="No Extra Bind (ESLint)" 
    WARNING_FILTER += discard class="No Extra Boolean Cast (ESLint)" 
    WARNING_FILTER += discard class="No Extra Label (ESLint)" 
    WARNING_FILTER += discard class="No Extra Parens (ESLint)" 
    WARNING_FILTER += discard class="No Extra Semi (ESLint)" 
    WARNING_FILTER += discard class="No Fallthrough (ESLint)" 
    WARNING_FILTER += discard class="No Floating Decimal (ESLint)" 
    WARNING_FILTER += discard class="No Func Assign (ESLint)" 
    WARNING_FILTER += discard class="No Global Assign (ESLint)" 
    WARNING_FILTER += discard class="No Implicit Coercion (ESLint)" 
    WARNING_FILTER += discard class="No Implicit Globals (ESLint)" 
    WARNING_FILTER += discard class="No Implied Eval (ESLint)" 
    WARNING_FILTER += discard class="No Import Assign (ESLint)" 
    WARNING_FILTER += discard class="No Inline Comments (ESLint)" 
    WARNING_FILTER += discard class="No Inner Declarations (ESLint)" 
    WARNING_FILTER += discard class="No Invalid Regexp (ESLint)" 
    WARNING_FILTER += discard class="No Invalid This (ESLint)" 
    WARNING_FILTER += discard class="No Irregular Whitespace (ESLint)" 
    WARNING_FILTER += discard class="No Iterator (ESLint)" 
    WARNING_FILTER += discard class="No Label Var (ESLint)" 
    WARNING_FILTER += discard class="No Labels (ESLint)" 
    WARNING_FILTER += discard class="No Lone Blocks (ESLint)" 
    WARNING_FILTER += discard class="No Lonely If (ESLint)" 
    WARNING_FILTER += discard class="No Loop Func (ESLint)" 
    WARNING_FILTER += discard class="No Loss of Precision (ESLint)" 
    WARNING_FILTER += discard class="No Magic Numbers (ESLint)" 
    WARNING_FILTER += discard class="No Misleading Character Class (ESLint)" 
    WARNING_FILTER += discard class="No Mixed Operators (ESLint)" 
    WARNING_FILTER += discard class="No Mixed Requires (ESLint)" 
    WARNING_FILTER += discard class="No Mixed Spaces and Tabs (ESLint)" 
    WARNING_FILTER += discard class="No Multi Assign (ESLint)" 
    WARNING_FILTER += discard class="No Multi Spaces (ESLint)" 
    WARNING_FILTER += discard class="No Multi Str (ESLint)" 
    WARNING_FILTER += discard class="No Multiple Empty Lines (ESLint)" 
    WARNING_FILTER += discard class="No Native Reassign (ESLint)" 
    WARNING_FILTER += discard class="No Negated Condition (ESLint)" 
    WARNING_FILTER += discard class="No Negated in Lhs (ESLint)" 
    WARNING_FILTER += discard class="No Nested Ternary (ESLint)" 
    WARNING_FILTER += discard class="No New (ESLint)" 
    WARNING_FILTER += discard class="No New Func (ESLint)" 
    WARNING_FILTER += discard class="No New Native Nonconstructor (ESLint)" 
    WARNING_FILTER += discard class="No New Object (ESLint)" 
    WARNING_FILTER += discard class="No New Require (ESLint)" 
    WARNING_FILTER += discard class="No New Symbol (ESLint)" 
    WARNING_FILTER += discard class="No New Wrappers (ESLint)" 
    WARNING_FILTER += discard class="No Nonoctal Decimal Escape (ESLint)" 
    WARNING_FILTER += discard class="No Obj Calls (ESLint)" 
    WARNING_FILTER += discard class="No Object Constructor (ESLint)" 
    WARNING_FILTER += discard class="No Octal (ESLint)" 
    WARNING_FILTER += discard class="No Octal Escape (ESLint)" 
    WARNING_FILTER += discard class="No Param Reassign (ESLint)" 
    WARNING_FILTER += discard class="No Path Concat (ESLint)" 
    WARNING_FILTER += discard class="No Plusplus (ESLint)" 
    WARNING_FILTER += discard class="No Process Env (ESLint)" 
    WARNING_FILTER += discard class="No Process Exit (ESLint)" 
    WARNING_FILTER += discard class="No Promise Executor Return (ESLint)" 
    WARNING_FILTER += discard class="No Proto (ESLint)" 
    WARNING_FILTER += discard class="No Prototype Builtins (ESLint)" 
    WARNING_FILTER += discard class="No Redeclare (ESLint)" 
    WARNING_FILTER += discard class="No Regex Spaces (ESLint)" 
    WARNING_FILTER += discard class="No Restricted Exports (ESLint)" 
    WARNING_FILTER += discard class="No Restricted Globals (ESLint)" 
    WARNING_FILTER += discard class="No Restricted Imports (ESLint)" 
    WARNING_FILTER += discard class="No Restricted Modules (ESLint)" 
    WARNING_FILTER += discard class="No Restricted Properties (ESLint)" 
    WARNING_FILTER += discard class="No Restricted Syntax (ESLint)" 
    WARNING_FILTER += discard class="No Return Assign (ESLint)" 
    WARNING_FILTER += discard class="No Return Await (ESLint)" 
    WARNING_FILTER += discard class="No Script Url (ESLint)" 
    WARNING_FILTER += discard class="No Self Assign (ESLint)" 
    WARNING_FILTER += discard class="No Self Compare (ESLint)" 
    WARNING_FILTER += discard class="No Sequences (ESLint)" 
    WARNING_FILTER += discard class="No Setter Return (ESLint)" 
    WARNING_FILTER += discard class="No Shadow (ESLint)" 
    WARNING_FILTER += discard class="No Shadow Restricted Names (ESLint)" 
    WARNING_FILTER += discard class="No Spaced Func (ESLint)" 
    WARNING_FILTER += discard class="No Sparse Arrays (ESLint)" 
    WARNING_FILTER += discard class="No Sync (ESLint)" 
    WARNING_FILTER += discard class="No Tabs (ESLint)" 
    WARNING_FILTER += discard class="No Template Curly in String (ESLint)" 
    WARNING_FILTER += discard class="No Ternary (ESLint)" 
    WARNING_FILTER += discard class="No This Before Super (ESLint)" 
    WARNING_FILTER += discard class="No Throw Literal (ESLint)" 
    WARNING_FILTER += discard class="No Trailing Spaces (ESLint)" 
    WARNING_FILTER += discard class="No Undef (ESLint)" 
    WARNING_FILTER += discard class="No Undef Init (ESLint)" 
    WARNING_FILTER += discard class="No Undefined (ESLint)" 
    WARNING_FILTER += discard class="No Underscore Dangle (ESLint)" 
    WARNING_FILTER += discard class="No Unexpected Multiline (ESLint)" 
    WARNING_FILTER += discard class="No Unmodified Loop Condition (ESLint)" 
    WARNING_FILTER += discard class="No Unneeded Ternary (ESLint)" 
    WARNING_FILTER += discard class="No Unreachable (ESLint)" 
    WARNING_FILTER += discard class="No Unreachable Loop (ESLint)" 
    WARNING_FILTER += discard class="No Unsafe Finally (ESLint)" 
    WARNING_FILTER += discard class="No Unsafe Negation (ESLint)" 
    WARNING_FILTER += discard class="No Unsafe Optional Chaining (ESLint)" 
    WARNING_FILTER += discard class="No Unused Expressions (ESLint)" 
    WARNING_FILTER += discard class="No Unused Labels (ESLint)" 
    WARNING_FILTER += discard class="No Unused Private Class Members (ESLint)" 
    WARNING_FILTER += discard class="No Unused Vars (ESLint)" 
    WARNING_FILTER += discard class="No Use Before Define (ESLint)" 
    WARNING_FILTER += discard class="No Useless Backreference (ESLint)" 
    WARNING_FILTER += discard class="No Useless Call (ESLint)" 
    WARNING_FILTER += discard class="No Useless Catch (ESLint)" 
    WARNING_FILTER += discard class="No Useless Computed Key (ESLint)" 
    WARNING_FILTER += discard class="No Useless Concat (ESLint)" 
    WARNING_FILTER += discard class="No Useless Constructor (ESLint)" 
    WARNING_FILTER += discard class="No Useless Escape (ESLint)" 
    WARNING_FILTER += discard class="No Useless Rename (ESLint)" 
    WARNING_FILTER += discard class="No Useless Return (ESLint)" 
    WARNING_FILTER += discard class="No Var (ESLint)" 
    WARNING_FILTER += discard class="No Void (ESLint)" 
    WARNING_FILTER += discard class="No Warning Comments (ESLint)" 
    WARNING_FILTER += discard class="No Whitespace Before Property (ESLint)" 
    WARNING_FILTER += discard class="No With (ESLint)" 
    WARNING_FILTER += discard class="Nonblock Statement Body Position (ESLint)" 
    WARNING_FILTER += discard class="Object Curly Newline (ESLint)" 
    WARNING_FILTER += discard class="Object Curly Spacing (ESLint)" 
    WARNING_FILTER += discard class="Object Property Newline (ESLint)" 
    WARNING_FILTER += discard class="Object Shorthand (ESLint)" 
    WARNING_FILTER += discard class="One Var (ESLint)" 
    WARNING_FILTER += discard class="One Var Declaration Per Line (ESLint)" 
    WARNING_FILTER += discard class="Operator Assignment (ESLint)" 
    WARNING_FILTER += discard class="Operator Linebreak (ESLint)" 
    WARNING_FILTER += discard class="Padded Blocks (ESLint)" 
    WARNING_FILTER += discard class="Padding Line Between Statements (ESLint)" 
    WARNING_FILTER += discard class="Prefer Arrow Callback (ESLint)" 
    WARNING_FILTER += discard class="Prefer Const (ESLint)" 
    WARNING_FILTER += discard class="Prefer Destructuring (ESLint)" 
    WARNING_FILTER += discard class="Prefer Exponentiation Operator (ESLint)" 
    WARNING_FILTER += discard class="Prefer Named Capture Group (ESLint)" 
    WARNING_FILTER += discard class="Prefer Numeric Literals (ESLint)" 
    WARNING_FILTER += discard class="Prefer Object Has Own (ESLint)" 
    WARNING_FILTER += discard class="Prefer Object Spread (ESLint)" 
    WARNING_FILTER += discard class="Prefer Promise Reject Errors (ESLint)" 
    WARNING_FILTER += discard class="Prefer Reflect (ESLint)" 
    WARNING_FILTER += discard class="Prefer Regex Literals (ESLint)" 
    WARNING_FILTER += discard class="Prefer Rest Params (ESLint)" 
    WARNING_FILTER += discard class="Prefer Spread (ESLint)" 
    WARNING_FILTER += discard class="Prefer Template (ESLint)" 
    WARNING_FILTER += discard class="Quote Props (ESLint)" 
    WARNING_FILTER += discard class="Quotes (ESLint)" 
    WARNING_FILTER += discard class="Radix (ESLint)" 
    WARNING_FILTER += discard class="Require Atomic Updates (ESLint)" 
    WARNING_FILTER += discard class="Require Await (ESLint)" 
    WARNING_FILTER += discard class="Require Jsdoc (ESLint)" 
    WARNING_FILTER += discard class="Require Unicode Regexp (ESLint)" 
    WARNING_FILTER += discard class="Require Yield (ESLint)" 
    WARNING_FILTER += discard class="Rest Spread Spacing (ESLint)" 
    WARNING_FILTER += discard class="Semi (ESLint)" 
    WARNING_FILTER += discard class="Semi Spacing (ESLint)" 
    WARNING_FILTER += discard class="Semi Style (ESLint)" 
    WARNING_FILTER += discard class="Sort Imports (ESLint)" 
    WARNING_FILTER += discard class="Sort Keys (ESLint)" 
    WARNING_FILTER += discard class="Sort Vars (ESLint)" 
    WARNING_FILTER += discard class="Space Before Blocks (ESLint)" 
    WARNING_FILTER += discard class="Space Before Function Paren (ESLint)" 
    WARNING_FILTER += discard class="Space Infix Ops (ESLint)" 
    WARNING_FILTER += discard class="Space Unary Ops (ESLint)" 
    WARNING_FILTER += discard class="Space in Parens (ESLint)" 
    WARNING_FILTER += discard class="Spaced Comment (ESLint)" 
    WARNING_FILTER += discard class="Strict (ESLint)" 
    WARNING_FILTER += discard class="Switch Colon Spacing (ESLint)" 
    WARNING_FILTER += discard class="Symbol Description (ESLint)" 
    WARNING_FILTER += discard class="Template Curly Spacing (ESLint)" 
    WARNING_FILTER += discard class="Template Tag Spacing (ESLint)" 
    WARNING_FILTER += discard class="Unicode Bom (ESLint)" 
    WARNING_FILTER += discard class="Use Isnan (ESLint)" 
    WARNING_FILTER += discard class="Valid Jsdoc (ESLint)" 
    WARNING_FILTER += discard class="Valid Typeof (ESLint)" 
    WARNING_FILTER += discard class="Vars on Top (ESLint)" 
    WARNING_FILTER += discard class="Wrap Iife (ESLint)" 
    WARNING_FILTER += discard class="Wrap Regex (ESLint)" 
    WARNING_FILTER += discard class="Yield Star Spacing (ESLint)" 
    WARNING_FILTER += discard class="Yoda (ESLint)" 

 (TypeScript warning classes) 
    WARNING_FILTER += discard class="Adjacent Overload Signatures (TS-ESLint)" 
    WARNING_FILTER += discard class="Array Type (TS-ESLint)" 
    WARNING_FILTER += discard class="Await Thenable (TS-ESLint)" 
    WARNING_FILTER += discard class="Ban Ts Comment (TS-ESLint)" 
    WARNING_FILTER += discard class="Ban Tslint Comment (TS-ESLint)" 
    WARNING_FILTER += discard class="Ban Types (TS-ESLint)" 
    WARNING_FILTER += discard class="Block Spacing (TS-ESLint)" 
    WARNING_FILTER += discard class="Brace Style (TS-ESLint)" 
    WARNING_FILTER += discard class="Class Literal Property Style (TS-ESLint)" 
    WARNING_FILTER += discard class="Class Methods Use This (TS-ESLint)" 
    WARNING_FILTER += discard class="Comma Dangle (TS-ESLint)" 
    WARNING_FILTER += discard class="Comma Spacing (TS-ESLint)" 
    WARNING_FILTER += discard class="Consistent Generic Constructors (TS-ESLint)" 
    WARNING_FILTER += discard class="Consistent Indexed Object Style (TS-ESLint)" 
    WARNING_FILTER += discard class="Consistent Type Assertions (TS-ESLint)" 
    WARNING_FILTER += discard class="Consistent Type Definitions (TS-ESLint)" 
    WARNING_FILTER += discard class="Consistent Type Exports (TS-ESLint)" 
    WARNING_FILTER += discard class="Consistent Type Imports (TS-ESLint)" 
    WARNING_FILTER += discard class="Copy-Paste Error" 
    WARNING_FILTER += discard class="Default Param Last (TS-ESLint)" 
    WARNING_FILTER += discard class="Dot Notation (TS-ESLint)" 
    WARNING_FILTER += discard class="Explicit Function Return Type (TS-ESLint)" 
    WARNING_FILTER += discard class="Explicit Member Accessibility (TS-ESLint)" 
    WARNING_FILTER += discard class="Explicit Module Boundary Types (TS-ESLint)" 
    WARNING_FILTER += discard class="Func Call Spacing (TS-ESLint)" 
    WARNING_FILTER += discard class="Indent (TS-ESLint)" 
    WARNING_FILTER += discard class="Init Declarations (TS-ESLint)" 
    WARNING_FILTER += discard class="Key Spacing (TS-ESLint)" 
    WARNING_FILTER += discard class="Keyword Spacing (TS-ESLint)" 
    WARNING_FILTER += discard class="Lines Around Comment (TS-ESLint)" 
    WARNING_FILTER += discard class="Lines Between Class Members (TS-ESLint)" 
    WARNING_FILTER += discard class="Max Params (TS-ESLint)" 
    WARNING_FILTER += discard class="Member Delimiter Style (TS-ESLint)" 
    WARNING_FILTER += discard class="Member Ordering (TS-ESLint)" 
    WARNING_FILTER += discard class="Method Signature Style (TS-ESLint)" 
    WARNING_FILTER += discard class="Naming Convention (TS-ESLint)" 
    WARNING_FILTER += discard class="No Array Constructor (TS-ESLint)" 
    WARNING_FILTER += discard class="No Array Delete (TS-ESLint)" 
    WARNING_FILTER += discard class="No Base to String (TS-ESLint)" 
    WARNING_FILTER += discard class="No Confusing Non Null Assertion (TS-ESLint)" 
    WARNING_FILTER += discard class="No Confusing Void Expression (TS-ESLint)" 
    WARNING_FILTER += discard class="No Dupe Class Members (TS-ESLint)" 
    WARNING_FILTER += discard class="No Duplicate Enum Values (TS-ESLint)" 
    WARNING_FILTER += discard class="No Duplicate Type Constituents (TS-ESLint)" 
    WARNING_FILTER += discard class="No Dynamic Delete (TS-ESLint)" 
    WARNING_FILTER += discard class="No Empty Function (TS-ESLint)" 
    WARNING_FILTER += discard class="No Empty Interface (TS-ESLint)" 
    WARNING_FILTER += discard class="No Explicit Any (TS-ESLint)" 
    WARNING_FILTER += discard class="No Extra Non Null Assertion (TS-ESLint)" 
    WARNING_FILTER += discard class="No Extra Parens (TS-ESLint)" 
    WARNING_FILTER += discard class="No Extra Semi (TS-ESLint)" 
    WARNING_FILTER += discard class="No Extraneous Class (TS-ESLint)" 
    WARNING_FILTER += discard class="No Floating Promises (TS-ESLint)" 
    WARNING_FILTER += discard class="No Implied Eval (TS-ESLint)" 
    WARNING_FILTER += discard class="No Import Type Side Effects (TS-ESLint)" 
    WARNING_FILTER += discard class="No Inferrable Types (TS-ESLint)" 
    WARNING_FILTER += discard class="No Invalid This (TS-ESLint)" 
    WARNING_FILTER += discard class="No Invalid Void Type (TS-ESLint)" 
    WARNING_FILTER += discard class="No Loop Func (TS-ESLint)" 
    WARNING_FILTER += discard class="No Loss of Precision (TS-ESLint)" 
    WARNING_FILTER += discard class="No Magic Numbers (TS-ESLint)" 
    WARNING_FILTER += discard class="No Meaningless Void Operator (TS-ESLint)" 
    WARNING_FILTER += discard class="No Misused New (TS-ESLint)" 
    WARNING_FILTER += discard class="No Misused Promises (TS-ESLint)" 
    WARNING_FILTER += discard class="No Mixed Enums (TS-ESLint)" 
    WARNING_FILTER += discard class="No Namespace (TS-ESLint)" 
    WARNING_FILTER += discard class="No Non Null Asserted Nullish Coalescing (TS-ESLint)" 
    WARNING_FILTER += discard class="No Non Null Asserted Optional Chain (TS-ESLint)" 
    WARNING_FILTER += discard class="No Non Null Assertion (TS-ESLint)" 
    WARNING_FILTER += discard class="No Redeclare (TS-ESLint)" 
    WARNING_FILTER += discard class="No Redundant Type Constituents (TS-ESLint)" 
    WARNING_FILTER += discard class="No Require Imports (TS-ESLint)" 
    WARNING_FILTER += discard class="No Restricted Imports (TS-ESLint)" 
    WARNING_FILTER += discard class="No Shadow (TS-ESLint)" 
    WARNING_FILTER += discard class="No This Alias (TS-ESLint)" 
    WARNING_FILTER += discard class="No Throw Literal (TS-ESLint)" 
    WARNING_FILTER += discard class="No Type Alias (TS-ESLint)" 
    WARNING_FILTER += discard class="No Unnecessary Boolean Literal Compare (TS-ESLint)" 
    WARNING_FILTER += discard class="No Unnecessary Condition (TS-ESLint)" 
    WARNING_FILTER += discard class="No Unnecessary Qualifier (TS-ESLint)" 
    WARNING_FILTER += discard class="No Unnecessary Type Arguments (TS-ESLint)" 
    WARNING_FILTER += discard class="No Unnecessary Type Assertion (TS-ESLint)" 
    WARNING_FILTER += discard class="No Unnecessary Type Constraint (TS-ESLint)" 
    WARNING_FILTER += discard class="No Unsafe Argument (TS-ESLint)" 
    WARNING_FILTER += discard class="No Unsafe Assignment (TS-ESLint)" 
    WARNING_FILTER += discard class="No Unsafe Call (TS-ESLint)" 
    WARNING_FILTER += discard class="No Unsafe Declaration Merging (TS-ESLint)" 
    WARNING_FILTER += discard class="No Unsafe Enum Comparison (TS-ESLint)" 
    WARNING_FILTER += discard class="No Unsafe Member Access (TS-ESLint)" 
    WARNING_FILTER += discard class="No Unsafe Return (TS-ESLint)" 
    WARNING_FILTER += discard class="No Unsafe Unary Minus (TS-ESLint)" 
    WARNING_FILTER += discard class="No Unused Expressions (TS-ESLint)" 
    WARNING_FILTER += discard class="No Unused Vars (TS-ESLint)" 
    WARNING_FILTER += discard class="No Use Before Define (TS-ESLint)" 
    WARNING_FILTER += discard class="No Useless Constructor (TS-ESLint)" 
    WARNING_FILTER += discard class="No Useless Empty Export (TS-ESLint)" 
    WARNING_FILTER += discard class="No Useless Template Literals (TS-ESLint)" 
    WARNING_FILTER += discard class="No Var Requires (TS-ESLint)" 
    WARNING_FILTER += discard class="No for in Array (TS-ESLint)" 
    WARNING_FILTER += discard class="Non Nullable Type Assertion Style (TS-ESLint)" 
    WARNING_FILTER += discard class="Object Curly Spacing (TS-ESLint)" 
    WARNING_FILTER += discard class="Padding Line Between Statements (TS-ESLint)" 
    WARNING_FILTER += discard class="Parameter Properties (TS-ESLint)" 
    WARNING_FILTER += discard class="Prefer As Const (TS-ESLint)" 
    WARNING_FILTER += discard class="Prefer Destructuring (TS-ESLint)" 
    WARNING_FILTER += discard class="Prefer Enum Initializers (TS-ESLint)" 
    WARNING_FILTER += discard class="Prefer Find (TS-ESLint)" 
    WARNING_FILTER += discard class="Prefer Function Type (TS-ESLint)" 
    WARNING_FILTER += discard class="Prefer Includes (TS-ESLint)" 
    WARNING_FILTER += discard class="Prefer Literal Enum Member (TS-ESLint)" 
    WARNING_FILTER += discard class="Prefer Namespace Keyword (TS-ESLint)" 
    WARNING_FILTER += discard class="Prefer Nullish Coalescing (TS-ESLint)" 
    WARNING_FILTER += discard class="Prefer Optional Chain (TS-ESLint)" 
    WARNING_FILTER += discard class="Prefer Promise Reject Errors (TS-ESLint)" 
    WARNING_FILTER += discard class="Prefer Readonly (TS-ESLint)" 
    WARNING_FILTER += discard class="Prefer Readonly Parameter Types (TS-ESLint)" 
    WARNING_FILTER += discard class="Prefer Reduce Type Parameter (TS-ESLint)" 
    WARNING_FILTER += discard class="Prefer Regexp Exec (TS-ESLint)" 
    WARNING_FILTER += discard class="Prefer Return This Type (TS-ESLint)" 
    WARNING_FILTER += discard class="Prefer String Starts Ends With (TS-ESLint)" 
    WARNING_FILTER += discard class="Prefer Ts Expect Error (TS-ESLint)" 
    WARNING_FILTER += discard class="Prefer for of (TS-ESLint)" 
    WARNING_FILTER += discard class="Promise Function Async (TS-ESLint)" 
    WARNING_FILTER += discard class="Quotes (TS-ESLint)" 
    WARNING_FILTER += discard class="Require Array Sort Compare (TS-ESLint)" 
    WARNING_FILTER += discard class="Require Await (TS-ESLint)" 
    WARNING_FILTER += discard class="Restrict Plus Operands (TS-ESLint)" 
    WARNING_FILTER += discard class="Restrict Template Expressions (TS-ESLint)" 
    WARNING_FILTER += discard class="Return Await (TS-ESLint)" 
    WARNING_FILTER += discard class="Semi (TS-ESLint)" 
    WARNING_FILTER += discard class="Sort Type Constituents (TS-ESLint)" 
    WARNING_FILTER += discard class="Space Before Blocks (TS-ESLint)" 
    WARNING_FILTER += discard class="Space Before Function Paren (TS-ESLint)" 
    WARNING_FILTER += discard class="Space Infix Ops (TS-ESLint)" 
    WARNING_FILTER += discard class="Strict Boolean Expressions (TS-ESLint)" 
    WARNING_FILTER += discard class="Switch Exhaustiveness Check (TS-ESLint)" 
    WARNING_FILTER += discard class="Triple Slash Reference (TS-ESLint)" 
    WARNING_FILTER += discard class="Type Annotation Spacing (TS-ESLint)" 
    WARNING_FILTER += discard class="Typedef (TS-ESLint)" 
    WARNING_FILTER += discard class="Unbound Method (TS-ESLint)" 
    WARNING_FILTER += discard class="Unified Signatures (TS-ESLint)" 

The following checks are disabled by default. To enable checks for a particular class, use the corresponding "allow" rule. (Checks for some classes may require additional settings in order to work correctly. See the individual warning class documentation in the manual for full information.)

 (C and C++ warning classes) 
    WARNING_FILTER += allow class="## Follows # Operator" 
    WARNING_FILTER += allow class="/* in Comment" 
    WARNING_FILTER += allow class="// in Comment" 
    WARNING_FILTER += allow class="2$Buffer Overrun" 
    WARNING_FILTER += allow class="Addition Overflow of Allocation Size" 
    WARNING_FILTER += allow class="Addition Overflow of Size" 
    WARNING_FILTER += allow class="Anonymous Namespace in Header File" 
    WARNING_FILTER += allow class="Array Parameter Mismatch" 
    WARNING_FILTER += allow class="Array Parameter" 
    WARNING_FILTER += allow class="Array to Pointer Conversion on Temporary Object" 
    WARNING_FILTER += allow class="Array to Pointer Decay" 
    WARNING_FILTER += allow class="Assembly Pragma" 
    WARNING_FILTER += allow class="Assignment Result in Expression" 
    WARNING_FILTER += allow class="Assignment in Conditional" 
    WARNING_FILTER += allow class="Backwards goto" 
    WARNING_FILTER += allow class="Basic Numerical Type Used" 
    WARNING_FILTER += allow class="Bit-field Signedness Not Explicit" 
    WARNING_FILTER += allow class="Bit-field Too Short" 
    WARNING_FILTER += allow class="Bit-field in Union" 
    WARNING_FILTER += allow class="Body Is Not Compound Statement" 
    WARNING_FILTER += allow class="Boolean switch Expression" 
    WARNING_FILTER += allow class="C++ Comment in C" 
    WARNING_FILTER += allow class="C-style Cast" 
    WARNING_FILTER += allow class="Cast Removes const Qualifier" 
    WARNING_FILTER += allow class="Cast Removes volatile Qualifier" 
    WARNING_FILTER += allow class="Cast: Arithmetic Type/Void Pointer" 
    WARNING_FILTER += allow class="Cast: Non-integer Arithmetic Type/Object Pointer" 
    WARNING_FILTER += allow class="Cast: Object Pointers" 
    WARNING_FILTER += allow class="Cast: Virtual Base to Derived" 
    WARNING_FILTER += allow class="Code Before #include" 
    WARNING_FILTER += allow class="Coercion: Integer Constant to Pointer" 
    WARNING_FILTER += allow class="Comment Suggests Code Unfinished" 
    WARNING_FILTER += allow class="Commented-out Code" 
    WARNING_FILTER += allow class="Condition Contains Side Effects" 
    WARNING_FILTER += allow class="Condition Is Not Boolean" 
    WARNING_FILTER += allow class="Conditional Compilation" 
    WARNING_FILTER += allow class="Conflicting Lock Order" 
    WARNING_FILTER += allow class="Confusing Literal Suffix" 
    WARNING_FILTER += allow class="Confusing Operator Overload" 
    WARNING_FILTER += allow class="Continue Statement" 
    WARNING_FILTER += allow class="Conversion from Function Pointer" 
    WARNING_FILTER += allow class="Conversion to Function Pointer" 
    WARNING_FILTER += allow class="Conversion: Pointer to Incomplete" 
    WARNING_FILTER += allow class="Conversion: Pointer/Integer" 
    WARNING_FILTER += allow class="Conversion: Void Pointer to Object Pointer" 
    WARNING_FILTER += allow class="Copy Operation Parameter Is Not const" 
    WARNING_FILTER += allow class="Dangerous Include File Name" 
    WARNING_FILTER += allow class="Data Race" 
    WARNING_FILTER += allow class="Declaration of Flexible Array Member" 
    WARNING_FILTER += allow class="Declaration of Reserved Name" 
    WARNING_FILTER += allow class="Declaration of Variable Length Array" 
    WARNING_FILTER += allow class="Direct Access to Field of C Atomic Object" 
    WARNING_FILTER += allow class="Dynamic Allocation After Initialization" 
    WARNING_FILTER += allow class="Dynamic Thread Creation" 
    WARNING_FILTER += allow class="Ellipsis" 
    WARNING_FILTER += allow class="Essential Type Diagnostic" 
    WARNING_FILTER += allow class="Excessive Macro Parameter Evaluation in C Generic" 
    WARNING_FILTER += allow class="Excessive Stack Depth" 
    WARNING_FILTER += allow class="Explicit Zero Alignment" 
    WARNING_FILTER += allow class="Expression Value Widened by Assignment" 
    WARNING_FILTER += allow class="Expression Value Widened by Other Operand" 
    WARNING_FILTER += allow class="Extern Array Without Size" 
    WARNING_FILTER += allow class="FILE* Dereference" 
    WARNING_FILTER += allow class="Float Multiplication Overflow" 
    WARNING_FILTER += allow class="Float Pointer Conversion" 
    WARNING_FILTER += allow class="Float-typed Loop Counter" 
    WARNING_FILTER += allow class="Floating Point Equality" 
    WARNING_FILTER += allow class="Function Defined in Header File" 
    WARNING_FILTER += allow class="Function Pointer Conversion" 
    WARNING_FILTER += allow class="Function Pointer" 
    WARNING_FILTER += allow class="Function Too Long" 
    WARNING_FILTER += allow class="Function-Like Macro" 
    WARNING_FILTER += allow class="GNU Extension" 
    WARNING_FILTER += allow class="GNU Typeof" 
    WARNING_FILTER += allow class="Global Variable Declared with Different Types" 
    WARNING_FILTER += allow class="Goto Statement" 
    WARNING_FILTER += allow class="Hardcoded DNS Name" 
    WARNING_FILTER += allow class="High Cyclomatic Complexity (Procedure)" 
    WARNING_FILTER += allow class="High Risk Loop" 
    WARNING_FILTER += allow class="Implicit Address of Function" 
    WARNING_FILTER += allow class="Implicit Constructor Shadowing" 
    WARNING_FILTER += allow class="Implicit Function Declaration" 
    WARNING_FILTER += allow class="Implicit Inheritance from Stateful Virtual Base" 
    WARNING_FILTER += allow class="Implicit Lambda Capture" 
    WARNING_FILTER += allow class="Implicit Pointer Type Conversion in Selection of C Generic" 
    WARNING_FILTER += allow class="Implicit Type" 
    WARNING_FILTER += allow class="Inappropriate Argument to <tgmath.h> Macro" 
    WARNING_FILTER += allow class="Inappropriate Argument to Integer Constant Macro" 
    WARNING_FILTER += allow class="Inappropriate Argument to memcmp" 
    WARNING_FILTER += allow class="Inappropriate Assignment Operator Return" 
    WARNING_FILTER += allow class="Inappropriate Assignment Type" 
    WARNING_FILTER += allow class="Inappropriate Association Type in C Generic" 
    WARNING_FILTER += allow class="Inappropriate Bit-field Type" 
    WARNING_FILTER += allow class="Inappropriate Cast Type" 
    WARNING_FILTER += allow class="Inappropriate Cast Type: Expression" 
    WARNING_FILTER += allow class="Inappropriate Character Arithmetic" 
    WARNING_FILTER += allow class="Inappropriate Comparison of Virtual Member Function" 
    WARNING_FILTER += allow class="Inappropriate Declaration in Global Namespace" 
    WARNING_FILTER += allow class="Inappropriate Include File Specification" 
    WARNING_FILTER += allow class="Inappropriate Operand Type" 
    WARNING_FILTER += allow class="Inappropriate Selection Type in C Generic" 
    WARNING_FILTER += allow class="Inappropriate Storage Duration" 
    WARNING_FILTER += allow class="Inappropriate Test of Error Code" 
    WARNING_FILTER += allow class="Inappropriate Volatile Declaration" 
    WARNING_FILTER += allow class="Incomplete Function Prototype" 
    WARNING_FILTER += allow class="Inconsistent Alignment Specifications" 
    WARNING_FILTER += allow class="Inconsistent Chained Designator Initialization" 
    WARNING_FILTER += allow class="Inconsistent Enumerator Initialization" 
    WARNING_FILTER += allow class="Inconsistent Function Declarations" 
    WARNING_FILTER += allow class="Inconsistent Macro Parameter Expansion in C Generic" 
    WARNING_FILTER += allow class="Inconsistent Object Declarations" 
    WARNING_FILTER += allow class="Inconsistent Types of Arguments to <tgmath.h> Macro" 
    WARNING_FILTER += allow class="Indeterminate Order of Evaluation" 
    WARNING_FILTER += allow class="Initialization Cycle" 
    WARNING_FILTER += allow class="Inline Assembly Code" 
    WARNING_FILTER += allow class="Inline Function Not static" 
    WARNING_FILTER += allow class="Invalid Preprocessor Directive" 
    WARNING_FILTER += allow class="Label Not In Enclosing Block" 
    WARNING_FILTER += allow class="Lambda Has No Parameter List" 
    WARNING_FILTER += allow class="Lambda Has No Return Type" 
    WARNING_FILTER += allow class="Leftover Debug Code" 
    WARNING_FILTER += allow class="Library Function Override" 
    WARNING_FILTER += allow class="Line Splicing in Comment" 
    WARNING_FILTER += allow class="Lock/Unlock Mismatch" 
    WARNING_FILTER += allow class="Locked Twice" 
    WARNING_FILTER += allow class="Macro Argument is both Mixed and Expanded" 
    WARNING_FILTER += allow class="Macro Defined in Function Body" 
    WARNING_FILTER += allow class="Macro Defines Constant" 
    WARNING_FILTER += allow class="Macro Definition of Reserved Name" 
    WARNING_FILTER += allow class="Macro Does Not End With } or )" 
    WARNING_FILTER += allow class="Macro Does Not Start With { or (" 
    WARNING_FILTER += allow class="Macro Name is C Keyword" 
    WARNING_FILTER += allow class="Macro Parameter Not Parenthesized" 
    WARNING_FILTER += allow class="Macro Undefined in Function Body" 
    WARNING_FILTER += allow class="Macro Undefinition of Reserved Name" 
    WARNING_FILTER += allow class="Macro Uses # Operator" 
    WARNING_FILTER += allow class="Macro Uses ## Operator" 
    WARNING_FILTER += allow class="Macro Uses -> Operator" 
    WARNING_FILTER += allow class="Macro Uses Unary * Operator" 
    WARNING_FILTER += allow class="Macro Uses [] Operator" 
    WARNING_FILTER += allow class="Malformed #include" 
    WARNING_FILTER += allow class="Malformed for-loop Condition" 
    WARNING_FILTER += allow class="Malformed for-loop Initialization" 
    WARNING_FILTER += allow class="Malformed for-loop Step" 
    WARNING_FILTER += allow class="Malformed switch Statement" 
    WARNING_FILTER += allow class="Member Function Could Be const" 
    WARNING_FILTER += allow class="Member Function Could Be static" 
    WARNING_FILTER += allow class="Memory Protection Removal" 
    WARNING_FILTER += allow class="Method Default Value Mismatch" 
    WARNING_FILTER += allow class="Microsoft Extension" 
    WARNING_FILTER += allow class="Mismatched Argument Types" 
    WARNING_FILTER += allow class="Mismatched Operand Types" 
    WARNING_FILTER += allow class="Misplaced Default Association in C Generic" 
    WARNING_FILTER += allow class="Misplaced Return Statement" 
    WARNING_FILTER += allow class="Misplaced Using Declaration" 
    WARNING_FILTER += allow class="Misplaced case" 
    WARNING_FILTER += allow class="Misplaced default" 
    WARNING_FILTER += allow class="Missing Braces in Initialization" 
    WARNING_FILTER += allow class="Missing External Declaration" 
    WARNING_FILTER += allow class="Missing External Definition" 
    WARNING_FILTER += allow class="Missing Final else" 
    WARNING_FILTER += allow class="Missing Literal Suffix" 
    WARNING_FILTER += allow class="Missing Lock Acquisition" 
    WARNING_FILTER += allow class="Missing Lock Release" 
    WARNING_FILTER += allow class="Missing Non-default Association in C Generic" 
    WARNING_FILTER += allow class="Missing Parentheses" 
    WARNING_FILTER += allow class="Missing Test of Error Code" 
    WARNING_FILTER += allow class="Missing User-defined Operations" 
    WARNING_FILTER += allow class="Missing break" 
    WARNING_FILTER += allow class="Missing default" 
    WARNING_FILTER += allow class="Missing for-loop Step" 
    WARNING_FILTER += allow class="Missing for-loop Termination" 
    WARNING_FILTER += allow class="Missing noreturn Specifier" 
    WARNING_FILTER += allow class="Mixed Assembly and Code" 
    WARNING_FILTER += allow class="Modification of Standard Namespaces" 
    WARNING_FILTER += allow class="Modified Parameter" 
    WARNING_FILTER += allow class="Multiple Abnormal Loop Exits" 
    WARNING_FILTER += allow class="Multiple Accesses of Atomic" 
    WARNING_FILTER += allow class="Multiple Declarations On Line" 
    WARNING_FILTER += allow class="Multiple Declarations of a Global" 
    WARNING_FILTER += allow class="Multiple External Declarations" 
    WARNING_FILTER += allow class="Multiple External Definitions" 
    WARNING_FILTER += allow class="Multiple Inheritance with Private Interface Class" 
    WARNING_FILTER += allow class="Multiple Inheritance with Protected Interface Class" 
    WARNING_FILTER += allow class="Multiple Inheritance with Public Base Class" 
    WARNING_FILTER += allow class="Multiple Inheritance with Too Many Protected Base Classes" 
    WARNING_FILTER += allow class="Multiple Return Statements" 
    WARNING_FILTER += allow class="Multiple Statements On Line" 
    WARNING_FILTER += allow class="Multiplication Overflow of Allocation Size" 
    WARNING_FILTER += allow class="Multiplication Overflow of Size" 
    WARNING_FILTER += allow class="NULL Used as Integer" 
    WARNING_FILTER += allow class="Naming Style Violation" 
    WARNING_FILTER += allow class="Nested Function Declaration" 
    WARNING_FILTER += allow class="Nested Locks" 
    WARNING_FILTER += allow class="No Matching #endif" 
    WARNING_FILTER += allow class="No Matching #if" 
    WARNING_FILTER += allow class="No Previous Declaration" 
    WARNING_FILTER += allow class="Non-Boolean Preprocessor Expression" 
    WARNING_FILTER += allow class="Non-const String Literal" 
    WARNING_FILTER += allow class="Non-distinct Identifiers: External Names" 
    WARNING_FILTER += allow class="Non-distinct Identifiers: Macro/Macro" 
    WARNING_FILTER += allow class="Non-distinct Identifiers: Macro/Other" 
    WARNING_FILTER += allow class="Non-distinct Identifiers: Nested Scope" 
    WARNING_FILTER += allow class="Non-distinct Identifiers: Same Scope" 
    WARNING_FILTER += allow class="Non-unique Identifiers: External Name" 
    WARNING_FILTER += allow class="Non-unique Identifiers: Internal Name" 
    WARNING_FILTER += allow class="Non-unique Identifiers: Tag" 
    WARNING_FILTER += allow class="Non-unique Identifiers: Typedef" 
    WARNING_FILTER += allow class="Non-void noreturn" 
    WARNING_FILTER += allow class="Non-zero Error Code" 
    WARNING_FILTER += allow class="Not All Warnings Are Enabled" 
    WARNING_FILTER += allow class="Not Enough Assertions" 
    WARNING_FILTER += allow class="Object Defined in Header File" 
    WARNING_FILTER += allow class="Octal Constant" 
    WARNING_FILTER += allow class="Out of Order Member Initializers" 
    WARNING_FILTER += allow class="Over-initialized Element" 
    WARNING_FILTER += allow class="Override of Non-Virtual Method" 
    WARNING_FILTER += allow class="Partially Uninitialized Aggregate" 
    WARNING_FILTER += allow class="Partially Uninitialized Array" 
    WARNING_FILTER += allow class="Pointed-to Type Could Be const" 
    WARNING_FILTER += allow class="Pointer Arithmetic" 
    WARNING_FILTER += allow class="Pointer Before Beginning of Object" 
    WARNING_FILTER += allow class="Pointer Past End of Object" 
    WARNING_FILTER += allow class="Pointer Type Inside Typedef" 
    WARNING_FILTER += allow class="Pointer to Variably-modified Array Type" 
    WARNING_FILTER += allow class="Possible Anti-Debugging" 
    WARNING_FILTER += allow class="Potential Timebomb" 
    WARNING_FILTER += allow class="Potential Unbounded Loop" 
    WARNING_FILTER += allow class="Preprocessing Directives in Macro Argument" 
    WARNING_FILTER += allow class="Recursion" 
    WARNING_FILTER += allow class="Recursive Macro" 
    WARNING_FILTER += allow class="Register Keyword" 
    WARNING_FILTER += allow class="Restrict Qualifier Used" 
    WARNING_FILTER += allow class="Return from Computational Exception Signal Handler" 
    WARNING_FILTER += allow class="Returned Pointer Not Treated as const" 
    WARNING_FILTER += allow class="Risky Atomic Memory Order" 
    WARNING_FILTER += allow class="Risky Integer Promotion" 
    WARNING_FILTER += allow class="Scope Could Be File Static" 
    WARNING_FILTER += allow class="Scope Could Be Local Static" 
    WARNING_FILTER += allow class="Selection in C Generic not Expanded from Macro Parameters" 
    WARNING_FILTER += allow class="Side Effects in C Generic Selection" 
    WARNING_FILTER += allow class="Side Effects in Expression with Decrement" 
    WARNING_FILTER += allow class="Side Effects in Expression with Increment" 
    WARNING_FILTER += allow class="Side Effects in Initializer List" 
    WARNING_FILTER += allow class="Side Effects in Logical Operand" 
    WARNING_FILTER += allow class="Side Effects in sizeof" 
    WARNING_FILTER += allow class="Signal Handler Entry Point" 
    WARNING_FILTER += allow class="Socket In Wrong State" 
    WARNING_FILTER += allow class="Specialization after Use" 
    WARNING_FILTER += allow class="Static Array Parameter" 
    WARNING_FILTER += allow class="Subtraction Underflow of Allocation Size" 
    WARNING_FILTER += allow class="Subtraction Underflow of Size" 
    WARNING_FILTER += allow class="Tainted Allocation Size" 
    WARNING_FILTER += allow class="Tainted Configuration Setting" 
    WARNING_FILTER += allow class="Tainted Filename" 
    WARNING_FILTER += allow class="Tainted Network Address" 
    WARNING_FILTER += allow class="Tainted Write" 
    WARNING_FILTER += allow class="Task Delay Function" 
    WARNING_FILTER += allow class="Thread Entry Point" 
    WARNING_FILTER += allow class="Too Few Cases in switch" 
    WARNING_FILTER += allow class="Too Many Alignment Specifiers" 
    WARNING_FILTER += allow class="Too Many Dereferences" 
    WARNING_FILTER += allow class="Too Many Parameters" 
    WARNING_FILTER += allow class="Too Many Side Effects in Assignment" 
    WARNING_FILTER += allow class="Too Many Side Effects in Condition" 
    WARNING_FILTER += allow class="Too Many Side Effects in Function Call" 
    WARNING_FILTER += allow class="Too Many Side Effects in Statement" 
    WARNING_FILTER += allow class="Too Many Side Effects in Switch" 
    WARNING_FILTER += allow class="Too Much Indirection in Declaration" 
    WARNING_FILTER += allow class="Trigraph" 
    WARNING_FILTER += allow class="Truncation of Allocation Size" 
    WARNING_FILTER += allow class="Truncation of Size" 
    WARNING_FILTER += allow class="Typographically Ambiguous Identifiers" 
    WARNING_FILTER += allow class="Unbalanced Parenthesis" 
    WARNING_FILTER += allow class="Unchecked Parameter Dereference" 
    WARNING_FILTER += allow class="Undefined Macro in #if" 
    WARNING_FILTER += allow class="Unexercised Call" 
    WARNING_FILTER += allow class="Unexercised Computation" 
    WARNING_FILTER += allow class="Unexercised Conditional" 
    WARNING_FILTER += allow class="Unexercised Control Flow" 
    WARNING_FILTER += allow class="Unexercised Data Flow" 
    WARNING_FILTER += allow class="Union Type" 
    WARNING_FILTER += allow class="Unknown Lock" 
    WARNING_FILTER += allow class="Unnamed Field" 
    WARNING_FILTER += allow class="Unneeded Implicitly Generated Operations" 
    WARNING_FILTER += allow class="Unordered Initialization" 
    WARNING_FILTER += allow class="Unreachable Catch" 
    WARNING_FILTER += allow class="Unreachable Control Flow" 
    WARNING_FILTER += allow class="Unspecified Array Size with Designator Initialization" 
    WARNING_FILTER += allow class="Unterminated Escape Sequence" 
    WARNING_FILTER += allow class="Untrusted Library Load" 
    WARNING_FILTER += allow class="Untrusted Network Host" 
    WARNING_FILTER += allow class="Untrusted Network Port" 
    WARNING_FILTER += allow class="Untrusted Process Creation" 
    WARNING_FILTER += allow class="Unused Label" 
    WARNING_FILTER += allow class="Unused Macro" 
    WARNING_FILTER += allow class="Unused Parameter" 
    WARNING_FILTER += allow class="Unused Tag" 
    WARNING_FILTER += allow class="Unused Type" 
    WARNING_FILTER += allow class="Unused Variable" 
    WARNING_FILTER += allow class="Use of #define" 
    WARNING_FILTER += allow class="Use of #elif" 
    WARNING_FILTER += allow class="Use of #elifdef" 
    WARNING_FILTER += allow class="Use of #elifndef" 
    WARNING_FILTER += allow class="Use of #else" 
    WARNING_FILTER += allow class="Use of #endif" 
    WARNING_FILTER += allow class="Use of #error" 
    WARNING_FILTER += allow class="Use of #if" 
    WARNING_FILTER += allow class="Use of #ifdef" 
    WARNING_FILTER += allow class="Use of #ifndef" 
    WARNING_FILTER += allow class="Use of #import" 
    WARNING_FILTER += allow class="Use of #include" 
    WARNING_FILTER += allow class="Use of #include_next" 
    WARNING_FILTER += allow class="Use of #line" 
    WARNING_FILTER += allow class="Use of #pragma" 
    WARNING_FILTER += allow class="Use of #undef" 
    WARNING_FILTER += allow class="Use of #using" 
    WARNING_FILTER += allow class="Use of #warning" 
    WARNING_FILTER += allow class="Use of <fenv.h> Exception Handling Function" 
    WARNING_FILTER += allow class="Use of <setjmp.h>" 
    WARNING_FILTER += allow class="Use of <signal.h>" 
    WARNING_FILTER += allow class="Use of <stdarg.h> Feature" 
    WARNING_FILTER += allow class="Use of <stdint.h> Small Integer Constant Macro" 
    WARNING_FILTER += allow class="Use of <stdio.h> Input/Output Macro" 
    WARNING_FILTER += allow class="Use of <stdio.h> Input/Output" 
    WARNING_FILTER += allow class="Use of <stdlib.h> Allocator/Deallocator Macro" 
    WARNING_FILTER += allow class="Use of <stdlib.h> Allocator/Deallocator" 
    WARNING_FILTER += allow class="Use of <tgmath.h>" 
    WARNING_FILTER += allow class="Use of <time.h> Time/Date Function" 
    WARNING_FILTER += allow class="Use of <wchar.h> Input/Output Macro" 
    WARNING_FILTER += allow class="Use of <wchar.h> Input/Output" 
    WARNING_FILTER += allow class="Use of AddAccessAllowedAce" 
    WARNING_FILTER += allow class="Use of AddAccessDeniedAce" 
    WARNING_FILTER += allow class="Use of AfxLoadLibrary" 
    WARNING_FILTER += allow class="Use of AfxParseURL" 
    WARNING_FILTER += allow class="Use of Alignas" 
    WARNING_FILTER += allow class="Use of Alignof" 
    WARNING_FILTER += allow class="Use of C Atomic" 
    WARNING_FILTER += allow class="Use of C Generic" 
    WARNING_FILTER += allow class="Use of CoLoadLibrary" 
    WARNING_FILTER += allow class="Use of Comma Operator" 
    WARNING_FILTER += allow class="Use of Condition Variable Signal" 
    WARNING_FILTER += allow class="Use of Condition Variable Wait" 
    WARNING_FILTER += allow class="Use of CreateFile" 
    WARNING_FILTER += allow class="Use of CreateProcess" 
    WARNING_FILTER += allow class="Use of CreateThread" 
    WARNING_FILTER += allow class="Use of FormatMessage" 
    WARNING_FILTER += allow class="Use of L_tmpnam_s" 
    WARNING_FILTER += allow class="Use of LoadLibrary" 
    WARNING_FILTER += allow class="Use of LoadModule" 
    WARNING_FILTER += allow class="Use of MoveFile" 
    WARNING_FILTER += allow class="Use of NULL" 
    WARNING_FILTER += allow class="Use of Noreturn" 
    WARNING_FILTER += allow class="Use of OemToAnsi" 
    WARNING_FILTER += allow class="Use of OemToChar" 
    WARNING_FILTER += allow class="Use of SHCreateProcessAsUserW" 
    WARNING_FILTER += allow class="Use of ShellExecute" 
    WARNING_FILTER += allow class="Use of StrCatChainW" 
    WARNING_FILTER += allow class="Use of TMP_MAX_S" 
    WARNING_FILTER += allow class="Use of Thread Local" 
    WARNING_FILTER += allow class="Use of WinExec" 
    WARNING_FILTER += allow class="Use of XML_ExternalEntityParserCreate" 
    WARNING_FILTER += allow class="Use of _exec" 
    WARNING_FILTER += allow class="Use of _spawn" 
    WARNING_FILTER += allow class="Use of abort" 
    WARNING_FILTER += allow class="Use of abort_handler_s" 
    WARNING_FILTER += allow class="Use of asctime_s" 
    WARNING_FILTER += allow class="Use of atof" 
    WARNING_FILTER += allow class="Use of atoi" 
    WARNING_FILTER += allow class="Use of atol" 
    WARNING_FILTER += allow class="Use of atoll" 
    WARNING_FILTER += allow class="Use of bsearch" 
    WARNING_FILTER += allow class="Use of bsearch_s" 
    WARNING_FILTER += allow class="Use of catch" 
    WARNING_FILTER += allow class="Use of catopen" 
    WARNING_FILTER += allow class="Use of chroot" 
    WARNING_FILTER += allow class="Use of constraint_handler_t" 
    WARNING_FILTER += allow class="Use of ctime_s" 
    WARNING_FILTER += allow class="Use of cuserid" 
    WARNING_FILTER += allow class="Use of execlp" 
    WARNING_FILTER += allow class="Use of execvp" 
    WARNING_FILTER += allow class="Use of exit" 
    WARNING_FILTER += allow class="Use of fopen_s" 
    WARNING_FILTER += allow class="Use of fork" 
    WARNING_FILTER += allow class="Use of fprintf_s" 
    WARNING_FILTER += allow class="Use of freopen_s" 
    WARNING_FILTER += allow class="Use of fscanf_s" 
    WARNING_FILTER += allow class="Use of fwprintf_s" 
    WARNING_FILTER += allow class="Use of fwscanf_s" 
    WARNING_FILTER += allow class="Use of getenv" 
    WARNING_FILTER += allow class="Use of getenv_s" 
    WARNING_FILTER += allow class="Use of getlogin" 
    WARNING_FILTER += allow class="Use of getopt" 
    WARNING_FILTER += allow class="Use of getpass" 
    WARNING_FILTER += allow class="Use of gets_s" 
    WARNING_FILTER += allow class="Use of getwd" 
    WARNING_FILTER += allow class="Use of gmtime_s" 
    WARNING_FILTER += allow class="Use of ignore_handler_s" 
    WARNING_FILTER += allow class="Use of localtime_s" 
    WARNING_FILTER += allow class="Use of longjmp" 
    WARNING_FILTER += allow class="Use of mbsrtowcs_s" 
    WARNING_FILTER += allow class="Use of mbstowcs_s" 
    WARNING_FILTER += allow class="Use of memcmp" 
    WARNING_FILTER += allow class="Use of memcpy_s" 
    WARNING_FILTER += allow class="Use of memmove_s" 
    WARNING_FILTER += allow class="Use of memset" 
    WARNING_FILTER += allow class="Use of memset_s" 
    WARNING_FILTER += allow class="Use of mkstemp" 
    WARNING_FILTER += allow class="Use of offsetof" 
    WARNING_FILTER += allow class="Use of popen" 
    WARNING_FILTER += allow class="Use of printf_s" 
    WARNING_FILTER += allow class="Use of pthread_kill" 
    WARNING_FILTER += allow class="Use of putenv" 
    WARNING_FILTER += allow class="Use of qsort" 
    WARNING_FILTER += allow class="Use of qsort_s" 
    WARNING_FILTER += allow class="Use of rand" 
    WARNING_FILTER += allow class="Use of rand48 Function" 
    WARNING_FILTER += allow class="Use of random" 
    WARNING_FILTER += allow class="Use of realloc" 
    WARNING_FILTER += allow class="Use of realpath" 
    WARNING_FILTER += allow class="Use of recvmsg" 
    WARNING_FILTER += allow class="Use of scanf_s" 
    WARNING_FILTER += allow class="Use of set_constraint_handler_s" 
    WARNING_FILTER += allow class="Use of setjmp" 
    WARNING_FILTER += allow class="Use of setlocale" 
    WARNING_FILTER += allow class="Use of setuid" 
    WARNING_FILTER += allow class="Use of signal" 
    WARNING_FILTER += allow class="Use of snprintf_s" 
    WARNING_FILTER += allow class="Use of snwprintf_s" 
    WARNING_FILTER += allow class="Use of sprintf_s" 
    WARNING_FILTER += allow class="Use of sscanf_s" 
    WARNING_FILTER += allow class="Use of std::locale::global" 
    WARNING_FILTER += allow class="Use of strcat" 
    WARNING_FILTER += allow class="Use of strcat_s" 
    WARNING_FILTER += allow class="Use of strchr" 
    WARNING_FILTER += allow class="Use of strcmp" 
    WARNING_FILTER += allow class="Use of strcoll" 
    WARNING_FILTER += allow class="Use of strcpy" 
    WARNING_FILTER += allow class="Use of strcpy_s" 
    WARNING_FILTER += allow class="Use of strcspn" 
    WARNING_FILTER += allow class="Use of strerror_s" 
    WARNING_FILTER += allow class="Use of strerrorlen_s" 
    WARNING_FILTER += allow class="Use of strlen" 
    WARNING_FILTER += allow class="Use of strncat_s" 
    WARNING_FILTER += allow class="Use of strncpy_s" 
    WARNING_FILTER += allow class="Use of strnlen_s" 
    WARNING_FILTER += allow class="Use of strpbrk" 
    WARNING_FILTER += allow class="Use of strrchr" 
    WARNING_FILTER += allow class="Use of strspn" 
    WARNING_FILTER += allow class="Use of strstr" 
    WARNING_FILTER += allow class="Use of strtok" 
    WARNING_FILTER += allow class="Use of strtok_s" 
    WARNING_FILTER += allow class="Use of strtrns" 
    WARNING_FILTER += allow class="Use of swprintf_s" 
    WARNING_FILTER += allow class="Use of swscanf_s" 
    WARNING_FILTER += allow class="Use of syslog" 
    WARNING_FILTER += allow class="Use of system" 
    WARNING_FILTER += allow class="Use of t_open" 
    WARNING_FILTER += allow class="Use of throw" 
    WARNING_FILTER += allow class="Use of tmpfile_s" 
    WARNING_FILTER += allow class="Use of tmpnam_s" 
    WARNING_FILTER += allow class="Use of ttyname" 
    WARNING_FILTER += allow class="Use of vfork" 
    WARNING_FILTER += allow class="Use of vfprintf_s" 
    WARNING_FILTER += allow class="Use of vfscanf_s" 
    WARNING_FILTER += allow class="Use of vfwprintf_s" 
    WARNING_FILTER += allow class="Use of vfwscanf_s" 
    WARNING_FILTER += allow class="Use of vprintf_s" 
    WARNING_FILTER += allow class="Use of vscanf_s" 
    WARNING_FILTER += allow class="Use of vsnprintf_s" 
    WARNING_FILTER += allow class="Use of vsnwprintf_s" 
    WARNING_FILTER += allow class="Use of vsprintf_s" 
    WARNING_FILTER += allow class="Use of vsscanf_s" 
    WARNING_FILTER += allow class="Use of vswprintf_s" 
    WARNING_FILTER += allow class="Use of vswscanf_s" 
    WARNING_FILTER += allow class="Use of vwprintf_s" 
    WARNING_FILTER += allow class="Use of vwscanf_s" 
    WARNING_FILTER += allow class="Use of wcrtomb_s" 
    WARNING_FILTER += allow class="Use of wcscat_s" 
    WARNING_FILTER += allow class="Use of wcscpy_s" 
    WARNING_FILTER += allow class="Use of wcsncat_s" 
    WARNING_FILTER += allow class="Use of wcsncpy_s" 
    WARNING_FILTER += allow class="Use of wcsnlen_s" 
    WARNING_FILTER += allow class="Use of wcsrtombs_s" 
    WARNING_FILTER += allow class="Use of wcstok_s" 
    WARNING_FILTER += allow class="Use of wcstombs_s" 
    WARNING_FILTER += allow class="Use of wctomb_s" 
    WARNING_FILTER += allow class="Use of wmemcpy_s" 
    WARNING_FILTER += allow class="Use of wmemmove_s" 
    WARNING_FILTER += allow class="Use of wprintf_s" 
    WARNING_FILTER += allow class="Use of wscanf_s" 
    WARNING_FILTER += allow class="Using Declaration in Header File" 
    WARNING_FILTER += allow class="Using Directive in Header File" 
    WARNING_FILTER += allow class="Using Directive" 
    WARNING_FILTER += allow class="Variable Could Be const" 
    WARNING_FILTER += allow class="Variadic Macro" 
    WARNING_FILTER += allow class="Virtual Base Class not In Diamond" 
    WARNING_FILTER += allow class="Virtual Base Class" 
    WARNING_FILTER += allow class="Virtual and Non-Virtual Base Class" 
    WARNING_FILTER += allow class="Void C Atomic" 
    WARNING_FILTER += allow class="Warnings Not Treated As Errors" 
    WARNING_FILTER += allow class="Weak Cryptography" 
    WARNING_FILTER += allow class="Write to Read Only File" 
    WARNING_FILTER += allow class="chroot without chdir" 
    WARNING_FILTER += allow class="delete with Non-Virtual Destructor" 
    WARNING_FILTER += allow class="sizeof Array Parameter" 
    WARNING_FILTER += allow class="switch With Non-enum Expression" 

 (Java warning classes) 
    WARNING_FILTER += allow class="Actual Parameter Element may be null (Java)" 
    WARNING_FILTER += allow class="Android Message Injection (Java)" 
    WARNING_FILTER += allow class="Android URL Injection (Java)" 
    WARNING_FILTER += allow class="Certificate Added to Root Store (Java)" 
    WARNING_FILTER += allow class="Deprecated Transfer Protocol (Java)" 
    WARNING_FILTER += allow class="Deserializable Class (Java)" 
    WARNING_FILTER += allow class="Deserializing Non-Serializable Class (Java)" 
    WARNING_FILTER += allow class="Field Element may be null (deep) (Java)" 
    WARNING_FILTER += allow class="Field Too Visible (Java)" 
    WARNING_FILTER += allow class="Field may be null (deep) (Java)" 
    WARNING_FILTER += allow class="Hardcoded IP Address (Java)" 
    WARNING_FILTER += allow class="Inadequate Salt (Java)" 
    WARNING_FILTER += allow class="Insecure Class Loader (Java)" 
    WARNING_FILTER += allow class="Method Disables Security Setting (Java)" 
    WARNING_FILTER += allow class="Method Should be final (Java)" 
    WARNING_FILTER += allow class="Method Should be private (Java)" 
    WARNING_FILTER += allow class="Missing synchronized Statement (Java)" 
    WARNING_FILTER += allow class="Mutable Constant Field (Java)" 
    WARNING_FILTER += allow class="Naming Style Violation (Java)" 
    WARNING_FILTER += allow class="Null Pointer Dereference (deep) (Java)" 
    WARNING_FILTER += allow class="Return Value may Contain null Element (Java)" 
    WARNING_FILTER += allow class="Return Value may be null (Java)" 
    WARNING_FILTER += allow class="Security Annotation Conflict (Java)" 
    WARNING_FILTER += allow class="Sensitive Data Cached (Java)" 
    WARNING_FILTER += allow class="Sensitive Data Written to External Storage (Java)" 
    WARNING_FILTER += allow class="Sensitive Data Written to Local File (Java)" 
    WARNING_FILTER += allow class="Serialization Not Disabled (Java)" 
    WARNING_FILTER += allow class="Static Field Too Visible (Java)" 
    WARNING_FILTER += allow class="Unchecked Parameter Dereference (deep) (Java)" 
    WARNING_FILTER += allow class="Unchecked Parameter Element Dereference (deep) (Java)" 
    WARNING_FILTER += allow class="Unguarded Field (Java)" 
    WARNING_FILTER += allow class="Unguarded Method (Java)" 
    WARNING_FILTER += allow class="Unguarded Parameter (Java)" 
    WARNING_FILTER += allow class="Unsafe Base64 Encoding (Java)" 
    WARNING_FILTER += allow class="Useless null Test (Java)" 
    WARNING_FILTER += allow class="Useless null Test of Field (Java)" 
    WARNING_FILTER += allow class="Useless null Test of Parameter (Java)" 
    WARNING_FILTER += allow class="Useless null Test of Return Value (Java)" 
    WARNING_FILTER += allow class="clone Subclass of Non-clonable (Java)" 
    WARNING_FILTER += allow class="null Passed to Method (deep) (Java)" 

 (C# warning classes) 
    WARNING_FILTER += allow class="Abstract types should not have public constructors (C#)" 
    WARNING_FILTER += allow class="Actual Parameter Element may be null (C#)" 
    WARNING_FILTER += allow class="Attribute string literals should parse correctly (C#)" 
    WARNING_FILTER += allow class="Avoid dead conditional code (C#)" 
    WARNING_FILTER += allow class="Avoid empty interfaces (C#)" 
    WARNING_FILTER += allow class="Avoid excessive class coupling (C#)" 
    WARNING_FILTER += allow class="Avoid excessive complexity (C#)" 
    WARNING_FILTER += allow class="Avoid excessive inheritance (C#)" 
    WARNING_FILTER += allow class="Avoid excessive parameters on generic types (C#)" 
    WARNING_FILTER += allow class="Avoid hardcoded SslProtocols values (C#)" 
    WARNING_FILTER += allow class="Avoid hardcoding SecurityProtocolType value (C#)" 
    WARNING_FILTER += allow class="Avoid out parameters (C#)" 
    WARNING_FILTER += allow class="Avoid uninstantiated internal classes (C#)" 
    WARNING_FILTER += allow class="Avoid unmaintainable code (C#)" 
    WARNING_FILTER += allow class="Avoid unsealed attributes (C#)" 
    WARNING_FILTER += allow class="Avoid unused private fields (C#)" 
    WARNING_FILTER += allow class="Call async methods when in an async method (C#)" 
    WARNING_FILTER += allow class="Certificate Added to Root Store (C#)" 
    WARNING_FILTER += allow class="Collection properties should be read only (C#)" 
    WARNING_FILTER += allow class="Consider calling ConfigureAwait on the awaited task (C#)" 
    WARNING_FILTER += allow class="Define accessors for attribute arguments (C#)" 
    WARNING_FILTER += allow class="Deprecated Transfer Protocol (C#)" 
    WARNING_FILTER += allow class="Deserializable Class (C#)" 
    WARNING_FILTER += allow class="Disabled Input Validation (C#)" 
    WARNING_FILTER += allow class="Disposable fields should be disposed (C#)" 
    WARNING_FILTER += allow class="Disposable types should declare finalizer (C#)" 
    WARNING_FILTER += allow class="Dispose objects before losing scope (C#)" 
    WARNING_FILTER += allow class="Do Not Add Archive Item's Path To The Target File System Path (C#)" 
    WARNING_FILTER += allow class="Do Not Add Certificates To Root Store (C#)" 
    WARNING_FILTER += allow class="Do Not Catch Corrupted State Exceptions (C#)" 
    WARNING_FILTER += allow class="Do Not Disable SChannel Use of Strong Crypto (C#)" 
    WARNING_FILTER += allow class="Do Not Serialize Types With Pointer Fields (C#)" 
    WARNING_FILTER += allow class="Do Not Use Account Shared Access Signature (C#)" 
    WARNING_FILTER += allow class="Do Not Use Weak Key Derivation Function With Insufficient Iteration Count (C#)" 
    WARNING_FILTER += allow class="Do not always skip token validation in delegates (C#)" 
    WARNING_FILTER += allow class="Do not call BinaryFormatter.Deserialize without first setting BinaryFormatter.Binder (C#)" 
    WARNING_FILTER += allow class="Do not call overridable methods in constructors (C#)" 
    WARNING_FILTER += allow class="Do not catch general exception types (C#)" 
    WARNING_FILTER += allow class="Do not create tasks without passing a TaskScheduler (C#)" 
    WARNING_FILTER += allow class="Do not deserialize with JavaScriptSerializer using a SimpleTypeResolver (C#)" 
    WARNING_FILTER += allow class="Do not deserialize with JsonSerializer using an insecure configuration (C#)" 
    WARNING_FILTER += allow class="Do not deserialize without first setting NetDataContractSerializer.Binder (C#)" 
    WARNING_FILTER += allow class="Do not disable ServicePointManagerSecurityProtocols (C#)" 
    WARNING_FILTER += allow class="Do not disable token validation checks (C#)" 
    WARNING_FILTER += allow class="Do not expose generic lists (C#)" 
    WARNING_FILTER += allow class="Do not hard-code certificate (C#)" 
    WARNING_FILTER += allow class="Do not hard-code encryption key (C#)" 
    WARNING_FILTER += allow class="Do not lock on objects with weak identity (C#)" 
    WARNING_FILTER += allow class="Do not mark enums with FlagsAttribute (C#)" 
    WARNING_FILTER += allow class="Do not name enum values 'Reserved' (C#)" 
    WARNING_FILTER += allow class="Do not overload equality operator on reference types (C#)" 
    WARNING_FILTER += allow class="Do not pass literals as localized parameters (C#)" 
    WARNING_FILTER += allow class="Do not pass types by reference (C#)" 
    WARNING_FILTER += allow class="Do not raise exceptions in unexpected locations (C#)" 
    WARNING_FILTER += allow class="Do not use CreateEncryptor with non-default IV (C#)" 
    WARNING_FILTER += allow class="Do not use DataSet.ReadXml() with untrusted data (C#)" 
    WARNING_FILTER += allow class="Do not use DataTable.ReadXml() with untrusted data (C#)" 
    WARNING_FILTER += allow class="Do not use TypeNameHandling values other than None (C#)" 
    WARNING_FILTER += allow class="Do not use insecure JsonSerializerSettings (C#)" 
    WARNING_FILTER += allow class="Do not use insecure deserializer BinaryFormatter (C#)" 
    WARNING_FILTER += allow class="Do not use insecure deserializer LosFormatter (C#)" 
    WARNING_FILTER += allow class="Do not use insecure deserializer NetDataContractSerializer (C#)" 
    WARNING_FILTER += allow class="Do not use insecure deserializer ObjectStateFormatter (C#)" 
    WARNING_FILTER += allow class="Do not use insecure randomness (C#)" 
    WARNING_FILTER += allow class="Do not use unsafe DllImportSearchPath value (C#)" 
    WARNING_FILTER += allow class="Ensure BinaryFormatter.Binder is set before calling BinaryFormatter.Deserialize (C#)" 
    WARNING_FILTER += allow class="Ensure Certificates Are Not Added To Root Store (C#)" 
    WARNING_FILTER += allow class="Ensure HttpClient certificate revocation list check is not disabled (C#)" 
    WARNING_FILTER += allow class="Ensure JavaScriptSerializer is not initialized with SimpleTypeResolver before deserializing (C#)" 
    WARNING_FILTER += allow class="Ensure NetDataContractSerializer.Binder is set before deserializing (C#)" 
    WARNING_FILTER += allow class="Ensure Sufficient Iteration Count When Using Weak Key Derivation Function (C#)" 
    WARNING_FILTER += allow class="Ensure Use Secure Cookies In ASP.NET Core (C#)" 
    WARNING_FILTER += allow class="Ensure auto-generated class containing DataSet.ReadXml() is not used with untrusted data (C#)" 
    WARNING_FILTER += allow class="Ensure that JsonSerializer has a secure configuration when deserializing (C#)" 
    WARNING_FILTER += allow class="Ensure that JsonSerializerSettings are secure (C#)" 
    WARNING_FILTER += allow class="Enum Storage should be Int32 (C#)" 
    WARNING_FILTER += allow class="Enums should have zero value (C#)" 
    WARNING_FILTER += allow class="Events should not have 'Before' or 'After' prefix (C#)" 
    WARNING_FILTER += allow class="Exceptions should be public (C#)" 
    WARNING_FILTER += allow class="Field Element may be null (deep) (C#)" 
    WARNING_FILTER += allow class="Field Too Visible (C#)" 
    WARNING_FILTER += allow class="Field may be null (deep) (C#)" 
    WARNING_FILTER += allow class="Hardcoded IP Address (C#)" 
    WARNING_FILTER += allow class="HttpClients should enable certificate revocation list checks (C#)" 
    WARNING_FILTER += allow class="Implement IDisposable Correctly (C#)" 
    WARNING_FILTER += allow class="Implement IEquatable when overriding Object.Equals (C#)" 
    WARNING_FILTER += allow class="Implement standard exception constructors (C#)" 
    WARNING_FILTER += allow class="Inadequate Salt (C#)" 
    WARNING_FILTER += allow class="Initialize reference type static fields inline (C#)" 
    WARNING_FILTER += allow class="Initialize value type static fields inline (C#)" 
    WARNING_FILTER += allow class="Interface methods should be callable by child types (C#)" 
    WARNING_FILTER += allow class="Invalid entry in code metrics rule specification file (C#)" 
    WARNING_FILTER += allow class="Mark ISerializable types with serializable (C#)" 
    WARNING_FILTER += allow class="Mark all non-serializable fields (C#)" 
    WARNING_FILTER += allow class="Mark assemblies with CLSCompliant (C#)" 
    WARNING_FILTER += allow class="Mark assemblies with ComVisible (C#)" 
    WARNING_FILTER += allow class="Mark enums with FlagsAttribute (C#)" 
    WARNING_FILTER += allow class="Method Disables Security Setting (C#)" 
    WARNING_FILTER += allow class="Method Should be final (C#)" 
    WARNING_FILTER += allow class="Method Should be private (C#)" 
    WARNING_FILTER += allow class="Miss HttpVerb attribute for action methods (C#)" 
    WARNING_FILTER += allow class="Missing synchronized Statement (C#)" 
    WARNING_FILTER += allow class="Move pinvokes to native methods class (C#)" 
    WARNING_FILTER += allow class="Mutable Constant Field (C#)" 
    WARNING_FILTER += allow class="Naming Style Violation (C#)" 
    WARNING_FILTER += allow class="Nested types should not be visible (C#)" 
    WARNING_FILTER += allow class="Normalize strings to uppercase (C#)" 
    WARNING_FILTER += allow class="Null Pointer Dereference (deep) (C#)" 
    WARNING_FILTER += allow class="Operator overloads have named alternates (C#)" 
    WARNING_FILTER += allow class="Operators should have symmetrical overloads (C#)" 
    WARNING_FILTER += allow class="Override equals and operator equals on value types (C#)" 
    WARNING_FILTER += allow class="Pass system uri objects instead of strings (C#)" 
    WARNING_FILTER += allow class="Possible multiple enumerations of 'IEnumerable' collection (C#)" 
    WARNING_FILTER += allow class="Potential reference cycle in deserialized object graph (C#)" 
    WARNING_FILTER += allow class="Prefer jagged arrays over multidimensional (C#)" 
    WARNING_FILTER += allow class="Properties should not be write only (C#)" 
    WARNING_FILTER += allow class="Properties should not return arrays (C#)" 
    WARNING_FILTER += allow class="Property names should not match get methods (C#)" 
    WARNING_FILTER += allow class="Return Value may Contain null Element (C#)" 
    WARNING_FILTER += allow class="Return Value may be null (C#)" 
    WARNING_FILTER += allow class="Review SQL queries for security vulnerabilities (C#)" 
    WARNING_FILTER += allow class="Review cipher mode usage with cryptography experts (C#)" 
    WARNING_FILTER += allow class="Review code for DLL injection vulnerabilities (C#)" 
    WARNING_FILTER += allow class="Review code for LDAP injection vulnerabilities (C#)" 
    WARNING_FILTER += allow class="Review code for SQL injection vulnerabilities (C#)" 
    WARNING_FILTER += allow class="Review code for XAML injection vulnerabilities (C#)" 
    WARNING_FILTER += allow class="Review code for XML injection vulnerabilities (C#)" 
    WARNING_FILTER += allow class="Review code for XPath injection vulnerabilities (C#)" 
    WARNING_FILTER += allow class="Review code for XSS vulnerabilities (C#)" 
    WARNING_FILTER += allow class="Review code for file path injection vulnerabilities (C#)" 
    WARNING_FILTER += allow class="Review code for information disclosure vulnerabilities (C#)" 
    WARNING_FILTER += allow class="Review code for open redirect vulnerabilities (C#)" 
    WARNING_FILTER += allow class="Review code for process command injection vulnerabilities (C#)" 
    WARNING_FILTER += allow class="Review code for regex injection vulnerabilities (C#)" 
    WARNING_FILTER += allow class="Seal methods that satisfy private interfaces (C#)" 
    WARNING_FILTER += allow class="Security Annotation Conflict (C#)" 
    WARNING_FILTER += allow class="Set HttpOnly to true for HttpCookie (C#)" 
    WARNING_FILTER += allow class="Specify StringComparison for clarity (C#)" 
    WARNING_FILTER += allow class="Static Field Too Visible (C#)" 
    WARNING_FILTER += allow class="Static holder types should be Static or NotInheritable (C#)" 
    WARNING_FILTER += allow class="Test for empty strings using string length (C#)" 
    WARNING_FILTER += allow class="Type names should not match namespaces (C#)" 
    WARNING_FILTER += allow class="Types should not extend certain base types (C#)" 
    WARNING_FILTER += allow class="URI-like parameters should not be strings (C#)" 
    WARNING_FILTER += allow class="URI-like properties should not be strings (C#)" 
    WARNING_FILTER += allow class="URI-like return values should not be strings (C#)" 
    WARNING_FILTER += allow class="Unchecked Parameter Dereference (deep) (C#)" 
    WARNING_FILTER += allow class="Unchecked Parameter Element Dereference (deep) (C#)" 
    WARNING_FILTER += allow class="Unguarded Field (C#)" 
    WARNING_FILTER += allow class="Unguarded Method (C#)" 
    WARNING_FILTER += allow class="Unguarded Parameter (C#)" 
    WARNING_FILTER += allow class="Unsafe Base64 Encoding (C#)" 
    WARNING_FILTER += allow class="Unsafe DataSet or DataTable in auto-generated serializable type can be vulnerable to remote code execution attacks (C#)" 
    WARNING_FILTER += allow class="Unsafe DataSet or DataTable in deserialized object graph can be vulnerable to remote code execution attacks (C#)" 
    WARNING_FILTER += allow class="Unsafe DataSet or DataTable in serializable type (C#)" 
    WARNING_FILTER += allow class="Unsafe DataSet or DataTable in serializable type can be vulnerable to remote code execution attacks (C#)" 
    WARNING_FILTER += allow class="Unsafe DataSet or DataTable type found in deserializable object graph (C#)" 
    WARNING_FILTER += allow class="Unsafe DataSet or DataTable type in web deserializable object graph (C#)" 
    WARNING_FILTER += allow class="Use Container Level Access Policy (C#)" 
    WARNING_FILTER += allow class="Use CreateEncryptor with the default IV  (C#)" 
    WARNING_FILTER += allow class="Use DefaultDllImportSearchPaths attribute for P/Invokes (C#)" 
    WARNING_FILTER += allow class="Use Integral Or String Argument For Indexers (C#)" 
    WARNING_FILTER += allow class="Use Secure Cookies In ASP.NET Core (C#)" 
    WARNING_FILTER += allow class="Use SharedAccessProtocol HttpsOnly (C#)" 
    WARNING_FILTER += allow class="Use antiforgery tokens in ASP.NET Core MVC controllers (C#)" 
    WARNING_FILTER += allow class="Use char overload, CA1867 (C#)" 
    WARNING_FILTER += allow class="Use events where appropriate (C#)" 
    WARNING_FILTER += allow class="Use generic event handler instances (C#)" 
    WARNING_FILTER += allow class="Use literals where appropriate (C#)" 
    WARNING_FILTER += allow class="Use properties where appropriate (C#)" 
    WARNING_FILTER += allow class="Useless null Test (C#)" 
    WARNING_FILTER += allow class="Useless null Test of Field (C#)" 
    WARNING_FILTER += allow class="Useless null Test of Parameter (C#)" 
    WARNING_FILTER += allow class="Useless null Test of Return Value (C#)" 
    WARNING_FILTER += allow class="Validate arguments of public methods (C#)" 
    WARNING_FILTER += allow class="clone Subclass of Non-clonable (C#)" 
    WARNING_FILTER += allow class="null Passed to Method (deep) (C#)" 

 (Go warning classes all allowed by default)

 (Kotlin warning classes all allowed by default)

 (Python warning classes all allowed by default)

 (Rust warning classes all allowed by default)

 (JavaScript warning classes all allowed by default)

 (TypeScript warning classes all allowed by default)

To enable additional buffer overrun checking, which can best be described as better at finding buffer overruns involving pointer arithmetic:

 WARNING_FILTER += allow class="2$Buffer Overrun"

To discard integer overflow warnings that occur entirely within system headers:

 WARNING_FILTER += discard class="Integer Overflow of Allocation Size" is_sysinclude
Factory Settings
  • WARNING_FILTER += discard language="C++" is_sysinclude
  • WARNING_FILTER += discard class="Cast Alters Value" is_sysinclude
  • WARNING_FILTER += discard class="Undefined Macro in #if" is_sysinclude
  • WARNING_FILTER += discard class="Read Past Null Terminator" procedure:"::char_traits::compare"
Tags
  • Analysis-Side Filtering

Use to specify that certain sets of procedures should not be analyzed.

Type { UNREACHABLE_FUNCTIONS, SOURCE_LIBRARIES }
Behavior
Tags
  • Analysis-Side Filtering

Provides a safeguard against misidentifying a large portion of source code as unreachable.

Type integer
Behavior The value of this parameter is used in computing set REACHABLE_FROM_ROOTS_EXTENDED.
Factory Setting
  • SOURCE_MIN_REACHABLE_FROM_ROOTS = 0

Provides a safeguard against misidentifying a large portion of source code as reachable from libraries.

Type integer
Behavior The value of this parameter is used in computing set CONSERVATIVELY_REACHABLE_FROM_SOURCE_LIBRARIES.
Notes We define sets REACHABLE_FROM_SOURCE_LIBRARIES and CONSERVATIVELY_REACHABLE_FROM_SOURCE_LIBRARIES.

REACHABLE_FROM_SOURCE_LIBRARIES is the set of all source procedures P such that:

  • P's name matches a CodeSonar library model, or
  • P is called (directly or transitively) by a procedure whose name matches a CodeSonar library model.

In some cases, the name matching may misidentify procedures as libraries, which may result in a significant number of procedures misidentified as reachable from libraries. In such cases, CodeSonar may fail to analyze a significant portion of the program, reducing the quality of the results. The use of set CONSERVATIVELY_REACHABLE_FROM_SOURCE_LIBRARIES represents a safeguard against such cases.

CONSERVATIVELY_REACHABLE_FROM_SOURCE_LIBRARIES is defined as follows. Let S be the set of all source procedures in the analyzed project (for a source-only analysis, all procedures are source procedures).

  • If |REACHABLE_FROM_SOURCE_LIBRARIES|/|S| is greater than SOURCE_MAX_REACHABLE_FROM_LIBRARIES/100, CONSERVATIVELY_REACHABLE_FROM_SOURCE_LIBRARIES is the empty set.
  • Otherwise, CONSERVATIVELY_REACHABLE_FROM_SOURCE_LIBRARIES is equal to REACHABLE_FROM_SOURCE_LIBRARIES.
Factory Setting
  • SOURCE_MAX_REACHABLE_FROM_LIBRARIES = 100

Use the BAD_FUNCTION_* family of parameters to define warning classes that indicate the use of specific (prohibited) functions.

Type
  • BAD_FUNCTION_REGEX: Boost 'POSIX Extended Regular Expression'
  • BAD_FUNCTION_MESSAGE: string
  • BAD_FUNCTION_CATEGORIES: string
  • BAD_FUNCTION_BASE_RANK: number
  • BAD_FUNCTION_INFO: string
  • BAD_FUNCTION_LINK: string representing a URL
  • BAD_FUNCTION_SIGNIFICANCE: { UNSPECIFIED, SECURITY, RELIABILITY, REDUNDANCY, STYLE, DIAGNOSTIC }
Behavior These parameters are used together to specify bad functions to check for and warnings to issue when those functions occur.
  • BAD_FUNCTION_REGEX is a regular expression. If a reference to a function that matches this is found, then a warning is issued. Matches are with respect to the cs_pdg_procedure_name(). In C compilation units, this is the procedure name only (no type information or name qualification). In C++ compilation units, it will also include template instantiations, name qualification, and argument types.
  • BAD_FUNCTION_MESSAGE will be used as the warning class name. It defaults to "Bad Function". If the message contains any characters that are special to HTML, they must be HTML-encoded.
  • BAD_FUNCTION_CATEGORIES is the set of categories for the warning, as a semicolon-separated list. This defaults to the empty string.
  • BAD_FUNCTION_BASE_RANK is the base rank assigned to the warning, with default 15.0.
  • BAD_FUNCTION_INFO will be used in the warning description box sentence 'Use of [funcname()] is not recommended because ...'. The default value is "it is correlated with security or safety problems." Use <paragraph></paragraph> to delimit paragraphs. Use <link url="linkURL">linktext</link> to link "linktext" to linkURL.
  • BAD_FUNCTION_LINK specifies a URL for further information. Values beginning with "#' are interpreted relative to the CodeSonar manual root. If a value is specified, CodeSonar will append 'See <a href="...">here</a> for more information.' to the text in the warning description box. If no value is specified, and BAD_FUNCTION_INFO is also not specified, CodeSonar will look for a category beginning with "BADFUNC" in the BAD_FUNCTION_CATEGORIES list. If there is such a category, CodeSonar will add the "See here..." sentence with a link to the corresponding warning class page.
  • BAD_FUNCTION_SIGNIFICANCE is a string representing the Significance classification for this warning class.
Notes Parameter BAD_FUNCTION_RANK is deprecated in favor of BAD_FUNCTION_BASE_RANK; the two currently have identical behavior.

If two or more sets of BAD_FUNCTION_* rules have the same BAD_FUNCTION_MESSAGE value, the same warning class will be used to cover all cases. Therefore, sets of rules with the same BAD_FUNCTION_MESSAGE should also have the same BAD_FUNCTION_CATEGORIES, BAD_FUNCTION_INFO, and BAD_FUNCTION_BASE_RANK values (that is, they should only differ in the BAD_FUNCTION_REGEX setting).

Similarly, if a set of BAD_FUNCTION_* rules has a BAD_FUNCTION_MESSAGE that is the same as the name of a standard CodeSonar warning class, the category and base rank settings of the standard class will apply and any BAD_FUNCTION_CATEGORIES or BAD_FUNCTION_BASE_RANK specified in the set will not be used.

Example 1: the following specifies that uses of the function "gets" should be flagged as warnings.

     BAD_FUNCTION_REGEX = ^gets$
     BAD_FUNCTION_MESSAGE = Use of gets
     BAD_FUNCTION_CATEGORIES = BADFUNC.BO.GETS;CWE:242
     BAD_FUNCTION_BASE_RANK = 1.0
     BAD_FUNCTION_SIGNIFICANCE = SECURITY

Example 2: the following introduces a warning on use of the function "memset". This warning is useful because some compilers may insecurely remove the call during optimization. See CWE:14 for details.

     BAD_FUNCTION_REGEX = ^memset$
     BAD_FUNCTION_MESSAGE = Use of memset
     BAD_FUNCTION_CATEGORIES = BADFUNC.MEMSET;CWE:14
     BAD_FUNCTION_BASE_RANK = 10.0
     BAD_FUNCTION_SIGNIFICANCE = SECURITY

If you are writing BAD_FUNCTION_* rule sets for a C++ compilation unit and want to precisely match exactly one function, you will need the precise "verbose name" of the function. Rather than attempting to predict the verbose name, we strongly recommend that you recover it using the CodeSonar API. For example, you could use the CodeSonar Plug-In API to write a plug-in that traverses the procedures of the project, printing the verbose name of each.

    import cs
    @cs.procedure_visitor
    def proc(p):
        print('\nFUNCTION NAME:', p.verbose_name())

For example, suppose we have a C++ compilation unit that includes the following.

  namespace ns{
    // ...
    class C {
      public:
        int myfunc(void);   // function of interest
      //...
    };
    //...
  }

The CodeSonar API reports that the verbose name of the marked "function of interest" is ns::C::myfunc().

We can use the following rule to match uses of this function and only of this function.

  BAD_FUNCTION_REGEX = ^ns::C::myfunc\(\)$

If ns::C::myfunc() is overloaded, only uses with no arguments will match.

We can remove the delimiters from the regular expression to widen the search:

  BAD_FUNCTION_REGEX = ns::C::myfunc\(\)

This will match all uses of ns::C::myfunc(), but will also match uses of otherns::C::myfunc() and so on.

We can remove the namespace and class qualifiers to widen the search further:

  BAD_FUNCTION_REGEX = myfunc\(\)

This will also match functions such as ns:C:myfunc, ns:B:myfunc, otherns::D::othermyfunc().

If we remove the parenthesized parameter list the match is wider still:

  BAD_FUNCTION_REGEX = myfunc

This will also match ns:B:a_myfunc_2, and even otherns::myfunc::fname().

It is important to note that none of the following will match ANY use of the function of interest in this compilation unit.

  BAD_FUNCTION_REGEX = ^myfunc$
  BAD_FUNCTION_REGEX = ^myfunc()$
  BAD_FUNCTION_REGEX = ^myfunc\(void\)$

The second of these non-matching rules is equivalent to the first, since its parentheses aren't escaped and so are interpreted as subexpression delimiters rather than literal characters. The third expresses a type signature that is semantically equivalent to that in the verbose name, but is not a string match.

The $str$Class_Name form used in some of the BAD_FUNCTION_MESSAGE factory settings is for internal CodeSecure use. Do not imitate this format: specify plain class names as shown in the examples above.

Factory Settings
  • BAD_FUNCTION_REGEX = ^crypt$
  • BAD_FUNCTION_MESSAGE = $Insecure Randomness$Use of crypt
  • BAD_FUNCTION_CATEGORIES = BADFUNC.CRYPT;BSI:CRYPT-01;BSI:CRYPT-02;CWE:326;CWE:330
  • BAD_FUNCTION_BASE_RANK = 40.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^gets$|^_get(t|w)s$
  • BAD_FUNCTION_MESSAGE = $Dangerous Function$Use of gets
  • BAD_FUNCTION_CATEGORIES = BADFUNC.BO.GETS;BSI:GETS;CWE:120;CWE:242
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^_?tmpfile$
  • BAD_FUNCTION_MESSAGE = $Insecure Temporary File$Use of tmpfile
  • BAD_FUNCTION_CATEGORIES = BADFUNC.TEMP.TMPFILE;BSI:TMPNAM-TMPFILE;BSI:Truncate;CWE:377
  • BAD_FUNCTION_BASE_RANK = 42.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^tmpnam(_r)?$|^_(t|w)tmpnam$
  • BAD_FUNCTION_MESSAGE = $Insecure Temporary File$Use of tmpnam
  • BAD_FUNCTION_CATEGORIES = BADFUNC.TEMP.TMPNAM;BSI:TMPNAM-TMPFILE;BSI:Truncate;CWE:377
  • BAD_FUNCTION_BASE_RANK = 43.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^tempnam$|^_(t|w)?tempnam$
  • BAD_FUNCTION_MESSAGE = $Insecure Temporary File$Use of tmpnam
  • BAD_FUNCTION_CATEGORIES = BADFUNC.TEMP.TMPNAM;BSI:TMPNAM-TMPFILE;BSI:Truncate;CWE:377
  • BAD_FUNCTION_BASE_RANK = 43.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^GetTempFileName(A|W)?$
  • BAD_FUNCTION_MESSAGE= Use of GetTempFileName
  • BAD_FUNCTION_CATEGORIES = BADFUNC.TEMP.GETTEMPFILENAME;BSI:GetTempFileName;CWE:377
  • BAD_FUNCTION_BASE_RANK = 43.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^setjmp$
  • BAD_FUNCTION_MESSAGE = $Call to setjmp$Use of setjmp
  • BAD_FUNCTION_CATEGORIES = BADFUNC.SETJMP;CWE:676;CWE:691;CWE:710;CWE:1170;Misra2012:21.4;Misra2004:20.7;MisraC++2008:17-0-5;AUTOSARC++14:M17-0-5;CERT-C:MSC22-C;CERT-CPP:ERR52-CPP;JPL:11;POW10:1
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^longjmp$
  • BAD_FUNCTION_MESSAGE = $Call to longjmp$Use of longjmp
  • BAD_FUNCTION_CATEGORIES = BADFUNC.LONGJMP;CWE:676;CWE:691;CWE:710;CWE:1170;Misra2012:21.4;Misra2004:20.7;MisraC++2008:17-0-5;AUTOSARC++14:M17-0-5;CERT-C:MSC22-C;CERT-CPP:ERR52-CPP;JPL:11;POW10:1
  • BAD_FUNCTION_BASE_RANK = 12.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^mktemp$|^_(t|w)?mktemp$
  • BAD_FUNCTION_MESSAGE = $Insecure Temporary File$Use of mktemp
  • BAD_FUNCTION_CATEGORIES = BADFUNC.TEMP.MKTEMP;BSI:MKTEMP;CWE:377
  • BAD_FUNCTION_BASE_RANK = 47.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^sleep|usleep|taskDelay|nanosleep|clock_nanosleep$
  • BAD_FUNCTION_MESSAGE = Task Delay Function
  • BAD_FUNCTION_CATEGORIES = CONCURRENCY.BADFUNC.DELAY;JPL:7
  • BAD_FUNCTION_SIGNIFICANCE = RELIABILITY
  • BAD_FUNCTION_REGEX = ^osal_task_delay|osal_task_pause$
  • BAD_FUNCTION_MESSAGE = Task Delay Function
  • BAD_FUNCTION_CATEGORIES = CONCURRENCY.BADFUNC.DELAY;JPL:7
  • BAD_FUNCTION_SIGNIFICANCE = RELIABILITY
  • BAD_FUNCTION_REGEX = ^puts|printf|vprintf$
  • BAD_FUNCTION_MESSAGE = Leftover Debug Code
  • BAD_FUNCTION_CATEGORIES = LANG.STRUCT.DBG;CWE:489
  • BAD_FUNCTION_SIGNIFICANCE = STYLE
  • BAD_FUNCTION_REGEX = ^system$|^_wsystem$
  • BAD_FUNCTION_MESSAGE = Use of system
  • BAD_FUNCTION_CATEGORIES = BADFUNC.PATH.SYSTEM;CWE:676;CWE:1165;Misra2004:20.11;Misra2012:21.8;MisraC++2008:18-0-3;AUTOSARC++14:M18-0-3;CERT-C:ENV33-C;TS17961:5.8-syscall;DISA-4r3:V-70261;DISA-3r10:V-6157;DISA-3r10:V-16810
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^AddAccessAllowedAce$
  • BAD_FUNCTION_MESSAGE = Use of AddAccessAllowedAce
  • BAD_FUNCTION_CATEGORIES = BADFUNC.ADDACCESSACE;BSI:AddAccess-ACE;CWE:269;CWE:281
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^AddAccessDeniedAce$
  • BAD_FUNCTION_MESSAGE = Use of AddAccessDeniedAce
  • BAD_FUNCTION_CATEGORIES = BADFUNC.ADDACCESSACE;BSI:AddAccess-ACE;CWE:269;CWE:281
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^AfxLoadLibrary$
  • BAD_FUNCTION_MESSAGE = Use of AfxLoadLibrary
  • BAD_FUNCTION_CATEGORIES = BADFUNC.PATH.AFXLOADLIBRARY;BSI:AfxLoadLibrary;CWE:426
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^CoLoadLibrary$
  • BAD_FUNCTION_MESSAGE = Use of CoLoadLibrary
  • BAD_FUNCTION_CATEGORIES = BADFUNC.PATH.COLOADLIBRARY;BSI:AfxLoadLibrary;CWE:426
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^AfxParseURL$
  • BAD_FUNCTION_MESSAGE = Use of AfxParseURL
  • BAD_FUNCTION_CATEGORIES = BADFUNC.AFXPARSEURL;BSI:AfxParseURL;CWE:242
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^catopen$
  • BAD_FUNCTION_MESSAGE = Use of catopen
  • BAD_FUNCTION_CATEGORIES = BADFUNC.CATOPEN;BSI:Catopen;CWE:242
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^chroot$
  • BAD_FUNCTION_MESSAGE = Use of chroot
  • BAD_FUNCTION_CATEGORIES = BADFUNC.CHROOT;BSI:CHROOT-01;BSI:CHROOT-02;BSI:CHROOT-03;CWE:242
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^CreateFile(A|W)?$
  • BAD_FUNCTION_MESSAGE = Use of CreateFile
  • BAD_FUNCTION_CATEGORIES = BADFUNC.CREATEFILE;BSI:CreateFile-01;BSI:CreateFile-02;CWE:242
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^CreateProcess(A|W)?$|^CreateProcessAsUser(A|W)?$|^CreateProcessWithLogonW$
  • BAD_FUNCTION_MESSAGE = Use of CreateProcess
  • BAD_FUNCTION_CATEGORIES = BADFUNC.CREATEPROCESS;BSI:CreateProcess-02;BSI:CreateProcess-03;BSI:CreateProcess-04;CWE:242
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^CreateThread$
  • BAD_FUNCTION_MESSAGE = Use of CreateThread
  • BAD_FUNCTION_CATEGORIES = BADFUNC.CREATETHREAD;BSI:CreateThread;CWE:242
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^cuserid$
  • BAD_FUNCTION_MESSAGE = Use of cuserid
  • BAD_FUNCTION_CATEGORIES = BADFUNC.CUSERID;BSI:CUSERID;CWE:477;CWE:863
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^_w?execlp?e?$|^_w?execvp?e?$
  • BAD_FUNCTION_MESSAGE = Use of _exec
  • BAD_FUNCTION_CATEGORIES = BADFUNC.PATH._EXEC;BSI:Exec-SearchPath-01;BSI:Exec-SearchPath-02;CWE:426
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^execlp$
  • BAD_FUNCTION_MESSAGE = Use of execlp
  • BAD_FUNCTION_CATEGORIES = BADFUNC.PATH.EXECLP;BSI:Exec-SearchPath-01;CWE:426
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^execvp$
  • BAD_FUNCTION_MESSAGE = Use of execvp
  • BAD_FUNCTION_CATEGORIES = BADFUNC.PATH.EXECVP;BSI:Exec-SearchPath-01;CWE:426
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^popen$
  • BAD_FUNCTION_MESSAGE = Use of popen
  • BAD_FUNCTION_CATEGORIES = BADFUNC.PATH.POPEN;BSI:Exec-SearchPath-01;CWE:426
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^_w?spawnlp?e?$|^_w?spawnvp?e?$
  • BAD_FUNCTION_MESSAGE = Use of _spawn
  • BAD_FUNCTION_CATEGORIES = BADFUNC.PATH._SPAWN;BSI:Exec-SearchPath-01;BSI:Exec-SearchPath-02;CWE:426
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^FormatMessage(A|W)?$
  • BAD_FUNCTION_MESSAGE = Use of FormatMessage
  • BAD_FUNCTION_CATEGORIES = BADFUNC.FORMATMESSAGE;BSI:FormatMessage;CWE:134;CWE:242
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^getlogin$
  • BAD_FUNCTION_MESSAGE = Use of getlogin
  • BAD_FUNCTION_CATEGORIES = BADFUNC.GETLOGIN;BSI:GETLOGIN;CWE:863
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^getopt(_long(_only)?)?$
  • BAD_FUNCTION_MESSAGE = Use of getopt
  • BAD_FUNCTION_CATEGORIES = BADFUNC.BO.GETOPT;BSI:GETOPT;CWE:120;CWE:242
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^getpass$
  • BAD_FUNCTION_MESSAGE = Use of getpass
  • BAD_FUNCTION_CATEGORIES = BADFUNC.BO.GETPASS;BSI:GETPASS;CWE:120;CWE:242
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^LoadLibrary(A|W)?$|^LoadLibraryEx(A|W)?$
  • BAD_FUNCTION_MESSAGE = Use of LoadLibrary
  • BAD_FUNCTION_CATEGORIES = BADFUNC.PATH.LOADLIBRARY;BSI:LoadLibrary;CWE:426
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^(std::)?memset(\(.*\))?$
  • BAD_FUNCTION_MESSAGE = Use of memset
  • BAD_FUNCTION_CATEGORIES = BADFUNC.MEMSET;CWE:14
  • BAD_FUNCTION_BASE_RANK = 10.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^(d|e|j|l|m|n|s)rand48$|^seed48$|^lcong48$
  • BAD_FUNCTION_MESSAGE = Use of rand48 Function
  • BAD_FUNCTION_CATEGORIES = BADFUNC.RANDOM.RAND48;BSI:MetaRule;CWE:330
  • BAD_FUNCTION_BASE_RANK = 45.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^(std::)?s?rand(\(.*\))?$
  • BAD_FUNCTION_MESSAGE = Use of rand
  • BAD_FUNCTION_CATEGORIES = BADFUNC.RANDOM.RAND;BSI:MetaRule;CWE:330
  • BAD_FUNCTION_BASE_RANK = 45.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^s?random$
  • BAD_FUNCTION_MESSAGE = Use of random
  • BAD_FUNCTION_CATEGORIES = BADFUNC.RANDOM.RANDOM;BSI:MetaRule;CWE:330
  • BAD_FUNCTION_BASE_RANK = 45.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^mkstemp$
  • BAD_FUNCTION_MESSAGE = $Insecure Temporary File$Use of mkstemp
  • BAD_FUNCTION_CATEGORIES = BADFUNC.TEMP.MKSTEMP;BSI:Mkstemp;CWE:377
  • BAD_FUNCTION_BASE_RANK = 47.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^MoveFile(A|W)?$
  • BAD_FUNCTION_MESSAGE = Use of MoveFile
  • BAD_FUNCTION_CATEGORIES = BADFUNC.MOVEFILE;BSI:MoveFile;CWE:477
  • BAD_FUNCTION_BASE_RANK = 45.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^OemToChar(A|W)?$
  • BAD_FUNCTION_MESSAGE = Use of OemToChar
  • BAD_FUNCTION_CATEGORIES = BADFUNC.BO.OEMTOCHAR;BSI:OemToChar;CWE:120;CWE:242
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^OemToAnsi(A|W)?$
  • BAD_FUNCTION_MESSAGE = Use of OemToAnsi
  • BAD_FUNCTION_CATEGORIES = BADFUNC.BO.OEMTOCHAR;BSI:OemToChar;CWE:120;CWE:242
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^recvmsg$
  • BAD_FUNCTION_MESSAGE = Use of recvmsg
  • BAD_FUNCTION_CATEGORIES = BADFUNC.BO.RECVMSG;BSI:RecvMsg;CWE:120;CWE:242
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^ShellExecute(A|W)?$|^ShellExecuteEx(A|W)?$
  • BAD_FUNCTION_MESSAGE = Use of ShellExecute
  • BAD_FUNCTION_CATEGORIES = BADFUNC.PATH.SHELLEXECUTE;BSI:ShellExecute;CWE:426
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^SHCreateProcessAsUserW$
  • BAD_FUNCTION_MESSAGE = Use of SHCreateProcessAsUserW
  • BAD_FUNCTION_CATEGORIES = BADFUNC.PATH.SHCREATEPROCESSASUSERW;BSI:SHCreateProcessAsUserW;CWE:426
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^signal$
  • BAD_FUNCTION_MESSAGE = Use of signal
  • BAD_FUNCTION_CATEGORIES = BADFUNC.SIGNAL;CWE:676;CWE:1166;CWE:1169;MisraC++2008:18-7-1;AUTOSARC++14:M18-7-1;CERT-C:CON37-C;CERT-C:SIG34-C;CERT-C:SIG02-C;TS17961:5.3-accsig;TS17961:5.5-asyncsig;TS17961:5.7-sigcall;BSI:SIGNAL-01
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^setuid$
  • BAD_FUNCTION_MESSAGE = Use of setuid
  • BAD_FUNCTION_CATEGORIES = BADFUNC.SETUID;BSI:SIGNAL-02;CWE:242
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^lstrcat(A|W)?$|^strc?cat$|^StrCat(A|W)$|^olestrcat$
  • BAD_FUNCTION_MESSAGE = Use of strcat
  • BAD_FUNCTION_CATEGORIES = BADFUNC.BO.STRCAT;BSI:STRCAT;CWE:120;CWE:242
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^_?mbscat$|^_f?tcscat$|^wcscat$
  • BAD_FUNCTION_MESSAGE = Use of strcat
  • BAD_FUNCTION_CATEGORIES = BADFUNC.BO.STRCAT;BSI:STRCAT;CWE:120;CWE:242
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^StrCatChainW$
  • BAD_FUNCTION_MESSAGE = Use of StrCatChainW
  • BAD_FUNCTION_CATEGORIES = BADFUNC.BO.STRCATCHAINW;BSI:StrCatChainW;CWE:120;CWE:242;CWE:251
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^l?strcmpi?$
  • BAD_FUNCTION_MESSAGE = Use of strcmp
  • BAD_FUNCTION_CATEGORIES = BADFUNC.BO.STRCMP;CWE:251;CWE:676;CWE:1161;MisraC++2008:18-0-5;AUTOSARC++14:M18-0-5;CERT-C:STR07-C;BSI:STRCMP
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^strcpy$|^StrCpy(A|W)?$|^strccpy$|^strcadd$
  • BAD_FUNCTION_MESSAGE = Use of strcpy
  • BAD_FUNCTION_CATEGORIES = BADFUNC.BO.STRCPY;CWE:251;CWE:676;CWE:1161;MisraC++2008:18-0-5;AUTOSARC++14:M18-0-5;CERT-C:STR07-C;TS17961:5.36-taintstrcpy;BSI:STRCPY
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^(ua)?lstrcpy(A|W)?$|^olestrcpy$
  • BAD_FUNCTION_MESSAGE = Use of strcpy
  • BAD_FUNCTION_CATEGORIES = BADFUNC.BO.STRCPY;CWE:251;CWE:676;CWE:1161;MisraC++2008:18-0-5;AUTOSARC++14:M18-0-5;CERT-C:STR07-C;TS17961:5.36-taintstrcpy;BSI:STRCPY
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^_f?tcscpy$|^_?mbscpy$|^wcscpy$
  • BAD_FUNCTION_MESSAGE = Use of strcpy
  • BAD_FUNCTION_CATEGORIES = BADFUNC.BO.STRCPY;CWE:251;CWE:676;CWE:1161;MisraC++2008:18-0-5;AUTOSARC++14:M18-0-5;CERT-C:STR07-C;TS17961:5.36-taintstrcpy;BSI:STRCPY
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^l?strlen$
  • BAD_FUNCTION_MESSAGE = Use of strlen
  • BAD_FUNCTION_CATEGORIES = BADFUNC.BO.STRLEN;CWE:251;CWE:676;CWE:1161;MisraC++2008:18-0-5;AUTOSARC++14:M18-0-5;CERT-C:STR07-C;BSI:STRLEN
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^_mbslen$|^_tcslen$|^wcslen$
  • BAD_FUNCTION_MESSAGE = Use of strlen
  • BAD_FUNCTION_CATEGORIES = BADFUNC.BO.STRLEN;CWE:251;CWE:676;CWE:1161;MisraC++2008:18-0-5;AUTOSARC++14:M18-0-5;CERT-C:STR07-C;BSI:STRLEN
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^strtrns$
  • BAD_FUNCTION_MESSAGE = Use of strtrns
  • BAD_FUNCTION_CATEGORIES = BADFUNC.BO.STRTRNS;BSI:STRTRNS;CWE:120;CWE:242;CWE:251
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^strchr$
  • BAD_FUNCTION_MESSAGE = Use of strchr
  • BAD_FUNCTION_CATEGORIES = BADFUNC.BO.STRCHR;CWE:251;CWE:676;CWE:1161;MisraC++2008:18-0-5;AUTOSARC++14:M18-0-5;CERT-C:STR07-C;
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^strcoll$
  • BAD_FUNCTION_MESSAGE = Use of strcoll
  • BAD_FUNCTION_CATEGORIES = BADFUNC.BO.STRCOLL;CWE:251;CWE:676;CWE:1161;MisraC++2008:18-0-5;AUTOSARC++14:M18-0-5;CERT-C:STR07-C;
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^strcspn$
  • BAD_FUNCTION_MESSAGE = Use of strcspn
  • BAD_FUNCTION_CATEGORIES = BADFUNC.BO.STRCSPN;CWE:251;CWE:676;CWE:1161;MisraC++2008:18-0-5;AUTOSARC++14:M18-0-5;CERT-C:STR07-C;
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^strpbrk$
  • BAD_FUNCTION_MESSAGE = Use of strpbrk
  • BAD_FUNCTION_CATEGORIES = BADFUNC.BO.STRPBRK;CWE:251;CWE:676;CWE:1161;MisraC++2008:18-0-5;AUTOSARC++14:M18-0-5;CERT-C:STR07-C;
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^strrchr$
  • BAD_FUNCTION_MESSAGE = Use of strrchr
  • BAD_FUNCTION_CATEGORIES = BADFUNC.BO.STRRCHR;CWE:251;CWE:676;CWE:1161;MisraC++2008:18-0-5;AUTOSARC++14:M18-0-5;CERT-C:STR07-C;
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^strspn$
  • BAD_FUNCTION_MESSAGE = Use of strspn
  • BAD_FUNCTION_CATEGORIES = BADFUNC.BO.STRSPN;CWE:251;CWE:676;CWE:1161;MisraC++2008:18-0-5;AUTOSARC++14:M18-0-5;CERT-C:STR07-C;
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^strstr$
  • BAD_FUNCTION_MESSAGE = Use of strstr
  • BAD_FUNCTION_CATEGORIES = BADFUNC.BO.STRSTR;CWE:251;CWE:676;CWE:1161;MisraC++2008:18-0-5;AUTOSARC++14:M18-0-5;CERT-C:STR07-C;
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^strtok$
  • BAD_FUNCTION_MESSAGE = Use of strtok
  • BAD_FUNCTION_CATEGORIES = BADFUNC.BO.STRTOK;CWE:251;CWE:676;CWE:1161;MisraC++2008:18-0-5;AUTOSARC++14:M18-0-5;CERT-C:STR07-C;
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^syslog$
  • BAD_FUNCTION_MESSAGE = Use of syslog
  • BAD_FUNCTION_CATEGORIES = BADFUNC.BO.SYSLOG;BSI:SYSLOG-1;CWE:120;CWE:242
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^t_open$
  • BAD_FUNCTION_MESSAGE = Use of t_open
  • BAD_FUNCTION_CATEGORIES = BADFUNC.T_OPEN;BSI:T_Open;CWE:242
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^ttyname$
  • BAD_FUNCTION_MESSAGE = Use of ttyname
  • BAD_FUNCTION_CATEGORIES = BADFUNC.TTYNAME;BSI:TTYNAME;CWE:242
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^vfork$
  • BAD_FUNCTION_MESSAGE = Use of vfork
  • BAD_FUNCTION_CATEGORIES = BADFUNC.VFORK;BSI:VFORK;CWE:242
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^getwd$
  • BAD_FUNCTION_MESSAGE = Use of getwd
  • BAD_FUNCTION_CATEGORIES = BADFUNC.BO.GETWD;BSI:GETWD;CWE:120;CWE:242
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^LoadModule$
  • BAD_FUNCTION_MESSAGE = Use of LoadModule
  • BAD_FUNCTION_CATEGORIES = BADFUNC.LOADMODULE;BSI:LoadModule;CWE:477
  • BAD_FUNCTION_BASE_RANK = 44.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^realpath$
  • BAD_FUNCTION_MESSAGE = Use of realpath
  • BAD_FUNCTION_CATEGORIES = BADFUNC.BO.REALPATH;BSI:REALPATH;CWE:785
  • BAD_FUNCTION_BASE_RANK = 46.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^WinExec$
  • BAD_FUNCTION_MESSAGE = Use of WinExec
  • BAD_FUNCTION_CATEGORIES = BADFUNC.WINEXEC;BSI:WinExec;CWE:477
  • BAD_FUNCTION_BASE_RANK = 48.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^(clearerr|ctermid|cuserid|fclose|fdopen|feof|ferror|fflush|fgetc|fgetpos|fgets|fileno|flockfile|fopen|fprintf|fputc|fputs|fread|freopen|fscanf|fseek|fseeko|fsetpos|ftell|ftello|ftrylockfile|funlockfile|fwrite|getc|getchar|getc_unlocked|getchar_unlocked|getopt|gets|getw|pclose|perror|popen|printf|putc|putchar|putc_unlocked|putchar_unlocked|puts|putw|remove|rename|rewind|scanf|setbuf|setvbuf|snprintf|sprintf|sscanf|tempnam|tmpfile|tmpnam|ungetc|vfprintf|vprintf|vsnprintf|vsprintf)$
  • BAD_FUNCTION_MESSAGE = Use of <stdio.h> Input/Output
  • BAD_FUNCTION_CATEGORIES = BADFUNC.STDIO_H;CWE:676;CWE:758;Misra2004:20.9;Misra2012:21.6;MisraC++2008:27-0-1;AUTOSARC++14:M27-0-1
  • BAD_FUNCTION_BASE_RANK = 10
  • BAD_FUNCTION_SIGNIFICANCE = STYLE
  • BAD_FUNCTION_REGEX = ^(btowc|fwprintf|fwscanf|iswalnum|iswalpha|iswcntrl|iswdigit|iswgraph|iswlower|iswprint|iswpunct|iswspace|iswupper|iswxdigit|iswctype|fgetwc|fgetws|fputwc|fputws|fwide|getwc|getwchar|mbsinit|mbrlen|mbrtowc|mbsrtowcs|putwc|putwchar|swprintf|swscanf|towlower|towupper|ungetwc|vfwprintf|vwprintf|vswprintf|wcrtomb|wcscat|wcschr|wcscmp|wcscoll|wcscpy|wcscspn|wcsftime|wcslen|wcsncat|wcsncmp|wcsncpy|wcspbrk|wcsrchr|wcsrtombs|wcsspn|wcsstr|wcstod|wcstok|wcstol|wcstoul|wcswcs|wcswidth|wcsxfrm|wctob|wctype|wcwidth|wmemchr|wmemcmp|wmemcpy|wmemmove|wmemset|wprintf|wscanf)$
  • BAD_FUNCTION_MESSAGE = Use of <wchar.h> Input/Output
  • BAD_FUNCTION_CATEGORIES = BADFUNC.WCHAR_H;Misra2004:20.9;CWE:676;CWE:758;Misra2012:21.6;MisraC++2008:27-0-1;AUTOSARC++14:M27-0-1
  • BAD_FUNCTION_BASE_RANK = 10
  • BAD_FUNCTION_SIGNIFICANCE = STYLE
  • BAD_FUNCTION_REGEX = ^(atof)$
  • BAD_FUNCTION_MESSAGE = Use of atof
  • BAD_FUNCTION_CATEGORIES = BADFUNC.ATOF;Misra2012:21.7;Misra2004:20.10;CWE:758;CWE:676
  • BAD_FUNCTION_BASE_RANK = 10
  • BAD_FUNCTION_SIGNIFICANCE = STYLE
  • BAD_FUNCTION_REGEX = ^(atoi)$
  • BAD_FUNCTION_MESSAGE = Use of atoi
  • BAD_FUNCTION_CATEGORIES = BADFUNC.ATOI;Misra2012:21.7;Misra2004:20.10;CWE:758;CWE:676
  • BAD_FUNCTION_BASE_RANK = 10
  • BAD_FUNCTION_SIGNIFICANCE = STYLE
  • BAD_FUNCTION_REGEX = ^(atol)$
  • BAD_FUNCTION_MESSAGE = Use of atol
  • BAD_FUNCTION_CATEGORIES = BADFUNC.ATOL;Misra2012:21.7;Misra2004:20.10;CWE:758;CWE:676
  • BAD_FUNCTION_BASE_RANK = 10
  • BAD_FUNCTION_SIGNIFICANCE = STYLE
  • BAD_FUNCTION_REGEX = ^(atoll)$
  • BAD_FUNCTION_MESSAGE = Use of atoll
  • BAD_FUNCTION_CATEGORIES = BADFUNC.ATOLL;Misra2012:21.7;Misra2004:20.10;CWE:758;CWE:676
  • BAD_FUNCTION_BASE_RANK = 10
  • BAD_FUNCTION_SIGNIFICANCE = STYLE
  • BAD_FUNCTION_REGEX = ^(abort)$
  • BAD_FUNCTION_MESSAGE = Use of abort
  • BAD_FUNCTION_CATEGORIES = BADFUNC.ABORT;CWE:676;CWE:758;Misra2012:21.8;Misra2004:20.11;MisraC++2008:18-0-3;AUTOSARC++14:M18-0-3;CERT-CPP:ERR50-CPP
  • BAD_FUNCTION_BASE_RANK = 10
  • BAD_FUNCTION_SIGNIFICANCE = STYLE
  • BAD_FUNCTION_REGEX = ^(exit)$
  • BAD_FUNCTION_MESSAGE = Use of exit
  • BAD_FUNCTION_CATEGORIES = BADFUNC.EXIT;CWE:676;CWE:758;Misra2012:21.8;Misra2004:20.11;MisraC++2008:18-0-3;AUTOSARC++14:M18-0-3;CERT-CPP:ERR50-CPP
  • BAD_FUNCTION_BASE_RANK = 10
  • BAD_FUNCTION_SIGNIFICANCE = STYLE
  • BAD_FUNCTION_REGEX = ^(getenv)$
  • BAD_FUNCTION_MESSAGE = Use of getenv
  • BAD_FUNCTION_CATEGORIES = BADFUNC.GETENV;CWE:676;CWE:758;Misra2004:20.11;MisraC++2008:18-0-3;AUTOSARC++14:M18-0-3
  • BAD_FUNCTION_BASE_RANK = 10
  • BAD_FUNCTION_SIGNIFICANCE = STYLE
  • BAD_FUNCTION_REGEX = ^(putenv)$
  • BAD_FUNCTION_MESSAGE = Use of putenv
  • BAD_FUNCTION_CATEGORIES = BADFUNC.PUTENV
  • BAD_FUNCTION_BASE_RANK = 10
  • BAD_FUNCTION_SIGNIFICANCE = STYLE
  • BAD_FUNCTION_REGEX = ^(bsearch)$
  • BAD_FUNCTION_MESSAGE = Use of bsearch
  • BAD_FUNCTION_CATEGORIES = BADFUNC.BSEARCH;Misra2012:21.9;CWE:758;CWE:676
  • BAD_FUNCTION_BASE_RANK = 10
  • BAD_FUNCTION_SIGNIFICANCE = STYLE
  • BAD_FUNCTION_REGEX = ^(qsort)$
  • BAD_FUNCTION_MESSAGE = Use of qsort
  • BAD_FUNCTION_CATEGORIES = BADFUNC.QSORT;Misra2012:21.9;CWE:400;CWE:676
  • BAD_FUNCTION_BASE_RANK = 10
  • BAD_FUNCTION_SIGNIFICANCE = STYLE
  • BAD_FUNCTION_REGEX = ^(asctime|asctime_r|clock|clock_getres|clock_gettime|clock_settime|ctime|ctime_r|difftime|getdate|gmtime|gmtime_r|localtime|localtime_r|mktime|nanosleep|strftime|strptime|time|timer_create|timer_delete|timer_gettime|timer_getoverrun|timer_settime|tzset)$
  • BAD_FUNCTION_MESSAGE = Use of <time.h> Time/Date Function
  • BAD_FUNCTION_CATEGORIES = BADFUNC.TIME_H;CWE:676;CWE:758;Misra2004:20.12;Misra2012:21.10;MisraC++2008:18-0-4;AUTOSARC++14:M18-0-4
  • BAD_FUNCTION_BASE_RANK = 10
  • BAD_FUNCTION_SIGNIFICANCE = STYLE
  • BAD_FUNCTION_REGEX = ^(feclearexcept|fegetexceptflag|feraiseexcept|fesetexceptflag|fetestexcept|fegetround|fesetround|fegetenv|feholdexcept|fesetenv|feupdateenv)$
  • BAD_FUNCTION_MESSAGE = Use of <fenv.h> Exception Handling Function
  • BAD_FUNCTION_CATEGORIES = BADFUNC.FENV_H;Misra2012:21.12
  • BAD_FUNCTION_BASE_RANK = 10
  • BAD_FUNCTION_SIGNIFICANCE = STYLE
  • BAD_FUNCTION_REGEX = ^[dD][eE][sS]_ecb(2)?_encrypt$
  • BAD_FUNCTION_MESSAGE = Weak Cryptography
  • BAD_FUNCTION_CATEGORIES = BADFUNC.WEAKCRYPTO;CWE:327
  • BAD_FUNCTION_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^[dD][eE][sS]_(x|n|p)cbc_encrypt$
  • BAD_FUNCTION_MESSAGE = Weak Cryptography
  • BAD_FUNCTION_CATEGORIES = BADFUNC.WEAKCRYPTO;CWE:327
  • BAD_FUNCTION_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^[dD][eE][sS]_(c|o)fb(64)?_encrypt$
  • BAD_FUNCTION_MESSAGE = Weak Cryptography
  • BAD_FUNCTION_CATEGORIES = BADFUNC.WEAKCRYPTO;CWE:327
  • BAD_FUNCTION_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^[dD][eE][sS]_ede2_(cbc|cfb64|ofb64)_encrypt$
  • BAD_FUNCTION_MESSAGE = Weak Cryptography
  • BAD_FUNCTION_CATEGORIES = BADFUNC.WEAKCRYPTO;CWE:327
  • BAD_FUNCTION_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^[dD][eE][sS]_(f)?crypt$
  • BAD_FUNCTION_MESSAGE = Weak Cryptography
  • BAD_FUNCTION_CATEGORIES = BADFUNC.WEAKCRYPTO;CWE:327
  • BAD_FUNCTION_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^MD(2|4|5)(_Init|_Update|_Final)?$
  • BAD_FUNCTION_MESSAGE = Weak Cryptography
  • BAD_FUNCTION_CATEGORIES = BADFUNC.WEAKCRYPTO;CWE:327
  • BAD_FUNCTION_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^ptrace$
  • BAD_FUNCTION_MESSAGE = Possible Anti-Debugging
  • BAD_FUNCTION_CATEGORIES = BADFUNC.ANTIDEBUG
  • BAD_FUNCTION_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^IsDebuggerPresent$
  • BAD_FUNCTION_MESSAGE = Possible Anti-Debugging
  • BAD_FUNCTION_CATEGORIES = BADFUNC.ANTIDEBUG
  • BAD_FUNCTION_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^NtQueryInformationProcess$
  • BAD_FUNCTION_MESSAGE = Possible Anti-Debugging
  • BAD_FUNCTION_CATEGORIES = BADFUNC.ANTIDEBUG
  • BAD_FUNCTION_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^ProcessDebugObjectHandle$
  • BAD_FUNCTION_MESSAGE = Possible Anti-Debugging
  • BAD_FUNCTION_CATEGORIES = BADFUNC.ANTIDEBUG
  • BAD_FUNCTION_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^RtlQueryProcessHeapInformation$
  • BAD_FUNCTION_MESSAGE = Possible Anti-Debugging
  • BAD_FUNCTION_CATEGORIES = BADFUNC.ANTIDEBUG
  • BAD_FUNCTION_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^RtlQueryProcessDebugInformation$
  • BAD_FUNCTION_MESSAGE = Possible Anti-Debugging
  • BAD_FUNCTION_CATEGORIES = BADFUNC.ANTIDEBUG
  • BAD_FUNCTION_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^SetUnhandledExceptionFilter$
  • BAD_FUNCTION_MESSAGE = Possible Anti-Debugging
  • BAD_FUNCTION_CATEGORIES = BADFUNC.ANTIDEBUG
  • BAD_FUNCTION_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^NtCreateDebugObject$
  • BAD_FUNCTION_MESSAGE = Possible Anti-Debugging
  • BAD_FUNCTION_CATEGORIES = BADFUNC.ANTIDEBUG
  • BAD_FUNCTION_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^NtQuerySystemInformation$
  • BAD_FUNCTION_MESSAGE = Possible Anti-Debugging
  • BAD_FUNCTION_CATEGORIES = BADFUNC.ANTIDEBUG
  • BAD_FUNCTION_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^_?_?gamma[fl]?$
  • BAD_FUNCTION_MESSAGE = Use of gamma
  • BAD_FUNCTION_CATEGORIES = BADFUNC.FLOAT.GAMMA
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = RELIABILITY
  • BAD_FUNCTION_REGEX = ^_?_?drem[fl]?$
  • BAD_FUNCTION_MESSAGE = Use of drem
  • BAD_FUNCTION_CATEGORIES = BADFUNC.FLOAT.DREM
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = RELIABILITY
  • BAD_FUNCTION_REGEX = ^(malloc|calloc|realloc|free)$
  • BAD_FUNCTION_MESSAGE = Use of <stdlib.h> Allocator/Deallocator
  • BAD_FUNCTION_CATEGORIES = BADFUNC.STDLIB_H_MEM;AUTOSARC++14:18-5-1;Misra2012:21.3;Misra2004:20.4;JPL:5;CWE:710;POW10:3
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = STYLE
  • BAD_FUNCTION_REGEX = ^XML_ExternalEntityParserCreate$
  • BAD_FUNCTION_MESSAGE = Use of XML_ExternalEntityParserCreate
  • BAD_FUNCTION_CATEGORIES = BADFUNC.XML_EXTERNALENTITYPARSERCREATE;OWASP-2017:A4
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^(std::)?memcmp(\(.*\))?$
  • BAD_FUNCTION_MESSAGE = Use of memcmp
  • BAD_FUNCTION_CATEGORIES = BADFUNC.MEMCMP
  • BAD_FUNCTION_BASE_RANK = 10.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = cnd_(timed)?wait|pthread_cond_(timed)?wait|SleepConditionVariableCS|std::condition_variable::wait
  • BAD_FUNCTION_MESSAGE = Use of Condition Variable Wait
  • BAD_FUNCTION_CATEGORIES = CONCURRENCY.BADFUNC.CNDWAIT
  • BAD_FUNCTION_BASE_RANK = 10.0
  • BAD_FUNCTION_SIGNIFICANCE = RELIABILITY
  • BAD_FUNCTION_REGEX = ^fork$
  • BAD_FUNCTION_MESSAGE = Use of fork
  • BAD_FUNCTION_CATEGORIES = BADFUNC.FORK
  • BAD_FUNCTION_BASE_RANK = 10.0
  • BAD_FUNCTION_SIGNIFICANCE = RELIABILITY
  • BAD_FUNCTION_REGEX = ^pthread_kill$
  • BAD_FUNCTION_MESSAGE = Use of pthread_kill
  • BAD_FUNCTION_CATEGORIES = CONCURRENCY.BADFUNC.PTHREAD_KILL
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = RELIABILITY
  • BAD_FUNCTION_REGEX = std::condition_variable::notify_one|cnd_signal|pthread_cond_signal|WakeConditionVariable
  • BAD_FUNCTION_MESSAGE = Use of Condition Variable Signal
  • BAD_FUNCTION_CATEGORIES = CONCURRENCY.BADFUNC.CNDSIGNAL
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = RELIABILITY
  • BAD_FUNCTION_REGEX = ^realloc$
  • BAD_FUNCTION_MESSAGE = Use of realloc
  • BAD_FUNCTION_CATEGORIES = BADFUNC.REALLOC
  • BAD_FUNCTION_BASE_RANK = 1.0
  • BAD_FUNCTION_SIGNIFICANCE = SECURITY
  • BAD_FUNCTION_REGEX = ^(std::)?setlocale(\(.*)?$
  • BAD_FUNCTION_MESSAGE = Use of setlocale
  • BAD_FUNCTION_REGEX = ^std::locale::global\(
  • BAD_FUNCTION_MESSAGE = Use of std::locale::global
  • BAD_FUNCTION_REGEX = ^tmpfile_s$
  • BAD_FUNCTION_MESSAGE = Use of tmpfile_s
  • BAD_FUNCTION_REGEX = ^tmpnam_s$
  • BAD_FUNCTION_MESSAGE = Use of tmpnam_s
  • BAD_FUNCTION_REGEX = ^fopen_s$
  • BAD_FUNCTION_MESSAGE = Use of fopen_s
  • BAD_FUNCTION_REGEX = ^freopen_s$
  • BAD_FUNCTION_MESSAGE = Use of freopen_s
  • BAD_FUNCTION_REGEX = ^snprintf_s$
  • BAD_FUNCTION_MESSAGE = Use of snprintf_s
  • BAD_FUNCTION_REGEX = ^sprintf_s$
  • BAD_FUNCTION_MESSAGE = Use of sprintf_s
  • BAD_FUNCTION_REGEX = ^printf_s$
  • BAD_FUNCTION_MESSAGE = Use of printf_s
  • BAD_FUNCTION_REGEX = ^fprintf_s$
  • BAD_FUNCTION_MESSAGE = Use of fprintf_s
  • BAD_FUNCTION_REGEX = ^vprintf_s$
  • BAD_FUNCTION_MESSAGE = Use of vprintf_s
  • BAD_FUNCTION_REGEX = ^vfprintf_s$
  • BAD_FUNCTION_MESSAGE = Use of vfprintf_s
  • BAD_FUNCTION_REGEX = ^vsprintf_s$
  • BAD_FUNCTION_MESSAGE = Use of vsprintf_s
  • BAD_FUNCTION_REGEX = ^vsnprintf_s$
  • BAD_FUNCTION_MESSAGE = Use of vsnprintf_s
  • BAD_FUNCTION_REGEX = ^scanf_s$
  • BAD_FUNCTION_MESSAGE = Use of scanf_s
  • BAD_FUNCTION_REGEX = ^vscanf_s$
  • BAD_FUNCTION_MESSAGE = Use of vscanf_s
  • BAD_FUNCTION_REGEX = ^vsscanf_s$
  • BAD_FUNCTION_MESSAGE = Use of vsscanf_s
  • BAD_FUNCTION_REGEX = ^sscanf_s$
  • BAD_FUNCTION_MESSAGE = Use of sscanf_s
  • BAD_FUNCTION_REGEX = ^fscanf_s$
  • BAD_FUNCTION_MESSAGE = Use of fscanf_s
  • BAD_FUNCTION_REGEX = ^vfscanf_s$
  • BAD_FUNCTION_MESSAGE = Use of vfscanf_s
  • BAD_FUNCTION_REGEX = ^gets_s$
  • BAD_FUNCTION_MESSAGE = Use of gets_s
  • BAD_FUNCTION_REGEX = ^constraint_handler_t$
  • BAD_FUNCTION_MESSAGE = Use of constraint_handler_t
  • BAD_FUNCTION_REGEX = ^set_constraint_handler_s$
  • BAD_FUNCTION_MESSAGE = Use of set_constraint_handler_s
  • BAD_FUNCTION_REGEX = ^abort_handler_s$
  • BAD_FUNCTION_MESSAGE = Use of abort_handler_s
  • BAD_FUNCTION_REGEX = ^ignore_handler_s$
  • BAD_FUNCTION_MESSAGE = Use of ignore_handler_s
  • BAD_FUNCTION_REGEX = ^getenv_s$
  • BAD_FUNCTION_MESSAGE = Use of getenv_s
  • BAD_FUNCTION_REGEX = ^bsearch_s$
  • BAD_FUNCTION_MESSAGE = Use of bsearch_s
  • BAD_FUNCTION_REGEX = ^qsort_s$
  • BAD_FUNCTION_MESSAGE = Use of qsort_s
  • BAD_FUNCTION_REGEX = ^wctomb_s$
  • BAD_FUNCTION_MESSAGE = Use of wctomb_s
  • BAD_FUNCTION_REGEX = ^mbstowcs_s$
  • BAD_FUNCTION_MESSAGE = Use of mbstowcs_s
  • BAD_FUNCTION_REGEX = ^wcstombs_s$
  • BAD_FUNCTION_MESSAGE = Use of wcstombs_s
  • BAD_FUNCTION_REGEX = ^memcpy_s$
  • BAD_FUNCTION_MESSAGE = Use of memcpy_s
  • BAD_FUNCTION_REGEX = ^memset_s$
  • BAD_FUNCTION_MESSAGE = Use of memset_s
  • BAD_FUNCTION_REGEX = ^memmove_s$
  • BAD_FUNCTION_MESSAGE = Use of memmove_s
  • BAD_FUNCTION_REGEX = ^strcpy_s$
  • BAD_FUNCTION_MESSAGE = Use of strcpy_s
  • BAD_FUNCTION_REGEX = ^strncpy_s$
  • BAD_FUNCTION_MESSAGE = Use of strncpy_s
  • BAD_FUNCTION_REGEX = ^strnlen_s$
  • BAD_FUNCTION_MESSAGE = Use of strnlen_s
  • BAD_FUNCTION_REGEX = ^strcat_s$
  • BAD_FUNCTION_MESSAGE = Use of strcat_s
  • BAD_FUNCTION_REGEX = ^strncat_s$
  • BAD_FUNCTION_MESSAGE = Use of strncat_s
  • BAD_FUNCTION_REGEX = ^strtok_s$
  • BAD_FUNCTION_MESSAGE = Use of strtok_s
  • BAD_FUNCTION_REGEX = ^strerror_s$
  • BAD_FUNCTION_MESSAGE = Use of strerror_s
  • BAD_FUNCTION_REGEX = ^strerrorlen_s$
  • BAD_FUNCTION_MESSAGE = Use of strerrorlen_s
  • BAD_FUNCTION_REGEX = ^fwprintf_s$
  • BAD_FUNCTION_MESSAGE = Use of fwprintf_s
  • BAD_FUNCTION_REGEX = ^fwscanf_s$
  • BAD_FUNCTION_MESSAGE = Use of fwscanf_s
  • BAD_FUNCTION_REGEX = ^snwprintf_s$
  • BAD_FUNCTION_MESSAGE = Use of snwprintf_s
  • BAD_FUNCTION_REGEX = ^swprintf_s$
  • BAD_FUNCTION_MESSAGE = Use of swprintf_s
  • BAD_FUNCTION_REGEX = ^swscanf_s$
  • BAD_FUNCTION_MESSAGE = Use of swscanf_s
  • BAD_FUNCTION_REGEX = ^vfwprintf_s$
  • BAD_FUNCTION_MESSAGE = Use of vfwprintf_s
  • BAD_FUNCTION_REGEX = ^vfwscanf_s$
  • BAD_FUNCTION_MESSAGE = Use of vfwscanf_s
  • BAD_FUNCTION_REGEX = ^vsnwprintf_s$
  • BAD_FUNCTION_MESSAGE = Use of vsnwprintf_s
  • BAD_FUNCTION_REGEX = ^vswprintf_s$
  • BAD_FUNCTION_MESSAGE = Use of vswprintf_s
  • BAD_FUNCTION_REGEX = ^vswscanf_s$
  • BAD_FUNCTION_MESSAGE = Use of vswscanf_s
  • BAD_FUNCTION_REGEX = ^vwprintf_s$
  • BAD_FUNCTION_MESSAGE = Use of vwprintf_s
  • BAD_FUNCTION_REGEX = ^vwscanf_s$
  • BAD_FUNCTION_MESSAGE = Use of vwscanf_s
  • BAD_FUNCTION_REGEX = ^wprintf_s$
  • BAD_FUNCTION_MESSAGE = Use of wprintf_s
  • BAD_FUNCTION_REGEX = ^wscanf_s$
  • BAD_FUNCTION_MESSAGE = Use of wscanf_s
  • BAD_FUNCTION_REGEX = ^wcscpy_s$
  • BAD_FUNCTION_MESSAGE = Use of wcscpy_s
  • BAD_FUNCTION_REGEX = ^wcsncpy_s$
  • BAD_FUNCTION_MESSAGE = Use of wcsncpy_s
  • BAD_FUNCTION_REGEX = ^wmemcpy_s$
  • BAD_FUNCTION_MESSAGE = Use of wmemcpy_s
  • BAD_FUNCTION_REGEX = ^wmemmove_s$
  • BAD_FUNCTION_MESSAGE = Use of wmemmove_s
  • BAD_FUNCTION_REGEX = ^wcscat_s$
  • BAD_FUNCTION_MESSAGE = Use of wcscat_s
  • BAD_FUNCTION_REGEX = ^wcsncat_s$
  • BAD_FUNCTION_MESSAGE = Use of wcsncat_s
  • BAD_FUNCTION_REGEX = ^wcstok_s$
  • BAD_FUNCTION_MESSAGE = Use of wcstok_s
  • BAD_FUNCTION_REGEX = ^wcsnlen_s$
  • BAD_FUNCTION_MESSAGE = Use of wcsnlen_s
  • BAD_FUNCTION_REGEX = ^wcrtomb_s$
  • BAD_FUNCTION_MESSAGE = Use of wcrtomb_s
  • BAD_FUNCTION_REGEX = ^mbsrtowcs_s$
  • BAD_FUNCTION_MESSAGE = Use of mbsrtowcs_s
  • BAD_FUNCTION_REGEX = ^wcsrtombs_s$
  • BAD_FUNCTION_MESSAGE = Use of wcsrtombs_s
  • BAD_FUNCTION_REGEX = ^asctime_s$
  • BAD_FUNCTION_MESSAGE = Use of asctime_s
  • BAD_FUNCTION_REGEX = ^ctime_s$
  • BAD_FUNCTION_MESSAGE = Use of ctime_s
  • BAD_FUNCTION_REGEX = ^gmtime_s$
  • BAD_FUNCTION_MESSAGE = Use of gmtime_s
  • BAD_FUNCTION_REGEX = ^localtime_s$
  • BAD_FUNCTION_MESSAGE = Use of localtime_s
Tags
  • Designates Specially-Treated Functions

Specifies filenames of C++, Python, and C plug-ins to load.

Type string
Behavior The specified files will be loaded as plug-ins.

CodeSonar will instantiate variable $GTHOME with the path to the CodeSonar installation.

Notes For example:
  PLUGINS += /tmp/pname.py
  PLUGINS += /tmp/pname.so
  PLUGINS += /tmp/pname.dll
  PLUGINS += /tmp/pname.bundle
  PLUGINS += $GTHOME/projectXplugins/pname.so
  PLUGINS += c:\Documents and Settings\Bob\Desktop\pname.dll

For more information about CodeSonar plug-ins, see CodeSonar Plug-In API.

Distributed analysis slaves will use the PLUGINS setting from the analysis master (not the one from the slave's associated launch daemon).

For plug-ins using other languages:

CodeSonar SaaS Note: If you are using CodeSonar SaaS, PLUGINS can only be used to load plug-ins that were shipped with CodeSonar in directory $GTHOME/plugins. To install other plug-ins, including any custom plug-ins you have created, contact CodeSecure support for assistance.

Tags
  • Governs the Build/Analysis

Specifies the JVM DLL or shared object to use for all Java plug-ins.

Type string
Behavior The specified string will be treated as the absolute path to the Java DLL or shared object.

CodeSonar will instantiate variable $GTHOME with the path to the CodeSonar installation.

Notes The Java API for CodeSonar currently has beta-level support. For more information, see the notes on API Languages.

For example:

  JAVA_PLUGIN_JVM = C:\Program Files\Java\jre6\bin\server\jvm.dll
  JAVA_PLUGIN_JVM = /usr/lib/jvm/java-6-openjdk-amd64/jre/lib/amd64/server/libjvm.so
  JAVA_PLUGIN_JVM = /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/server/libjvm.dylib

In some situations on Mac OS, Java may falsely complain that it isn't installed (JDK-7131356). One workaround is to use libjli.dylib instead of libjvm.dylib:

  JAVA_PLUGIN_JVM = /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/jli/libjli.dylib
Tags
  • Governs the Build/Analysis

Specifies the Java classpath for all Java plug-ins.

Type string
Behavior Multiple directories can be placed in the classpath by using the += operator.

CodeSonar will instantiate variable $GTHOME with the path to the CodeSonar installation.

Notes The Java API for CodeSonar currently has beta-level support. For more information, see the notes on API Languages.

For example:

  JAVA_PLUGIN_CLASSPATH += c:\pluginclasspath
Tags
  • Governs the Build/Analysis

Specifies additional flags passed to the JVM.

Type string
Behavior Multiple flags can be specified by using the += operator. Place one flag on each line.

The flags are forwarded to JNI_CreateJavaVM in the options field of the JavaVMInitArgs parameter.

Notes The Java API for CodeSonar currently has beta-level support. For more information, see the notes on API Languages.

For example:

  JAVA_PLUGIN_JVM_FLAGS += -Xmx2g
  JAVA_PLUGIN_JVM_FLAGS += -Djava.compiler=NONE
  JAVA_PLUGIN_JVM_FLAGS += -Djava.library.path=c:\mylibs
  JAVA_PLUGIN_JVM_FLAGS += -verbose:jni
Tags
  • Governs the Build/Analysis

Specifies a Java plug-in by naming the Java class whose main() method should be invoked.

Type string, representing a fully-qualified class name: use / as the package separator if the class is in a package.
Behavior The specified string will be used as the name argument to the JNI FindClass() function; the main() function of the identified class will be invoked as a CodeSonar plug-in.
Notes The Java API for CodeSonar currently has beta-level support. For more information, see the notes on API Languages.

Below is a small sample plug-in.

  import com.codesecure.cs.*;
  import java.lang.*;

  class echo_point_visitor extends point_visitor{
      public echo_point_visitor() throws result{}

      public void visit(point p)
      {
          System.out.println("Java visits " + p);
      }
  };

  public class Test{
      public static void main() {
          try{
              analysis.add_point_visitor(new echo_point_visitor());
          }catch(result r){
              System.out.println(r);
          }
      }
  }

Then to include this plug-in, make sure the path to the class file/package is specified with JAVA_PLUGIN_CLASSPATH, then use JAVA_PLUGIN_CLASSES to specify the class name:

 JAVA_PLUGIN_CLASSES += Test

or, if it is in a package:

 JAVA_PLUGIN_CLASSES += com/example/csplugin/Test

CodeSonar SaaS Note: If you are using CodeSonar SaaS, JAVA_PLUGIN_CLASSES can only be used to load plug-ins that were shipped with CodeSonar in directory $GTHOME/plugins. To install other plug-ins, including any custom plug-ins you have created, contact CodeSecure support for assistance.

Tags
  • Governs the Build/Analysis

The version of the .NET framework used to build the assemblies specified by CSHARP_PLUGINS (if any).

Type string
Behavior This string is passed to the Microsoft function CorBindToRuntimeEx as the first argument. It must be exactly correct, or the assembly will not load. This value can be obtained by running csc /? and inspecting the first line of output.
Notes The C# API for CodeSonar currently has beta-level support. For more information, see the notes on API Languages.
Tags
  • Governs the Build/Analysis

A list of plug-in .NET assemblies.

Type string
Behavior The += operator can be used to load multiple plug-ins. Each assembly should contain all the .cs files in codesonar\src\api\csharp\*.cs.

Each assembly must contain a class named Main with a public static method named main, with signature:

  public static int main(String dummy)

CodeSonar will instantiate variable $GTHOME with the path to the CodeSonar installation.

Notes The C# API for CodeSonar currently has beta-level support. For more information, see the notes on API Languages.

Below is a small sample plug-in.

  using System;

  class echo_point_visitor: point_visitor{
      public echo_point_visitor(){}

      public override void visit(point p)
      {
          /* Always wrap visitors in exception handlers.  If an
           * exception isn't caught, behavior is undefined.
           */
          try{
              Console.WriteLine("csharp visits " + p);
          }
          catch( Exception e )
          {
              Console.WriteLine(e);
          }
      }
  };

  public class Main
  {
     public static int main(String dummy)
     {
          /* Always wrap everything in an exception handler.  If an
           * exception isn't caught, behavior is undefined.
           */
          try{
              analysis.add_point_visitor(new echo_point_visitor());
          }
          catch( Exception e )
          {
              Console.WriteLine(e);
          }
          return 0; // ignored
     }
  }

CodeSonar SaaS Note: If you are using CodeSonar SaaS, CSHARP_PLUGINS can only be used to load plug-ins that were shipped with CodeSonar in directory $GTHOME/plugins. To install other plug-ins, including any custom plug-ins you have created, contact CodeSecure support for assistance.

Tags
  • Governs the Build/Analysis

Specifies whether or not implied unsafe behavior due to equality/disequality is sufficient cause to issue warnings.

Type { Yes, No }
Behavior
  • No : warnings will not be produced just because conditionals along a path imply unsafe behavior due to equality (==) or disequality (!=); satisfying assignments to the variables must also exist.
Notes Setting this to "No" will decrease the false positive rate and increase the false negative rate.

If set to "No", then the following would be suppressed (assuming CodeSonar does not find a place where p is assigned NULL):

     if( p == NULL )
        *p = 42;

but this would not:

     p = NULL;
     if( p == NULL )
        *p = 42;

It may be difficult to find vulnerabilities in functions that are never called when this is set to "No", since the values of the procedure inputs are never assigned.

The factory setting is Yes because most programmers will not test for equality unless they believe it can happen.

The warning classes affected by this parameter are the same as those for TIME_LIMIT_INTRA_CLASSIFY.

Factory Setting
  • REPORT_IMPLIED_EQUALITY = Yes
Tags
  • Fine Tuning for Warnings

Specifies whether or not implied unsafe behavior due to inequality is sufficient cause to issue warnings.

Type { Yes, No }
Behavior
  • No : warnings will not be produced just because conditionals along a path imply unsafe behavior due to inequality (<, <=, >, >=); satisfying assignments to the variables must also exist.
Notes Setting this to "No" will decrease the false positive rate and increase the false negative rate.

If set to "No", then the following would be suppressed (assuming CodeSonar does not find a place where i is assigned a negative value):

     int A[10];
     if( i < 0 )
        A[i] = 42;

but this would not:

     int A[10];
     i = -1;
     if( i < 0 )
        A[i] = 42;

It may be difficult to find vulnerabilities in functions that are never called when this is set to "No", since the values of the procedure inputs are never assigned.

The factory setting is No because loops often have conditions that are always satisfied on the first iteration.

The warning classes affected by this parameter are the same as those for TIME_LIMIT_INTRA_CLASSIFY.

Factory Setting
  • REPORT_IMPLIED_INEQUALITY = No
Tags
  • Fine Tuning for Warnings

Seconds of inactivity before the analysis daemon shuts down to conserve system resources.

Type non-negative integer
Behavior When the web application needs certain information (such as source file listings), it queries the analysis daemon. If the analysis daemon is not running, then the web application will attempt to start it. This can take a minute or more, so timing out quickly is often undesirable.
Notes A low value can result in slow web queries if the time between applicable queries exceeds this value. A high value can result in an extra process hanging around doing nothing on the analysis machine. The factory setting is 30 minutes ( = 1800 seconds).

The analysis log will not be finalized, and so the Analysis Log contents may continue to change, until the analysis daemon times out (or is properly shut down).

Factory Setting
  • DAEMON_TIMEOUT = 1800
Tags
  • Analysis Time Limits

Seconds of inactivity when running in foreground mode before the analysis daemon shuts down to conserve system resources.

Type non-negative integer
Behavior When the web application needs certain information (such as source file listings), it queries the analysis daemon. If the analysis daemon is not running, then the web application will attempt to start it. This can take a minute or more, so timing out quickly is often undesirable.
Notes Applicable when running with FOREGROUND=Yes (or -foreground on the command line).

A low value can result in slow web queries if the time between applicable queries exceeds this value. A high value can result in an extra process hanging around doing nothing on the analysis machine.

The analysis log will not be finalized, and so the Analysis Log page contents may continue to change, until the analysis daemon times out (or is properly shut down).

Factory Setting
  • FOREGROUND_DAEMON_TIMEOUT = 5
Tags
  • Analysis Time Limits

If errors were encountered in parsing the code, specifies whether or not the analysis will run anyway

Type { Yes, No }
Behavior
  • No : the analysis will refuse to run on a project that contains parse errors. Analyzing code that contains parse errors produces suboptimal results. Depending on the nature of the parse errors, the impact could be tiny or enormous.
Notes A log of parse errors and compiler command lines can be found at <prjname>.prj_files/log.txt.
Factory Setting
  • TOLERATE_PARSE_ERRORS = Yes
Tags
  • Governs the Build/Analysis

Determines what qualifies as a Null Pointer Dereference

Type integer
Behavior For NULL_POINTER_THRESHOLD = N for some integer N, dereferences of any addresses within N bytes of 0 will be reported as Null Pointer Dereference warnings. 'Within N bytes' includes the following.
  • Positive distance: any address in the range [0,N)
  • Negative distance: any address in the range (-N,0] (this is not likely to occur deliberately, but can be the result of integer overflow)
  • Wraparound distance: any address that is within N bytes of wrapping around to 0.
Notes Non-zero values must be treated as Null Pointer Dereferences in order to catch things such as:
    int *p = &s->f; /* this is ok, even if s is null */
    *p = 42;        /* this is where the program will
                     * crash if s was null, because an
                     * address such as '4' is being dereferenced
                     * (assuming f is 4 bytes into s). */
Factory Setting
  • NULL_POINTER_THRESHOLD = 4096
Tags

Determines whether warnings will be reported in templated functions when the warning class is one of those that requires some condition to hold on all paths.

Type { Yes, No }
Behavior If set to "Yes", then warnings of classes requiring universal quantification over paths will be reported in C++ templated functions. The affected warning classes are:
Notes Setting this to "Yes" will increase the false positive rate and decrease the false negative rate for warning classes requiring universal quantification over paths.

These warnings are often not very useful. For example, if( sizeof(T)==sizeof(int) ) is likely to cause some unreachable code in some template instantations, but this isn't interesting to most users. However, useful warnings in these functions will also be lost.

Factory Setting
  • REPORT_TEMPLATE_UQ_WARNINGS = No
Tags

Determines whether exhaustive interprocedural exploration is required before reporting warnings in classes for which something must hold on all paths.

Type { Yes, No }
Behavior If set to "Yes", then warnings of classes requiring universal quantification over paths will be reported on statements preceded by calls to functions that have not been exhaustively explored. The default behavior is to suppress such warnings. The affected warning classes are:
Notes Setting this to "Yes" will increase the false positive rate and decrease the false negative rate for warning classes requiring universal quantification over paths.
Factory Setting
  • REPORT_INTER_PARTIAL_UQ_WARNINGS = No
Tags

Determines whether exhaustive exploration is required before issuing a Null Test After Dereference warning.

Type { Yes, No }
Behavior If set to "Yes", then Null Test After Dereference warnings will be issued even if all paths leading to the test have not been explored. Null Test After Dereference are only an anomaly if all paths leading to the test have dereferenced the pointer.
Notes Setting this to "Yes" will increase the false positive rate and decrease the false negative rate for Null Test After Dereference warnings.

In practice, setting this to "Yes" usually reveals more true positives than false positives.

Factory Setting
  • REPORT_PARTIAL_NTAD_WARNINGS = Yes
Tags

Determines whether calls to undefined functions and function pointer calls are considered exhaustively explored.

Type { Yes, No }
Behavior If set to "Yes", then warnings of classes requiring universal quantification over paths can be reported on statements preceded by calls to undefined functions or function pointer calls. The default behavior is to report such warnings. The affected warning classes are:
Notes Setting this to "Yes" will increase the false positive rate and decrease the false negative rate for warning classes requiring universal quantification over paths. Using the setting "No" is most useful if undefined functions and functions called using function pointers are modifying globals that are then tested by the calling function.
Factory Setting
  • UNDEF_FUNCS_EXHAUSTIVE = Yes
Tags

Seconds the analysis may spend doing intraprocedural exploration in a single procedure.

Type integer
Behavior If this time limit expires, summaries for the procedure are rolled back and the analysis will treat call sites to the procedure as if the procedure is not defined in the project.
Notes This specifies elapsed time.

This parameter affects checks for most warning classes. The classes NOT affected are:

Factory Setting
  • TIME_LIMIT_INTRA_EXPLORE = 25
Tags
  • Analysis Time Limits

Seconds the analysis may spend determining whether potential intraprocedural vulnerabilities warrant further examination, per procedure.

Type integer
Behavior Potential vulnerabilities nearer to the beginning of procedures receive preferential treatment. Once the time limit expires, potential intraprocedural vulnerabilities starting in the current procedure are ignored until the analysis moves on to the next procedure.
Notes This specifies elapsed time. The default limit is likely to be exceeded in large procedures.

This parameter affects checks for most warning classes. The classes NOT affected are:

Factory Setting
  • TIME_LIMIT_INTRA_CLASSIFY = 8
Tags
  • Analysis Time Limits

Seconds the analysis may spend determining whether potential interprocedural vulnerabilities warrant further examination, per procedure.

Type integer
Behavior Potential vulnerabilities nearer to the beginning of procedures receive preferential treatment. Once the time limit expires, potential interprocedural vulnerabilities starting in the current procedure are ignored until the analysis moves on to the next procedure.
Notes This specifies elapsed time. The default limit is likely to be exceeded in large procedures.

The warning classes affected by this parameter are the same as those for TIME_LIMIT_INTRA_CLASSIFY.

Factory Setting
  • TIME_LIMIT_INTER_CLASSIFY = 8
Tags
  • Analysis Time Limits

Seconds the analysis may spend resolving potential intra- and interprocedural vulnerabilities, per procedure.

Type integer
Behavior Once likely vulnerabilities have been identified, an intermediate refinement step takes place. This preference limits the amount of time spent on the refinement step.
Notes This specifies elapsed time. The factory setting limit is extremely unlikely to be exceeded and exists to guard against pathological behavior.

The warning classes affected by this parameter are the same as those for TIME_LIMIT_INTRA_CLASSIFY.

Factory Setting
  • TIME_LIMIT_RESOLVE = 16
Tags
  • Analysis Time Limits

Seconds the analysis may spend refining potential intra- and interprocedural vulnerabilities, per procedure.

Type integer
Behavior Once likely vulnerabilities have been identified in the classification phase, the analysis applies a refinement step both to eliminate false positives and to enhance the information contained in the warning reports. If this limit expires, then yet-to-be-refined likely vulnerabilities will be dropped.
Notes This specifies elapsed time.

The warning classes affected by this parameter are the same as those for TIME_LIMIT_INTRA_CLASSIFY.

Factory Setting
  • TIME_LIMIT_REFINE = 16
Tags
  • Analysis Time Limits

Seconds the analysis may spend rendering intra- and interprocedural vulnerabilities, per procedure.

Type integer
Behavior Once a warning is identified, the analysis renders a warning report for presentation to the user. If the rendering phase takes longer than the limit specified here, the warning is discarded.

Factors that can make rendering take a long time include extremely long lines of source code, deeply nested call stacks, and heavy use of the preprocessor.

Notes The factory setting limit is rarely exceeded and exists to guard against pathological constructs.

All warning classes can be affected by this limit.

Factory Setting
  • TIME_LIMIT_RENDER = 60

Seconds the analysis may spend determining whether potential Leak cases warrant further examination, per procedure.

Type integer
Behavior Potential leaks nearer to the beginning of procedures receive preferential treatment.
Notes This specifies elapsed time. The factory setting limit is not likely to be exceeded when the factory setting for SEARCH_BOUND is used.
Factory Setting
  • TIME_LIMIT_LEAK_CLASSIFY = 20
Tags
  • Analysis Time Limits
  • Used by Leak

Seconds the analysis may spend refining potential Leak cases, per procedure.

Type integer
Behavior Once likely leaks have been identified in the classification phase, the analysis applies a refinement step both to eliminate false positives and to enhance the information contained in the warning reports. If this limit expires, then yet-to-be-refined leaks will be dropped.
Notes This specifies elapsed time.
Factory Setting
  • TIME_LIMIT_LEAK_REFINE = 60
Tags
  • Analysis Time Limits
  • Used by Leak

Seconds the analysis may spend determining which parts of a procedure have been exhaustively explored.

Type integer
Behavior Some checks (such as those for Unreachable Code: 5 warning classes) can only be reported with respect to portions of procedures that have been exhaustively explored. Making this determination can sometimes be extremely expensive (typically in generated code).
Notes This specifies elapsed time. The factory setting limit is not likely to be exceeded: it exists to guard against pathological behavior.

The warning classes affected by this parameter are the same as those for TIME_LIMIT_INTRA_CLASSIFY.

Factory Setting
  • TIME_LIMIT_PROP_EXHAUSTIVE = 60
Tags
  • Analysis Time Limits

Bounds the time that data race analysis can spend in any subunit of work (threadA, threadB, memory_location).

Type integer
Behavior When set to integer N, specifies that a subunit of work (threadA, threadB, memory_location) in data race analysis will be terminated if it takes longer than N seconds. This can result in Data Race false negatives for the corresponding thread pair and memory location.

Units of work are also subject to time limits based on the overall time budget allocated for data race search. Full details are provided in the documentation for DATA_RACE_BARRIER_PERIOD.

Notes A subunit of work in the data race analysis is represented as a triple (threadA, threadB, memory_loc): "search for data races between threadA and threadB with respect to memory_loc, issuing warnings as appropriate".
Factory Setting
  • TIME_LIMIT_DATA_RACE_PATH_SEARCH = 600
Tags

Used to compute overall time budget for data race refinement.

Type integer
Behavior When set to integer N, specifies that the total time budget for data race search is num_procedures * N milliseconds, where num_procedures is the number of procedures in the analyzed project.

The total budget will not be exceeded. Full details of the data race budget mechanism are provided in the documentation for DATA_RACE_BARRIER_PERIOD.

Notes The factory setting (100) would allow the entire data race phase to run for almost 30 hours on a program with a million procedures (very large program).
Factory Setting
  • TIME_LIMIT_DATA_RACE_PATH_SEARCH_PER_PROCEDURE = 100
Tags

Bounds the time that taint analysis can spend refining taint warnings in a procedure.

Type integer
Behavior When set to integer N, specifies that taint refinement in a procedure will be terminated if it takes more than N seconds. This can result in taint warning false negatives for that procedure.

Units of work are also subject to time limits based on the overall time budget for taint refinement. Full details of the taint refinement budget mechanism are provided in the documentation for REFINEMENT_BARRIER_PERIOD.

Notes Once likely taint warnings have been identified in a procedure (at the start of the path), a search phase takes place to determine which of those taint warnings are valid. TIME_LIMIT_TAINT_REFINE specifies how many seconds, per procedure, this search may take.

The warning classes affected by this parameter are:

Factory Setting
  • TIME_LIMIT_TAINT_REFINE = 60
Tags
  • Analysis Time Limits

Used to compute overall time budget for taint refinement.

Type integer
Behavior When set to integer N, specifies that the total time budget for taint refinement is num_procedures * N milliseconds, where num_procedures is the number of procedures in the analyzed project.

The total budget will not be exceeded. Full details of the taint refinement budget mechanism are provided in the documentation for REFINEMENT_BARRIER_PERIOD.

Notes This specifies time per procedure in milliseconds. The factory setting (200) would allow the taint refinement phase to run for 55 hours on a program with a million procedures (very large program).
Factory Setting
  • TIME_LIMIT_TAINT_REFINE_PER_PROCEDURE = 200
Tags
  • Analysis Time Limits

Specifes exceptions to the Uninitialized Variable checks on moved-from objects (when enabled). In particular, specifies classes whose objects will not be treated as uninitialized after they have been moved from.

Type Boost 'POSIX Extended Regular Expression'
Behavior Suppose MOVED_FROM_UV_CHECK_ENABLED=Yes and we have some object O that has been left in moved-from state by a move constructor or move assignment.
  • If O's class matches a MOVED_FROM_UV_WHITELIST regular expression, CodeSonar will NOT issue a Uninitialized Variable warning if O is used while it is in moved-from state.
  • Otherwise, CodeSonar will issue a Uninitialized Variable warning in this case.

If MOVED_FROM_UV_CHECK_ENABLED=No, Uninitialized Variable warnings are never issued for uses of moved-from objects and this parameter has no effect.

Notes Objects passed to move constructors or move assignments are left in a moved-from state. The state of such objects is valid but unspecified: you can reestablish known state by, for example, assigning new values.

Certain implementations of classes in the standard library guarantee that state for some members is preserved after an object has been moved from, and then makes use of these members in subsequent assignments.

For example, some std::string implementations guarantee that the members that handle memory allocation are preserved when a string object S has been moved-from, and then use those members when S is reassigned. Because this preservation guarantee is not represented in the code, CodeSonar cannot take it into account and will issue a warning for valid reinitializations like the following.

 std::string a( "abcd" );
 std::string b( std::move( a ) );
 a = "efgh";     // *** constructor makes use of preserved members

When the code is using a std::string implementation that preserves and reuses moved-from, the assignment at the marked line will cause a Uninitialized Variable warning. The warning location will not be at the assignment, but at the statement that reuses the memory allocation member: generally in library code.

  • You can suppress this individual warning in the CodeSonar GUI or construct a WARNING_FILTER discard rule to discard it based on line contents or other properties.
  • To specify that Uninitialized Variable warnings should NEVER be issued for moved-from objects of class std::basic_string, you can use a MOVED_FROM_UV_WHITELIST rule:
 MOVED_FROM_UV_WHITELIST += ^std:.*:basic_string:
Factory Settings
  • MOVED_FROM_UV_WHITELIST += ^std:.*:unique_ptr:
  • MOVED_FROM_UV_WHITELIST += ^std:.*:shared_ptr:
  • MOVED_FROM_UV_WHITELIST += ^std:.*:weak_ptr:
  • MOVED_FROM_UV_WHITELIST += ^std:.*:basic_ios:
  • MOVED_FROM_UV_WHITELIST += ^std:.*:basic_filebuf:
  • MOVED_FROM_UV_WHITELIST += ^std:.*:thread:
  • MOVED_FROM_UV_WHITELIST += ^std:.*:unique_lock:
  • MOVED_FROM_UV_WHITELIST += ^std:.*:shared_lock:
  • MOVED_FROM_UV_WHITELIST += ^std:.*:promise:
  • MOVED_FROM_UV_WHITELIST += ^std:.*:future:
  • MOVED_FROM_UV_WHITELIST += ^std:.*:shared_future:
  • MOVED_FROM_UV_WHITELIST += ^std:.*:packaged_task:
Tags

Specifies whether objects left in moved-from state by a move constructor or move assignment should be considered uninitialized when performing checks for Uninitialized Variable.

Type { Yes, No }
Behavior
  • Yes : Issue Uninitialized Variable warnings when objects left in moved-from state are used before being reinitialized.
  • No : Do not issue Uninitialized Variable warnings for uses of moved-from objects.
Notes Objects passed to move constructors or move assignments are left in a moved-from state. The state of such objects is valid but unspecified: you can reestablish known state by, for example, assigning new values.

Use MOVED_FROM_UV_WHITELIST to suppress these warnings for individual object classes.

Factory Setting
  • MOVED_FROM_UV_CHECK_ENABLED = Yes
Tags

Bounds the time that analysis can spend figuring out live variables in a single procedure.

Type integer
Behavior When set to integer N, specifies that live variable analysis in a procedure will be terminated if it takes more than N seconds. This can result in incomplete taint information for the procedure.
Factory Setting
  • TIME_LIMIT_LIVEVAR = 60
Tags
  • Analysis Time Limits

Specifies the relative speed of the machine or machines running the analysis.

Type integer
Behavior When set to integer N, specifies that each analysis machine is N/100 times as fast as CodeSonar's benchmark "canonical machine" (approximately the speed of a high-end x86 CPU circa 2015).

This relative speed is used in determining the conversion between the time limits and "work limits" expressed by other configuration parameters: a faster computer will be expected to perform more work than a slower computer in the same amount of time.

Notes Time limit values for various processing steps, such as TIME_LIMIT_INTRA_EXPLORE, are expressed in units of time, such as seconds, but in order to make the application of these limits deterministic they are actually enforced in terms of "work", or progress through an algorithm. Since the rate of progress through an algorithm depends on CPU speed, the conversion is based in part on an estimate of this speed.

By default, CodeSonar will treat the analysis machine as having the same speed as CodeSonar's benchmark "canonical machine": approximately the speed of a high-end x86 CPU circa 2015.

  • If your analysis machine is significantly faster than the benchmark "canonical machine", analysis operations will time out sooner than they should. This can result in an increase in overall timeouts and therefore a somewhat less thorough analysis. This effect is deterministic.
  • If your analysis machine is significantly slower than the than the benchmark "canonical machine", analysis operations will time out later than they should, if at all. This can result in a longer analysis run time than expected. CodeSonar has a backup mechanism that will force a timeout if the actual time spent is much longer than the requested value. These "backup timeouts" may be more frequent on a slower computer. Since they are time-based, they are nondeterministic and when they occur they may introduce nondeterminism into the analysis.

If you observe either of these issues you can compensate for the difference in speed between your machine and the benchmark "canonical machine" by changing the setting of CPU_SPEED_ADJUSTMENT.

Example 1: Your analysis machine is 50% faster than CodeSonar's "canonical machine".

     CPU_SPEED_ADJUSTMENT = 150

Example 2: Your analysis machine is only half as fast as CodeSonar's "canonical machine".

     CPU_SPEED_ADJUSTMENT = 50

CPU_SPEED_ADJUSTMENT assumes that all of the machines used in a distributed analysis run at the same speed. If this is not the case you have two options.

  • If they are not too dissimilar in speed, use the value appropriate for the average of their speeds.
  • Otherwise, use the value appropriate for the slowest machine contributing to the analysis. This will minimize backup timeouts and the resulting potential for non-determinism.
Tags
  • Analysis Time Limits

Bounds the number of memory accesses that are tracked in a single procedure for detecting data races.

Type non-negative integer
Behavior If a procedure accesses more than this many shared variables, some variables will not be checked for data races. Raising this will result in a more thorough analysis, but will increase the time and memory used by the analysis.
Notes This only affects the analysis for Data Race warnings. If this is set to a very high number (for example, more than 200,000) CodeSonar may behave unpredictably or crash.
Factory Setting
  • DATA_RACE_MAX_MEM_ACCESSES = 1000
Tags

Bounds the number of sets held of locks that are tracked for any given (transitive) memory access.

Type non-negative integer
Behavior If a procedure accesses more than this many shared variables, some variables will not be checked for data races. Increasing the setting will result in a more thorough analysis, but will increase the time and memory used by the analysis.
Notes This only affects the analysis for Data Race warnings.

It is expected that few or no procedures will access more shared variables than the bound imposed by the factory setting (1000).

Factory Setting
  • DATA_RACE_MAX_LOCKSETS_PER_MEM_ACCESS = 1000
Tags

Controls a trade off between analysis performance and Data Race false negatives.

Type integer
Behavior When set to integer N, specifies that the CodeSonar data race analysis will have a concurrency barrier after every N units of work. For data race analysis, each unit of work is represented by a pair (threadA, threadB,): "search for data races between threads threadA and threadB".

At each concurrency barrier, the analysis determines the remaining time budget. It then uses this information to determine a per-unit-of-work budget for units of work in the next segment (that is, up to the next concurrency barrier).

See below for further details.

Notes Performance and false negative rates can be negatively affected if the setting is too high, but also if it is too low.
  • If the setting is too high, unused search budget allocations from earlier units of work will not be released in time to be reallocated to later units of work.
  • If the setting is too low, parallelism is limited. In particular, the setting should be higher than the number of analysis slaves, and CodeSonar will issue an alert if this is not the case.

The analysis computes a total time budget for data race search by multiplying the number of analyzed procedures by the TIME_LIMIT_DATA_RACE_PATH_SEARCH_PER_PROCEDURE setting. The set of all units of work for the search is divided into segments containing N units of work each, where N is the value of DATA_RACE_BARRIER_PERIOD, with a concurrency barrier at the end of each segment. At each concurrency barrier, the analysis determines the remaining time budget. It then uses this information to determine a per-unit-of-work budget for units of work in the next segment (that is, up to the next concurrency barrier). This per-unit-of-work budget is used along with TIME_LIMIT_DATA_RACE_PATH_SEARCH to limit the time that any unit of work in the next segment can take.

  • TIME_LIMIT_DATA_RACE_PATH_SEARCH is an upper bound on time spent in any given subunit of work (threadA, threadB, memory_loc).
  • The computed per-unit-of-work budget is generally lower than the value of TIME_LIMIT_DATA_RACE_PATH_SEARCH, and represents an additional bound that is checked at the end of each subunit of work (threadA, threadB, memory_loc). This means that if the per-unit-of-work budget is exhausted during a particular subunit, the subunit (and unit) will not be terminated until the path exploration finishes (unless the TIME_LIMIT_DATA_RACE_PATH_SEARCH bound is also reached during the same subunit).

If overall budget consumption has been worse than linear, the analysis may also determine that some units of work in the next segment must be skipped in order to maintain a reasonable overall budget consumption rate.

The magnitude of each unit of work depends on the settings of parameters DATA_RACE_PATH_FINDING_EFFORT, DATA_RACE_MAX_MEM_ACCESSES, DATA_RACE_MAX_LOCKSETS_PER_MEM_ACCESS, and DATA_RACE_MAX_RELATED_PATHS.

The number of units of work depends on the settings of parameters DATA_RACE_IGNORE_NAMES and MULTIPLE_THREADS_PER_ENTRY_PROCEDURE.

Factory Setting
  • DATA_RACE_BARRIER_PERIOD = 100
Tags
  • Used by Data Race
  • Analysis resource/effort limit

Controls a trade off between analysis performance and false negatives for taint-related warnings.

Type integer
Behavior When set to integer N, specifies that the CodeSonar taint refinement will have a concurrency barrier after every N units of work. For taint refinement, a unit of work comprises the set of warning refinement tasks for a procedure P.

At each concurrency barrier, the analysis determines the remaining time budget. It then uses this information to determine a per-unit-of-work budget for units of work in the next segment (that is, up to the next concurrency barrier).

See below for further details.

Notes Performance and false negative rates can be negatively affected if the setting is too high, but also if it is too low.
  • If the setting is too high, unused search budget allocations from earlier units of work will not be released in time to be reallocated to later units of work.
  • If the setting is too low, parallelism is limited. In particular, the setting should be higher than the number of analysis slaves, and CodeSonar will issue an alert if this is not the case.

The analysis computes a total time budget for taint refinement by multiplying the number of analyzed procedures by the TIME_LIMIT_TAINT_REFINE_PER_PROCEDURE setting. The set of all units of work for the search is divided into segments containing N units of work each, where N is the value of REFINEMENT_BARRIER_PERIOD, with a concurrency barrier at the end of each segment. At each concurrency barrier, the analysis determines the remaining time budget. It then uses this information to determine a per-unit-of-work budget for units of work in the next segment (that is, up to the next concurrency barrier). This per-unit-of-work budget is used along with TIME_LIMIT_TAINT_REFINE to limit the time that any unit of work in the next segment can take.

  • TIME_LIMIT_TAINT_REFINE is an upper bound on time spent in any given unit of work.
  • The computed per-unit-of-work budget is generally lower than the value of TIME_LIMIT_TAINT_REFINE, and represents an additional bound that is checked less frequently during the unit of work. This means that if the per-unit-of-work budget is exhausted during a unit of work, the unit will not be terminated until one of these checkpoints is reached (unless the TIME_LIMIT_TAINT_REFINE bound is also exceeded).

If overall budget consumption has been worse than linear, the analysis may also determine that some units of work in the next segment must be skipped in order to maintain a reasonable overall budget consumption rate.

Factory Setting
  • REFINEMENT_BARRIER_PERIOD = 10000

Specifies whether or not function summaries will be rolled back if TIME_LIMIT_INTRA_EXPLORE expires.

Type { Yes, No }
Behavior If set to "Yes", summaries for a function will be rolled back if TIME_LIMIT_INTRA_EXPLORE expires. If this happens, call sites to the function will be treated like any other undefined function.
Notes Setting this to "No" can cause false positives and false negatives. Setting this to "Yes" can cause (a different set of) false positives and false negatives.
Factory Setting
  • ROLLBACK_SUMMARIES_ON_ABORT = Yes
Tags
  • Analysis Properties

Number of paths under simultaneous consideration when exploring a procedure.

Type integer
Behavior When the number is larger, more paths are searched, but more time is used.
Notes This preference represents a trade-off between time and thoroughness. If this preference is raised, then TIME_LIMIT_INTRA_EXPLORE should usually also be raised.
Factory Setting
  • SEARCH_BOUND = 100
Tags
  • Analysis resource/effort limit

Control the "noisiness" of the path search.

Type Real number between 0 and 1 (including 1)
Behavior When adding a path to the set of paths under consideration, noise is introduced to ensure diversity of coverage. If the size of the set is less than this threshold fraction of the maximum, then the path is always added. From the threshold up to the maximum, the probability that it is added drops linearly to zero.
Notes The maximum size is determined by the applicable search bound, from SEARCH_BOUND, TAINT_SEARCH_BOUND, BINARY_SEARCH_BOUND (CSO/Binaries only), or BINARY_TAINT_SEARCH_BOUND (CSO/Binaries only), adjusted so that the average behavior is approximately the same across the threshold values.

When SEARCH_BOUND_NOISE_THRESHOLD is 1, noise is eliminated, and paths are added as long as the size of the set is not the maximum.

The noise is deterministic, so that it doesn't affect the results between multiple analyses with the samd theshold.

Factory Setting
  • SEARCH_BOUND_NOISE_THRESHOLD = 1.00
Tags
  • Analysis Properties

Specifies whether or not the analysis should consider an extended set of loop execution scenarios.

Type { Yes, No }
Behavior
  • No : The analysis will consider a standard set of loop repetition scenarios for each loop.
  • Yes : The analysis will consider several additional loop repetition scenarios along with the standard set.
Notes Code may contain one or more defects that only manifest in one of the additional Yes scenarios, so analyzing with EXPLORE_MORE_LOOP_PATHS=Yes can reveal more true positives than analyzing with EXPLORE_MORE_LOOP_PATHS=No.

Note, however, that path exploration is subject to various limits (including PATH_FINDING_EFFORT and SEARCH_BOUND), so setting this parameter to Yes does not guarantee that all the considered scenarios will ultimately be analyzed.

Factory Setting
  • EXPLORE_MORE_LOOP_PATHS = No
Tags
  • Analysis resource/effort limit

Specifies whether or not the analysis should explore the possibility of self assignment.

Type { Yes, No }
Behavior
  • Yes : The analysis will explicitly consider the self-assignment case for all assignment operations.
  • No : The analysis will only consider the self-assignment case for an assignment operation if there is a specific reason to do so. For example, it will consider the self-assignment case if the assignment operator explicitly compares the left- and right-hand sides.
Notes Set to Yes to check for violations of CERT CERT-CPP:OOP54-CPP "Gracefully handle self-copy assignment". This can reduce false negatives for issues caused by self assignment, at the cost of increased resource usage (time and space).

For example, suppose a class with a dynamically allocated member has an assignment operator which unconditionally deletes the member. This will cause undefined behavior when the operator is used for self-assignment.

 C& C::operator=(const C& rhs){
   delete this->stuff;
   this->stuff = new int(*rhs.stuff); // rhs.stuff already freed if &rhs==this
   return *this;
 }
  • If EXPLORE_SELF_ASSIGNMENT=Yes, a Use After Free warning is issued at the marked line.
  • If EXPLORE_SELF_ASSIGNMENT=No, this warning is not issued.

Setting EXPLORE_SELF_ASSIGNMENT=Yes can reduce false negatives for issues caused by self assignment, at the cost of increased resource usage (time and space).

Factory Setting
  • EXPLORE_SELF_ASSIGNMENT = Yes
Tags
  • Analysis Properties

Specifies whether or not the analysis should transfer taint to loop variables when they are compared to tainted values.

Type { Yes, No }
Behavior
  • Yes : The analysis will transfer taint to loop variables when they are compared to tainted values (in particular, when they are compared to tainted loop bounds). If the loop variable subsequently reaches a taint sink, a warning will be issued.
  • No : The analysis will not transfer taint to loop variables at such comparisons. Taint transfer to loop variables may still occur by other means, such as assignment to the variable.
Notes A "loop variable" is defined here as a variable that is incremented or decremented by a fixed amount over each loop iteration.

Example: When LOOP_TAINT_TRANSFER=Yes, the analysis will produce a Tainted Buffer Access warning at the marked location in the following code.

 int f(void) {
   char buf[1024];
   size_t n = fread( buf, 1, 1024, stdin );    // n has file taint
   int i;
   int x = 0;
   for( i = 0; i <= n; ++i )   // i is tainted by comparison with n
     x += buf[i];              // Tainted Buffer Access
 }
Factory Setting
  • LOOP_TAINT_TRANSFER = Yes
Tags
  • Analysis Properties

Specifies how suspicious CodeSonar should be about the value of loop counters in loops whose exact iteration counts are not known.

Type { 0, 1, 2, 3, 4, 5 }
Behavior
  • 0 : Never treat loop counters as adversarial
  • 1 : Treat as adversarial: loop counters in infinite loops.
  • 2 : Treat as adversarial: everything from 1, plus loop counters in loops reading input.
  • 3 : Treat as adversarial: everything from 2, plus loop counters in loops whose iteration counts can, but may not, reach some constant bound.
  • 4 : Treat as adversarial: everything from 3, plus loop counters in loops whose iteration counts can, but may not, reach some symbolic bound.
  • 5 : Treat all loop counters as adversarial.
Notes The following overruns can only be detected with sufficient values of this setting.

Requires LOOP_COUNTER_DISTRUST=1 or higher:

   void x1(){
       int i = 0; int A[10];
       for(;;){ i++; A[i] = 10; }
   }

Requires LOOP_COUNTER_DISTRUST=2 or higher:

   void x2(){
       int i = 0;
       int A[10];
       while(getchar() != 'c'){ i++; A[i] = 10; }
   }

Requires LOOP_COUNTER_DISTRUST=3 or higher:

   void x3(){
       int i = 0;
       int A[10];
       for(i = 0; i < 20; i++ ){ if( inscrutible_condition() ) break; A[i] = 10; }
   }

Requires LOOP_COUNTER_DISTRUST=4 or higher:

   void x4(){
       int i = 0; int A[10]; int j = inscrutible_number();
       for(i = 0; i < j; i++ ){ if( inscrutible_condition() ) break; A[i] = 10; }
   }

Requires LOOP_COUNTER_DISTRUST=5:

   void x5(){
       int i = 0; int A[10];
       for(i = 0; inscrutible_condition(); i++ ){ A[i] = 10; }
   }
Factory Setting
  • LOOP_COUNTER_DISTRUST = 2
Tags
  • Analysis resource/effort limit

Once a set of paths believed to contain at least one vulnerability is obtained, this many paths from the set will be searched before moving on.

Type integer
Behavior A negative setting indicates that there is no limit. Too low a (positive) setting can cause false negatives, but might save some time in pathological cases.
Notes If this preference is raised, then TIME_LIMIT_RESOLVE should usually also be raised.
Factory Setting
  • PATH_FINDING_EFFORT = 500
Tags
  • Analysis resource/effort limit

Once a set of paths believed to contain at least one vulnerability is obtained, and we have found a particular dangerous path within the set, this many total paths will be searched in an effort to find additional similar warnings within the set, or shorter versions of the same warning. Similar, in this context, is defined as a warning that violates the same (interprocedural) contract.

Type integer
Behavior A negative setting indicates that there is no limit. Too low a (positive) setting can cause false negatives, but might save some time. Setting this to 0 will prevent some warnings with similar causes to other warnings from being flagged.
Notes If this preference is raised, then TIME_LIMIT_RESOLVE should usually also be raised.
Factory Setting
  • PATH_SHORTENING_EFFORT = 30
Tags
  • Analysis resource/effort limit

Specifies whether or not the analysis should report all members of each warning group detected (as opposed to a single representative instance per group).

Type { Yes, No }
Behavior
Factory Setting
  • REPORT_SIMILAR_WARNINGS = Yes
Tags
  • Fine Tuning for Warnings

Bounds the number of similar warnings that CodeSonar will report. Only successfully refined warnings count against this limit.

Type integer
Notes "Similar paths" are paths with the same start and end points. For example, suppose you had the following code.
  int *p = 0;
  if( x )
      x = 1;
  else
      x = 2;
  *p = 42;

To see Null Pointer Dereference paths through both branches of the conditional statement, set MAX_SIMILAR_PATHS to 2 (or higher).

Most users will never need a setting higher than 1

This parameter does not significantly affect performance.

Factory Setting
  • MAX_SIMILAR_PATHS = 1
Tags
  • Analysis resource/effort limit

Bounds the number of potentially similar warnings that CodeSonar will attempt to refine. Both successfully refined warnings and dismissed warnings count against this limit.

Type integer
Notes MAX_SIMILAR_PATHS is similar to this except that it bounds the number of reported warnings. MAX_ATTEMPTED_SIMILAR_PATHS should always be at least as large as MAX_SIMILAR_PATHS.
Factory Setting
  • MAX_ATTEMPTED_SIMILAR_PATHS = 4
Tags
  • Analysis resource/effort limit

Specifies how many inputs to a procedure can be checked at call sites.

Type integer
Behavior A negative value indicates no limit. Lower (positive) values will conserve disk space and time, but can cause false negatives.
Notes This bound may be useful for projects containing millions of lines of code.

Checks for code nearer to the beginning of procedures receive preferential treatment.

Both implicit and explicit inputs are counted. For example, both the pointer passed to strlen() and the value pointed to by that pointer are counted as inputs to strlen(). Global variables transitively used by a procedure also qualify.

For the taint analysis, the number of checked inputs is bounded instead by TAINT_MAX_CHECKED_INPUTS_PER_PROCEDURE.

Factory Setting
  • MAX_CHECKED_INPUTS_PER_PROCEDURE = 100
Tags
  • Analysis resource/effort limit

Controls the maximum number of interprocedural checks that will be stored per input per procedure. When analyzing call sites to procedures, the tool examines whether these checks are satisfied in order to flag interprocedural vulnerabilities.

Type integer
Behavior A larger number means that more checks will be stored, with a corresponding increase in disk and time usage. A smaller number will save on space and time, at the cost of potentially overlooking some positive results.
Notes In some (rare) cases, a larger bound will enable more simplification to occur, improving performance and reducing false negatives.
Factory Setting
  • MAX_CHECKS_PER_INPUT = 10
Tags
  • Analysis resource/effort limit

Specifies how many levels up the call graph interprocedural checks on global variables can be propagated.

Type integer
Behavior A negative value indicates no limit (this is usually best for small to medium sized projects).

Larger values will cause CodeSonar to perform a more thorough check at the expense of system resources.

Notes Most interprocedural warnings tend to be caused by bad parameter values, not bad values in global variables. Many users will find that setting this to 0 will have little or no effect on their results and a appreciable effect on analysis performance. A value of 2 is recommended for users who want to check for bad values in global variables crossing procedure boundaries.
Factory Setting
  • MAX_GLOBAL_CHECK_AGE = 0
Tags
  • Analysis resource/effort limit

Specifies an upper bound on the number of targets that a function pointer or virtual call site may resolve to in order for interprocedural checking to be performed through that call.

Type integer
Behavior
  • N (for N>-1) : If a function pointer or virtual call site resolves to more than N targets, interprocedural checking will not be performed for paths starting before the call and ending (transitively) inside the call.
  • -1 : No such limit is imposed.
Notes Some targets of function pointer calls might only be viable in some calling contexts or under some circumstances that CodeSonar is unaware of. A low value (such as 1) can reduce false positives due to overapproximations while increasing false negatives. A setting of 1 can be particularly attractive because it is unlikely to be an overapproximation. Small settings can increase performance.
Factory Setting
  • MAX_CHECKED_FUNCTION_POINTER_RESOLVENTS = 8
Tags
  • Analysis resource/effort limit

Specifies the maximum complexity of an expression in an interprocedural check.

Type integer
Behavior Checks on expressions whose complexity exceeds this limit are discarded.
Notes Expressions with more pointer dereferences and field/array accesses have a higher complexity.
Factory Setting
  • MAX_CHECK_COMPLEXITY = 10
Tags
  • Analysis resource/effort limit

A threshold for expression complexity.

Type integer
Behavior Information about expressions whose complexity exceeds this limit is discarded.
Notes Expressions with more pointer dereferences and field/array accesses have a higher complexity.

For the taint analysis, expression complexity is bounded instead by TAINT_MAX_EXPRESSION_COMPLEXITY.

Factory Setting
  • MAX_EXPRESSION_COMPLEXITY = 24
Tags
  • Analysis resource/effort limit

Controls how many summaries per procedure will be stored in memory.

Type integer
Behavior Increasing the value for this preference may allow more precise analysis, at the cost of longer analysis time and higher memory usage.
Notes Complex procedures with a large number of possible effects may have a correspondingly large number of summaries. If this number exceeds the per-procedure maximum, CodeSonar will generate a smaller number of summaries designed to preserve as much information as possible from the original set. When the full set of original summaries is desired, change the value of this preference accordingly.
Factory Setting
  • MAX_SUMMARIES_PER_PROCEDURE = 5
Tags
  • Analysis resource/effort limit

Specifies a per-procedure bound on the number of modified values (outputs) that CodeSonar will keep track of in procedure summaries.

Type non-negative integer
Behavior If a procedure modifies more values than this maximum, CodeSonar will select values to discard from the summaries for the procedure to bring the total number of values tracked down to the maximum. Increasing the value for this preference may allow more precise analysis, at the cost of longer analysis time and higher memory usage.
Notes The values modified by a procedure may include its return value, parameters and values from its calling environment, and values derived from these.

For the taint analysis, the number of modified values is bounded instead by TAINT_MAX_MODIFIED_VALUES.

Factory Setting
  • MAX_MODIFIED_VALUES = 100
Tags
  • Analysis resource/effort limit

When a non-const pointer to an object escapes analysis, specifies a bound on the number of transitive fields of that object that the analysis should treat as potentially changed to an unknown value.

Type non-negative integer
Behavior Given MAX_CLOBBERED_FIELDS=N : if a non-const pointer to an object O escapes the analysis' ability to see how the pointer is used, the CodeSonar analysis will treat the first N fields of O as if they may have been changed to an unknown value.
  • Fields are counted in memory layout order.
  • If O has more than N transitive fields, the analysis will treat the remaining fields as if they have not been changed.
Notes Pointers can escape for a variety of reasons. One reason would be getting passed to an undefined function.
  undefined_function( &some_object );

To avoid potential false positives, the analysis will assume that undefined_function() can modify some_object. MAX_CLOBBERED_FIELDS places an upper bound on the analysis cost associated with this assumption.

Factory Setting
  • MAX_CLOBBERED_FIELDS = 200
Tags
  • Analysis resource/effort limit

Specifies a bound on the number of transitive fields of a type (such as a class or struct) that the CodeSonar analysis will copy by-value when simulating a corresponding by-value copy operation in the software under analysis.

Type non-negative integer
Behavior Given MAX_COPIED_FIELDS=N : if the software under analysis performs a by-value copy operation from object S to object D, the CodeSonar analysis will simulate this by performing a by-value copy of the first N fields of S to D.
  • Fields are counted in memory layout order.
  • If S has more than N transitive fields, the analysis will treat the remainder of D as if it has not been changed.
Notes Copying a large number of fields by-value can be resource-intensive. MAX_COPIED_FIELDS places an upper bound on the analysis cost associated with copying an object by-value.
Factory Setting
  • MAX_COPIED_FIELDS = 1000
Tags
  • Analysis resource/effort limit

Specifies whether or not the analysis will apply "exact" decision procedure refinement to warning paths. Decision procedure refinement aims to filter out some warnings that cannot occur in practice.

Type { Yes, No }
Behavior If set to Yes, the analysis will perform exact refinement: this means that the analysis runs the decision procedure on each warning path, handling procedures and loops by splitting the path into separate segments and checking them independently.

If set to No, the analysis will not perform exact refinement.

Taint+dp warnings are always excluded from exact refinement.

Notes The effects of exact refinement differ from those of approximate refinement.
  • Exact refinement is less likely to produce false negatives than approximate refinement.
  • If timeouts are disabled (via DP_REFINEMENT_EXACT_TIMEOUT=0 and DP_REFINEMENT_APPROXIMATE_TIMEOUT=0 ), exact refinement is more likely to produce false positives than approximate refinement. If they are not disabled, there is no predictable relationship between false positive rates for the two.
  • Approximate refinement typically entails larger decision problems, and with more free variables, than exact refinement. The approximate refinement problems can therefore be significantly more expensive to solve than the exact ones.

If exact refinement and approximate refinement are both ENABLED, the two refinement phases are carried out in sequence. It can be beneficial to enable both kinds of refinement because the sets of warnings that each can dismiss are incomparable.

If exact refinement and approximate refinement are both DISABLED, the analysis will take less time and have reduced risk of dismissing true positives, but will generally produce more false positives.

Taint+dp warnings are not included in exact or approximate refinement, but instead have their own refinement stage.

See DP_REFINEMENT_APPROXIMATE for more information about approximate refinement.

Parameters DP_REFINEMENT_EXACT_TIMEOUT, DP_REFINEMENT_EXACT_DISMISS, and DP_REFINEMENT_EXACT_DISMISS_TIMEOUT control various aspects of exact refinement.

Factory Setting
  • DP_REFINEMENT_EXACT = No
Tags
  • Fine Tuning for Warnings

Specifies the timeout for the decision procedure when performing exact refinement.

Type non-negative integer
Behavior
  • 0 : There is no timeout for exact refinement.
  • N (for N>0) : The decision procedure will spend N seconds on each path (or path segment, if the path has multiple segments) before giving up.
Notes If this timeout is exceeded when checking a particular warning, the warning is handled as specified by DP_REFINEMENT_EXACT_DISMISS_TIMEOUT.

To enable exact refinement, set DP_REFINEMENT_EXACT=Yes. Note that taint+dp warnings are always excluded from exact refinement.

Factory Setting
  • DP_REFINEMENT_EXACT_TIMEOUT = 2
Tags
  • Analysis Time Limits

Specifies whether or not warnings will be dismissed outright if exact refinement determines that they cannot occur.

Type { Yes, No }
Behavior
  • Yes : warnings will be dismissed outright if exact refinement determines that they cannot occur.
  • No : warnings will not be dismissed in this situation, but they will incur a small rank penalty.
Notes To enable exact refinement, set DP_REFINEMENT_EXACT=Yes. Note that taint+dp warnings are always excluded from exact refinement.
Factory Setting
  • DP_REFINEMENT_EXACT_DISMISS = Yes
Tags
  • Fine Tuning for Warnings

Specifies whether or not warnings will be dismissed if the decision procedure times out during exact refinement.

Type { Yes, No }
Behavior
  • Yes : warnings will be dismissed outright if the decision procedure times out during exact refinement.
  • No : warnings will not be dismissed in this situation, but they will incur a small rank penalty.
Notes Setting this to Yes can cause true positive warnings to be dismissed.

To enable exact refinement, set DP_REFINEMENT_EXACT=Yes. Note that taint+dp warnings are always excluded from exact refinement.

The timeout for exact refinement is controlled by DP_REFINEMENT_EXACT_TIMEOUT.

Factory Setting
  • DP_REFINEMENT_EXACT_DISMISS_TIMEOUT = No
Tags
  • Fine Tuning for Warnings

Specifies whether or not the analysis will apply "approximate" decision procedure refinement to warning paths. Decision procedure refinement aims to filter out some warnings that cannot occur in practice.

Type { Yes, No }
Behavior If set to Yes, the analysis will perform approximate refinement: this means that the analysis runs the decision procedure on each warning path, handling procedures and loops by converting their summaries into SMT formulas.
  • The CodeSonar analysis will perform approximate refinement on the core path for each warning.
  • On-demand extended path checking will also use approximate refinement.

Taint+dp warnings are always excluded from approximate refinement.

If set to No, the analysis will not perform approximate refinement.

Notes It is possible for approximate refinement to incorrectly conclude that a warning cannot occur, but this does not happen often in practice.

For approximate refinement:

See DP_REFINEMENT_EXACT for information about the differences between exact and approximate refinement. Taint+dp warnings are not included in exact or approximate refinement, but instead have their own refinement stage.

It can be beneficial to enable both forms of refinement, because the sets of warnings that each can dismiss are incomparable. In this case, the two refinement phases are carried out in sequence.

Factory Setting
  • DP_REFINEMENT_APPROXIMATE = Yes
Tags
  • Fine Tuning for Warnings

Specifies the timeout for the decision procedure when performing approximate refinement on warnings.

Type non-negative integer
Behavior
  • 0 : There is no timeout for approximate refinement.
  • N (for N>0) : The decision procedure will spend N seconds on each path before giving up.
Notes If this timeout is exceeded when checking a particular warning, the warning is handled as specified by DP_REFINEMENT_APPROXIMATE_DISMISS_TIMEOUT.

To enable approximate refinement, set DP_REFINEMENT_APPROXIMATE=Yes. Note that taint+dp warnings are always excluded from approximate refinement.

Factory Setting
  • DP_REFINEMENT_APPROXIMATE_TIMEOUT = 2
Tags
  • Analysis Time Limits

Specifies whether or not warnings will be dismissed outright if approximate refinement determines that they cannot occur.

Type { Yes, No }
Behavior
  • Yes : warnings will be dismissed outright if approximate refinement determines that they cannot occur.
  • No : warnings will not be dismissed in this situation, but they will incur a significant rank penalty.
Notes To enable approximate refinement, set DP_REFINEMENT_APPROXIMATE=Yes. Note that taint+dp warnings are always excluded from approximate refinement.
Factory Setting
  • DP_REFINEMENT_APPROXIMATE_DISMISS = Yes
Tags
  • Fine Tuning for Warnings

Specifies whether or not warnings will be dismissed if the decision procedure times out during approximate refinement.

Type { Yes, No }
Behavior
  • Yes : warnings will be dismissed outright if the decision procedure times out during approximate refinement.
  • No : warnings will not be dismissed in this situation, but they will incur a significant rank penalty.
Notes Setting this to Yes can cause true positive warnings to be dismissed. Note that taint+dp warnings are always excluded from approximate refinement.
Factory Setting
  • DP_REFINEMENT_APPROXIMATE_DISMISS_TIMEOUT = No
Tags
  • Fine Tuning for Warnings

Specifies whether or not the analysis will apply decision procedure refinement for "taint+dp" warnings.

Type { Yes, No }
Behavior If set to Yes, the analysis will perform refinement: this means that the analysis runs the decision procedure on each warning path.

If set to No, the analysis will not perform refinement. For these warning classes, there will be many false positives, since decision procedure refinement is the primary mechanism by which code is judged safe.

Notes Parameters TAINT_PLUS_DP_REFINEMENT_TIMEOUT, TAINT_PLUS_DP_REFINEMENT_DISMISS, and TAINT_PLUS_DP_REFINEMENT_DISMISS_TIMEOUT control various aspects of refinement.
Factory Setting
  • TAINT_PLUS_DP_REFINEMENT = Yes
Tags
  • Fine Tuning for Warnings

Specifies the timeout for the decision procedure when performing refinement for "taint+dp" warnings.

Type non-negative integer
Behavior
  • 0 : There is no timeout for refinement.
  • N (for N>0) : The decision procedure will spend N seconds on each path before giving up.
Notes "Taint+dp" warnings are those of the following classes.

Taint+dp warnings are not included in exact or approximate refinement (as governed by DP_REFINEMENT_EXACT, DP_REFINEMENT_EXACT, and related parameters). Instead, they undergo a dedicated refinement phase in which the analysis runs the decision procedure on each warning path, handling procedures and loops by converting their summaries into SMT formulas.

The taint+dp refinement phase cannot be disabled. Its timeouts and handling are specified by the following parameters.

Factory Setting
  • TAINT_PLUS_DP_REFINEMENT_TIMEOUT = 4
Tags

Specifies whether or not "taint+dp" warnings will be dismissed outright if refinement determines that they cannot occur.

Type { Yes, No }
Behavior
  • Yes : warnings will be dismissed outright if decision procedure refinement determines that they cannot occur.
  • No : warnings will not be dismissed in this situation, but they will incur a significant rank penalty.
Notes Handling for unfeasible non-taint+dp warnings is controlled by parameters DP_REFINEMENT_APPROXIMATE_DISMISS (approximate refinement) and DP_REFINEMENT_EXACT_DISMISS (exact refinement)
Factory Setting
  • TAINT_PLUS_DP_REFINEMENT_DISMISS = Yes
Tags

Specifies whether or not "taint+dp" warnings will be dismissed if the decision procedure times out during refinement of a taint/decision procedure warning.

Type { Yes, No }
Behavior
  • Yes : warnings will be dismissed outright if the decision procedure times out during refinement.
  • No : warnings will not be dismissed in this situation, but they will incur a significant rank penalty.
Notes Setting this to No can cause more false positive warnings to be reported.

The timeout for refining taint+dp warnings is controlled by TAINT_PLUS_DP_REFINEMENT_TIMEOUT.

Handling for non-taint+dp warnings for which the decision procedure times out is controlled by parameters DP_REFINEMENT_APPROXIMATE_DISMISS_TIMEOUT (approximate refinement) and DP_REFINEMENT_EXACT_DISMISS_TIMEOUT (exact refinement)

Factory Setting
  • TAINT_PLUS_DP_REFINEMENT_DISMISS_TIMEOUT = Yes
Tags

Specifies the threshold for reporting Ignored Return Value warnings.

Type Real number between 0 and 1 (inclusive)
Behavior If less than this fraction of calls to some function have their return code ignored, then CodeSonar will issue Ignored Return Value warnings for those calls.

Parameter RETURN_CHECKER_CONFIDENCE specifies the confidence interval for making this determination.

Notes Making this number larger will cause more warnings. A value of 0 will effectively disable statistical warnings.
Factory Setting
  • RETURN_CHECKER_RATIO = 0.1
Tags

Specifies the confidence interval for statistically identifying functions whose return value is usually checked.

Type real number (indicating a number of sigmas)
Behavior Once all function calls in the program have been analyzed, there is a set of remaining candidate Ignored Return Value warnings for which all of the following are true:

For each of these candidate warnings, let f() be the function in question and R be the fraction of all observed calls to f() that have ignored return values. CodeSonar performs a one-sided Wilson test to determine whether R <= RETURN_CHECKER_RATIO with at least the confidence specified this parameter. If so, the Ignored Return Value warning is issued.

For example, with RETURN_CHECKER_RATIO=0.1 and RETURN_CHECKER_CONFIDENCE=1.96, CodeSonar will flag ignored calls to f() if, with 95% confidence, fewer than 10% of calls to f() in the universe have their return code checked, on the assumption that the code base under analysis is a random sample of all code in the universe.

Notes Changing the value of this parameter can affect the number of warnings issued.
  • A larger value can decrease the number of warnings issued, because it imposes stricter conditions for determining that a function's return value is 'usually' checked.
  • Conversely, a smaller value can increase the number of warnings issued.
  • A value of 0 will cause RETURN_CHECKER_RATIO to be respected precisely, even for small call populations.
  • Negative values are not useful or recommended.

For example, suppose we have the following.

  • Configuration settings for the relevant parameters are RETURN_CHECKER_RATIO=0.1, RETURN_CHECKER_CONFIDENCE=1
  • In analyzing calls for function myfunc(), CodeSonar has determined that there are 30 calls to myfunc() and that the return value is ignored for one of those calls (and checked for the other 29)
  • Once all function calls in the program have been analyzed, there is a candidate Ignored Return Value warning representing the myfunc() call whose return value is ignored.

With these numbers, the one-sided Wilson test determines that the proportion of ignored calls is below 0.1 (RETURN_CHECKER_RATIO) with 1 sigma of confidence (RETURN_CHECKER_CONFIDENCE) and so the warning is issued.

However, if a second call to myfunc() also had its return value ignored (2/30 calls with return value ignored), the Wilson test would determine that the proportion of ignored calls is NOT below 0.1 with 1 sigma of confidence, and Ignored Return Value warnings would not be issued for myfunc().

The following parameters specify exceptions to the statistical analysis for Ignored Return Value.

Factory Setting
  • RETURN_CHECKER_CONFIDENCE = 1
Tags

Specifies the confidence interval for statistically determining that a candidate Ignored Return Value warning can be discarded immediately (that is, before all function calls have been analyzed).

Type real number (indicating a number of sigmas)
Behavior To produce Ignored Return Value warnings, CodeSonar analyzes the function calls in the program. Each time it encounters a call to some function f() where the return value is ignored, it accumulates a candidate warning. This candidate is discarded immediately if a one-sided Wilson test determines that, for all calls to f() encountered so far, the proportion with ignored return values is greater than RETURN_CHECKER_RATIO with at least this many sigmas of confidence.
Notes The discard test is performed based on the function calls seen up to that point in the analysis (and therefore is based on partial information), so it is possible for some or all Ignored Return Value warnings for a given function f() to be discarded even if the overall proportion of ignored calls to f() in the program does not exceed RETURN_CHECKER_RATIO.

A smaller value increases the likelihood of false negatives, increases nondeterminism during parallel analysis, and decreases disk space consumption.

Candidate warnings are also discarded immediately if the function name matches a RETURN_CHECKER_IGNORED_FUNCS rule.

Factory Setting
  • RETURN_CHECKER_DISCARD_CONFIDENCE = 4
Tags

Specifies exceptions to the statistical analysis for Ignored Return Value. In particular, specifies:

Type Boost 'POSIX Extended Regular Expression'
Behavior If the name of a called function matches a RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS regular expression and the return value from that function call is ignored on ANY path, an Ignored Return Value warning will always be issued (regardless of the settings of RETURN_CHECKER_CONFIDENCE and RETURN_CHECKER_RATIO).

If the Ignored Return Value warning class is disabled, such as with a WARNING_FILTER rule, this parameter has no effect.

Notes RETURN_CHECKER_IGNORED_FUNCS takes precedence over this parameter.

Checked Functions for Ignored Return Value

There are a number of configuration parameters that specify functions to check for ignored return values. The following table summarizes the options.

  +---------------+-------------------+----------------------------------------------+--------------------------------------------+
  | Function has  | Warning if return |  User-specified rules                        | Built-in (factory setting) rules           |
  | side effects? | value ignored on  |                                              |                                            |
  +---------------+-------------------+----------------------------------------------+--------------------------------------------+
  | Yes           | ANY path          | RETURN_CHECKER_CHECKED_FUNCS                 | RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS      |
  +---------------+-------------------+----------------------------------------------+--------------------------------------------+
  | No            | ALL paths         | RETURN_CHECKER_CHECKED_PURE_FUNCS            | RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS |
  | ("pure")      +-------------------+----------------------------------------------+--------------------------------------------+
  |               | ANY path          | RETURN_CHECKER_CHECKED_PURE_SOME_PATHS_FUNCS | -                                          |
  +---------------+-------------------+----------------------------------------------+--------------------------------------------+

Factory Settings
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^backtrace$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^backtrace_symbols$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^bind$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^BIO_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^BIO_new_file$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^BIO_new_mem_buf$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^BN_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^CAccessToken::Impersonate$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^CAccessToken::ImpersonateLoggedOnUser$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^cairo_create$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^cairo_image_surface_create$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^cairo_image_surface_create_for_data$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^cairo_pattern_create_for_surface$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^cairo_pattern_create_linear$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^cairo_pattern_create_radial$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^cairo_surface_create_similar$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^chdir$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^chmod$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^chown$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^chroot$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^CoImpersonateClient$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^connect$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^CreateEvent[AW]?$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^CreateFile[AW]?$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^CreateMutex[AW]?$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^CreateProcess[AW]?$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^CreateThread$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^curl_easy_init$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^db_create$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^dbus_g_proxy_new_for_name$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^dbus_message_new_error$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^dbus_message_new_method_call$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^dbus_message_new_method_return$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^dbus_message_new_signal$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^DdeImpersonateClient$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^describe_double_constant$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^describe_signed_constant$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^describe_unsigned_constant$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^DH_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^dup2$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^DuplicateHandle$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^_emalloc$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^epoll_create$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^epoll_wait$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^ERR_get_error$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^_estrndup$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^EVP_PKEY_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^fchdir$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^fchmod$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^fchown$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^feof$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^ferror$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^fgetc$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^FindFirstFile[AW]?$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^FindNextFile[AW]?$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^fork$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^fputc$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^fread$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^fseek$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^fsetpos$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^fstat$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^fstatfs$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^fsync$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^ftell$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^ftime$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^FT_New_Face$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^ftruncate$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^ftrylockfile$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^fwrite$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_array_sized_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_ascii_strdown$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_ascii_strncasecmp$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_ascii_strup$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_ascii_tolower$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_ascii_toupper$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_async_result_get_source_object$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_base64_decode$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_base64_encode$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_boxed_copy$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_build_filename$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_build_path$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_byte_array_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_cancellable_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_cclosure_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_checksum_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_compute_checksum_for_string$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_cond_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_content_type_get_description$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_data_input_stream_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_date_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_date_new_dmy$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_date_time_format$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_date_time_new_now_local$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_dbus_proxy_get_cached_property$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_dir_read_name$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gdk_atom_name$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gdk_cairo_create$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gdk_cursor_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gdk_cursor_new_for_display$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gdk_event_copy$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gdk_event_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gdk_gc_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gdk_pixbuf_copy$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gdk_pixbuf_get_formats$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gdk_pixbuf_loader_get_pixbuf$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gdk_pixbuf_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gdk_pixbuf_new_from_data$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gdk_pixbuf_new_from_inline$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gdk_pixbuf_new_from_xpm_data$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gdk_pixbuf_new_subpixbuf$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gdk_pixbuf_scale_simple$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gdk_pixmap_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gdk_window_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_dpgettext$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_enum_get_value$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_enum_get_value_by_nick$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_enum_register_static$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_error_copy$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_error_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_error_new_literal$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^getaddrinfo$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^getc$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^GetCurrentProcess$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^GetCurrentProcessId$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^GetCurrentThread$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^GetCurrentThreadId$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^getcwd$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^GetExitCodeProcess$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^GetFileInformationByHandle$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^GetFileSize$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^GetFileSizeEx$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^GetFileTime$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^GetFileType$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^GetLastError$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^getopt$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^getopt_long$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^getopt_long_only$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^GetProcessHeap$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^GetProcessId$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^GetThreadId$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_file_get_basename$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_file_get_child$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_file_get_parent$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_file_get_parse_name$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_file_get_path$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_file_get_uri$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_filename_display_basename$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_filename_display_name$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_file_new_for_commandline_arg$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_file_new_for_uri$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_find_program_in_path$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_flags_get_first_value$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_hash_table_get_keys$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_hash_table_get_values$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_hash_table_iter_next$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_hash_table_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_hash_table_new_full$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_idle_source_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_io_channel_unix_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_list_concat$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_list_copy$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_list_delete_link$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_list_insert$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_list_insert_sorted$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_list_prepend$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_list_remove$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_list_remove_link$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_list_reverse$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_list_sort$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^GlobalAlloc$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^GlobalFlags$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^GlobalHandle$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^GlobalLock$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^GlobalReAlloc$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^GlobalSize$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^GlobalUnlock$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^glXChooseVisual$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^glXCreateContext$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_main_context_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_main_loop_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_markup_escape_text$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_markup_printf_escaped$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_markup_vprintf_escaped$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_match_info_fetch$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_mkstemp$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_module_open$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_mutex_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_node_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gnutls_handshake$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_object_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_object_newv$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_once_init_enter$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_option_context_get_help$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_option_context_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_option_group_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_param_spec_boolean$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_param_spec_boxed$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_param_spec_double$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_param_spec_enum$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_param_spec_flags$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_param_spec_float$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_param_spec_int$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_param_spec_int64$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_param_spec_internal$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_param_spec_object$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_param_spec_pointer$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_param_spec_string$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_param_spec_uint$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_param_spec_uint64$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_param_spec_ulong$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_path_get_dirname$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_pattern_spec_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_ptr_array_sized_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_queue_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_regex_escape_string$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_settings_get_string$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_settings_get_strv$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_settings_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_shell_quote$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_simple_async_result_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_slice_alloc$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_slice_alloc0$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_slist_concat$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_slist_copy$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_slist_delete_link$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_slist_insert_sorted$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_slist_prepend$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_slist_remove$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_slist_remove_link$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_slist_reverse$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_slist_sort$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_source_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_static_resource_get_resource$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gst_element_get_static_pad$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gst_pipeline_get_bus$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_strcompress$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_strconcat$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_strdup_printf$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_strdupv$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_strdup_vprintf$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_strescape$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_string_new_len$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_strjoin$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_strjoinv$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_strnfill$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_strsplit$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_strsplit_set$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_themed_icon_new_with_default_fallbacks$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_timeout_source_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_about_dialog_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_action_group_list_actions$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_action_group_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_action_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_adjustment_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_alignment_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_arrow_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_box_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_builder_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_button_box_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_button_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_button_new_from_stock$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_button_new_with_label$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_button_new_with_mnemonic$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_cell_layout_get_cells$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_cell_renderer_pixbuf_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_cell_renderer_text_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_cell_renderer_toggle_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_check_button_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_check_button_new_with_label$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_check_button_new_with_mnemonic$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_check_menu_item_new_with_label$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_check_menu_item_new_with_mnemonic$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_clipboard_wait_for_text$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_color_button_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_color_selection_dialog_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_combo_box_get_active_text$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_combo_box_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_combo_box_new_text$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_combo_box_new_with_model$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_combo_box_text_get_active_text$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_combo_box_text_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_combo_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_container_get_children$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_css_provider_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_dialog_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_dialog_new_with_buttons$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_drawing_area_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_editable_get_chars$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_entry_completion_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_entry_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_event_box_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_file_chooser_button_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_file_chooser_dialog_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_file_chooser_get_current_folder$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_file_chooser_get_uri$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_file_filter_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_file_selection_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_frame_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_grid_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_hbox_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_hbutton_box_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_hpaned_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_hscale_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_hseparator_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_icon_factory_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_icon_set_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_icon_source_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_image_menu_item_new_from_stock$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_image_menu_item_new_with_label$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_image_menu_item_new_with_mnemonic$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_image_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_image_new_from_file$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_image_new_from_icon_name$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_image_new_from_pixbuf$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_image_new_from_stock$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_info_bar_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_label_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_label_new_with_mnemonic$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_list_store_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^Gtk::manage$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_menu_bar_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_menu_item_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_menu_item_new_with_label$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_menu_item_new_with_mnemonic$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_menu_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_message_dialog_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_message_dialog_new_with_markup$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_notebook_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_option_menu_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_paned_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_pixmap_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_print_operation_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_progress_bar_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_radio_button_new_with_label$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_radio_button_new_with_label_from_widget$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_radio_button_new_with_mnemonic$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_radio_menu_item_new_with_label$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_scrolled_window_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_separator_menu_item_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_separator_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_separator_tool_item_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_spin_button_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_spin_button_new_with_range$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_statusbar_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_style_attach$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_table_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_target_list_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_text_buffer_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_text_view_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_text_view_new_with_buffer$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_toggle_button_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_toggle_button_new_with_label$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_toolbar_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_tool_button_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_tool_button_new_from_stock$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_tool_item_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_tooltips_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_tree_model_filter_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_tree_model_get_path$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_tree_model_sort_new_with_model$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_tree_path_copy$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_tree_path_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_tree_path_new_first$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_tree_path_new_from_indices$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_tree_path_to_string$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_tree_row_reference_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_tree_selection_get_selected_rows$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_tree_store_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_tree_view_column_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_tree_view_column_new_with_attributes$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_tree_view_get_columns$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_tree_view_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_tree_view_new_with_model$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_vbox_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_viewport_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_vpaned_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_vscrollbar_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_vseparator_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^gtk_widget_create_pango_layout$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_type_add_instance_private$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_type_children$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_type_create_instance$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_uri_escape_string$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_uri_parse_scheme$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_uri_unescape_string$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_utf8_collate_key$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_utf8_normalize$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_utf8_strdown$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_utf8_strup$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_value_array_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_value_dup_boxed$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_value_dup_object$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_value_dup_string$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_variant_builder_end$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_variant_builder_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_variant_iter_next_value$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_variant_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_variant_new_boolean$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_variant_new_int32$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_variant_new_string$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_variant_new_uint32$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_variant_print$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^g_volume_monitor_get$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^HeapAlloc$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^HeapCompact$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^HeapCreate$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^HeapLock$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^HeapQueryInformation$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^HeapReAlloc$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^HeapSetInformation$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^HeapSize$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^HeapUnlock$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^HeapValidate$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^HeapWalk$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^iconv_open$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^IMG_Load$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^ImpersonateDdeClientWindow$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^ImpersonateLoggedOnUser$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^ImpersonateNamedPipeClient$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^ImpersonateSecurityContext$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^ImpersonateSelf$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^(__isoc.._)?_cscanf$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^(__isoc.._)?_[fs]tscanf$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^(__isoc.._)?f[tw]?scanf$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^(__isoc.._)?sw?scanf$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^(__isoc.._)?_tscanf$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^(__isoc.._)?v?[fs]scanf$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^(__isoc.._)?vftscanf$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^(__isoc.._)?[vw]?scanf$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^jack_client_open$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^jack_get_ports$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^jack_port_register$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^KCModule::qt_metacall$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^KCModule::qt_metacast$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^KDialog::qt_metacall$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^KDialog::qt_metacast$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^KIO::get$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^KMessageBox::questionYesNo$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^KMessageBox::warningContinueCancel$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^KMessageBox::warningYesNo$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^KMessageBox::warningYesNoCancel$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^KPluginFactory::create$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^krb5_init_context$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^KWallet::Wallet::openWallet$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^KXmlGuiWindow::qt_metacall$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^KXmlGuiWindow::qt_metacast$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^ldap_first_entry$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^ldap_get_dn$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^ldap_get_values_len$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^ldap_next_entry$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^ldap_search_ext_s$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^LocalAlloc$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^LocalFlags$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^LocalHandle$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^LocalLock$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^LocalReAlloc$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^LocalSize$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^LocalUnlock$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^lseek$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^lstat$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^lstat64$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^lua_next$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^Mix_LoadMUS$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^Mix_LoadWAV_RW$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^mkdir$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^mknod$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^mmap$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^mysql_real_connect$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^mysql_store_result$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^newlocale$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^newwin$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^notify_notification_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^OpenFile$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^OpenProcess$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^OpenThread$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^pam_authenticate$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^pam_start$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^pango_attr_foreground_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^pango_attr_list_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^pango_attr_underline_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^pango_attr_weight_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^pango_cairo_create_layout$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^pango_context_get_metrics$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^pango_font_description_copy$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^pango_font_description_from_string$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^pango_font_description_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^pango_font_description_to_string$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^pango_layout_get_iter$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^pango_layout_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^pcap_open_live$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^pcre_compile$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^pcre_exec$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PEM_read_bio_PrivateKey$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^Perl_newRV$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^Perl_newRV_noinc$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^Perl_newSV$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^Perl_newSViv$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^Perl_newSVnv$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^Perl_newSVpv$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^Perl_newSVpvf_nocontext$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^Perl_newSVpvn$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^Perl_newSVsv$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^Perl_newSV_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^Perl_newSVuv$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^Perl_newXS_flags$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^Perl_safesyscalloc$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^Perl_safesysmalloc$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^png_create_info_struct$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^png_create_read_struct$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^png_create_write_struct$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^png_set_longjmp_fn$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^poptGetNextOpt$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PQexec$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^pread$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^pselect$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^pthread_mutex_trylock$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^pwrite$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyArg_ParseTuple$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyArg_ParseTupleAndKeywords$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyArg_UnpackTuple$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyBool_FromLong$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^Py_BuildValue$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyBytes_FromStringAndSize$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyCapsule_GetPointer$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyCapsule_Import$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyCapsule_New$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyCFunction_NewEx$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyCObject_FromVoidPtr$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyCode_New$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyDict_New$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyErr_NewException$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^Py_FindMethod$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyFloat_FromDouble$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyFrame_New$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyImport_Import$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyImport_ImportModule$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyInstance_NewRaw$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyInt_FromLong$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyInt_FromSize_t$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyInt_FromSsize_t$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyIter_Next$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyList_New$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyLong_FromLong$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyLong_FromLongLong$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyLong_FromUnsignedLong$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyLong_FromUnsignedLongLong$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyLong_FromVoidPtr$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyMem_Malloc$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyMem_Realloc$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyModule_GetDict$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyNumber_Int$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyNumber_Long$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyObject_Call$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyObject_CallFunction$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyObject_CallObject$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyObject_GetAttr$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyObject_GetAttrString$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyObject_GetItem$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyObject_GetIter$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyObject_Malloc$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^_PyObject_New$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyObject_Repr$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyObject_RichCompare$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyObject_Str$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PySequence_GetItem$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyString_Format$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyString_FromFormat$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyString_FromString$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyString_FromStringAndSize$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyString_InternFromString$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyTuple_GetSlice$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyTuple_New$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyTuple_Pack$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyType_Ready$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyUnicode_FromFormat$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^PyUnicode_FromString$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^QAbstractItemModel::qt_metacall$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^QAbstractItemModel::qt_metacast$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^QAbstractListModel::qt_metacall$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^QAbstractListModel::qt_metacast$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^QAbstractTableModel::qt_metacall$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^QAbstractTableModel::qt_metacast$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^QAction::qt_metacall$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^QAction::qt_metacast$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^QApplication::qt_metacall$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^QApplication::qt_metacast$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^QComboBox::qt_metacall$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^QComboBox::qt_metacast$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^QDBusAbstractAdaptor::qt_metacall$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^QDBusAbstractAdaptor::qt_metacast$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^QDBusAbstractInterface::qt_metacall$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^QDBusAbstractInterface::qt_metacast$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^QDialog::qt_metacast$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^QDockWidget::qt_metacall$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^QDockWidget::qt_metacast$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^QFrame::qt_metacall$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^QFrame::qt_metacast$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^QGraphicsView::qt_metacall$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^QGraphicsView::qt_metacast$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^QItemDelegate::qt_metacall$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^QItemDelegate::qt_metacast$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^QLabel::qt_metacall$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^QLabel::qt_metacast$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^QLineEdit::qt_metacall$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^QLineEdit::qt_metacast$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^QListView::qt_metacall$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^QListView::qt_metacast$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^QMainWindow::qt_metacall$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^QMainWindow::qt_metacast$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^QMenu::qt_metacall$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^QMenu::qt_metacast$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^qstrdup$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^QTest::qExec$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^QuerySecurityContextToken$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^read$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^readdir$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^readdir64$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^ReadFile$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^readlink$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^readv$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^recv$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^recvfrom$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^recvmsg$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^regexec$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^RegOpenKeyEx[AW]?$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^RegQueryValueEx[AW]?$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^ReleaseMutex$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^rename$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^ResetEvent$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^RpcImpersonateClient$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^RSA_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^scandir$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^SDL_CreateRGBSurface$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^SDL_DisplayFormat$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^SDL_JoystickOpen$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^SDL_RWFromFile$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^select$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^semget$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^send$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^sendmsg$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^sendto$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^sete[gu]id$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^SetEndOfFile$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^SetEntriesInAcl[AW]?$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^SetEvent$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^SetFilePointer$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^SetFilePointerEx$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^setfs[gu]id$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^set[gu]id$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^setjmp$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^setre[gu]id$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^SetThreadToken$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^sf_open$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^shmget$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^shm_open$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^sk_new_null$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^snd_pcm_hw_params$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^snd_pcm_open$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^soup_message_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^SSL_accept$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^SSL_connect$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^SSL_CTX_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^SSL_CTX_use_certificate_chain_file$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^SSL_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^std.*::move$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^TIFFOpen$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^truncate$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^udev_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^vfork$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^WaitForSingleObject$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^write$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^WriteFile$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^writev$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^X509_get_pubkey$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^XAllocSizeHints$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^xcalloc$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^XCheckMaskEvent$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^XCreateBitmapFromData$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^XCreateColormap$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^XCreateFontCursor$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^XCreateGC$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^XCreateImage$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^XCreatePixmap$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^XCreatePixmapCursor$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^XCreatePixmapFromBitmapData$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^XCreateRegion$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^XCreateSimpleWindow$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^XCreateWindow$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^XftDrawCreate$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^XGetImage$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^_XGetRequest$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^XGetSelectionOwner$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^XLoadQueryFont$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^xmalloc$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^xmemdup$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^xmlGetProp$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^xmlNewDoc$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^xmlNewDocNode$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^xmlNewNode$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^xmlNodeGetContent$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^xmlNodeListGetString$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^xmlParseFile$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^xmlParseMemory$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^XML_ParserCreate$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^xmlReadMemory$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^xmlStrdup$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^xmlXPathEvalExpression$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^xmlXPathNewContext$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^XOpenDisplay$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^xrealloc$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^xstrdup$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^xstrndup$
  • RETURN_CHECKER_BUILT_IN_CHECKED_FUNCS += ^XtMalloc$
Tags

Specifies exceptions to the statistical analysis for Ignored Return Value. In particular, specifies:

Type Boost 'POSIX Extended Regular Expression'
Behavior If the name of a called function matches a RETURN_CHECKER_CHECKED_FUNCS regular expression and the return value from that function call is ignored on ANY path, an Ignored Return Value warning will always be issued (regardless of the settings of RETURN_CHECKER_CONFIDENCE and RETURN_CHECKER_RATIO).

If the Ignored Return Value warning class is disabled, such as with a WARNING_FILTER rule, this parameter has no effect.

Notes RETURN_CHECKER_IGNORED_FUNCS takes precedence over this parameter.

See Checked Functions for Ignored Return Value for information about the various configuration parameters available for specifying exceptions to the statistical analysis for Ignored Return Value.

(No factory settings.)

Tags

Specifies exceptions to the statistical analysis for Ignored Return Value. In particular, specifies:

Type Boost 'POSIX Extended Regular Expression'
Behavior If the name of a called function matches a RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS regular expression and the return value from that function call is ignored, an Ignored Return Value warning will always be issued (regardless of the settings of RETURN_CHECKER_CONFIDENCE and RETURN_CHECKER_RATIO).

If the Ignored Return Value warning class is disabled, such as with a WARNING_FILTER rule, this parameter has no effect.

Notes RETURN_CHECKER_IGNORED_FUNCS takes precedence over this parameter.

See Checked Functions for Ignored Return Value for information about the various configuration parameters available for specifying exceptions to the statistical analysis for Ignored Return Value.

Factory Settings
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^access$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^BIO_s_mem$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^bsearch$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^cairo_get_source$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^cairo_status$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^cairo_status_to_string$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^cairo_surface_status$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^compare$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^concat$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^constant$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^CRYPTO_num_locks$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^cs_isfinite$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^cs_isinf$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^cs_isnan$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^curl_easy_strerror$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^dbus_error_is_set$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^dbus_message_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^dbus_message_is_method_call$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^dbus_message_is_signal$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^dbus_message_iter_get_arg_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^difftime$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^dlsym$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^drand48$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^dump_irepository$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^ERR_reason_error_string$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^EVP_get_digestbyname$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^fabsf$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^feof$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^ferror$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^file_exists$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^find_entry$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^finite$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^fnmatch$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^FT_Get_Char_Index$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_app_info_get_name$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_ascii_strcasecmp$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_async_initable_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_boxed_type_register_static$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gcd$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_date_valid$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_dbus_method_invocation_get_message$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_dbus_proxy_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_dgettext$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gdk_atom_intern_static_string$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gdk_color_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gdk_device_manager_get_client_pointer$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gdk_display_get_default$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gdk_display_get_device_manager$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gdk_drawable_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gdk_keyval_from_name$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gdk_keyval_name$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gdk_screen_get_monitor_at_window$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gdk_window_get_state$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gdk_x11_get_default_root_xwindow$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gdk_x11_window_get_drawable_impl$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_error_matches$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^get_header$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^getmntent$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^getpass$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^getpid$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^get_type_name$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^get_value$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_file_equal$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_file_error_from_errno$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_file_error_quark$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_file_info_get_attribute_string$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_file_is_native$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_file_query_exists$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_file_test$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_flags_register_static$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_get_application_name$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_getenv$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_get_home_dir$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_get_prgname$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_get_real_name$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_get_tmp_dir$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_get_user_cache_dir$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_get_user_config_dir$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_get_user_data_dir$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_get_user_name$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_hash_table_size$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_initable_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_intern_static_string$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_key_file_error_quark$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_key_file_has_group$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^glade_xml_get_widget$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^glGenLists$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^Glib::ustring::c_str$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_list_append$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_list_find$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_list_find_custom$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_list_position$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_main_context_default$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_main_loop_is_running$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_markup_error_quark$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_match_info_matches$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_module_error$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_module_supported$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gnutls_strerror$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_object_class_find_property$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_object_interface_list_properties$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^_g_object_ref0$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_option_error_quark$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_parse_debug_string$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_path_is_absolute$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_pattern_match_string$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_quark_from_static_string$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_quark_to_string$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_quark_try_string$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_queue_get_length$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_queue_is_empty$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_random_int$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_random_int_range$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_regex_match_simple$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_signal_handler_is_connected$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_signal_lookup$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_signal_name$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_simple_async_result_propagate_error$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_slist_append$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_slist_find$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_slist_find_custom$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_spawn_error_quark$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_strcmp0$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_str_equal$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_strerror$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_str_has_prefix$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_str_has_suffix$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_strv_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_thread_self$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_action_group_get_action$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_adjustment_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_binding_set_by_class$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_bin_get_child$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_bin_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_box_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_builder_get_object$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_button_box_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_cell_layout_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_check_menu_item_get_active$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_check_menu_item_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_clipboard_get_for_display$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_clist_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_color_selection_dialog_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_combo_box_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_combo_box_text_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_combo_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_container_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_dialog_get_action_area$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_dialog_get_content_area$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_dialog_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_entry_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_events_pending$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_expander_get_expanded$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_file_chooser_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_file_selection_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_frame_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_get_current_event_time$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_get_option_group$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_grid_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_icon_theme_has_icon$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_icon_theme_lookup_icon$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_image_get_pixbuf$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_info_bar_get_content_area$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_label_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_list_store_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_menu_get_attach_widget$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_menu_item_get_submenu$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_menu_shell_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_message_dialog_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_misc_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_notebook_get_tab_label$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_notebook_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_object_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_option_menu_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_orientable_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_orientation_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_paned_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_radio_button_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_range_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_scrolled_window_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_spin_button_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_statusbar_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_table_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_text_buffer_get_insert$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_text_buffer_get_text$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_text_iter_compare$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_toggle_button_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_toggle_tool_button_get_active$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_tree_model_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_tree_model_iter_has_child$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_tree_path_compare$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_tree_row_reference_get_path$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_tree_selection_iter_is_selected$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_tree_sortable_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_tree_store_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_tree_view_get_bin_window$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_tree_view_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_tree_view_row_expanded$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_ui_manager_get_accel_group$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_ui_manager_get_widget$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_ui_manager_new_merge_id$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_vbox_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_widget_get_ancestor$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_widget_get_colormap$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_widget_get_default_direction$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_widget_get_events$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_widget_get_mapped$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_widget_get_pango_context$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_widget_get_parent_window$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_widget_get_realized$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_widget_get_visible$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_widget_has_focus$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_widget_is_drawable$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_widget_is_sensitive$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_widget_is_toplevel$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_widget_render_icon$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_window_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gtk_window_new$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_type_check_class_cast$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_type_check_class_is_a$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_type_check_instance_is_a$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_type_check_value$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_type_check_value_holds$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_type_class_peek$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_type_class_peek_parent$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_type_fundamental$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_type_fundamental_next$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_type_interface_peek$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_type_interface_peek_parent$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_type_is_a$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_type_module_register_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_type_name$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_type_parent$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_type_register_fundamental$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_type_register_static$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_type_register_static_simple$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_type_test_flags$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_type_value_table_peek$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_ucs4_to_utf8$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_unichar_isalnum$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_unichar_isprint$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_unichar_isspace$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_utf8_collate$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_utf8_strchr$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_utf8_strrchr$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_utf8_validate$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_value_array_get_nth$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_value_get_boolean$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_value_get_double$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_value_get_enum$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_value_get_flags$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_value_get_object$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_value_get_pointer$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_value_get_string$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_value_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_value_get_uchar$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_value_get_variant$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_value_peek_pointer$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_value_type_compatible$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_variant_equal$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_variant_get_boolean$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_variant_get_child_value$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_variant_get_uint32$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_variant_is_of_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_variant_iter_loop$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_variant_n_children$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^g_variant_type_checked_$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gzdopen$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^gzopen$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^has_colors$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^hash_lookup$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^hstrerror$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^htonl$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^htons$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^index$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^inet_addr$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^inet_ntoa$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^input$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^invoke_error_quark$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^invoke_get_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^isalnum$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^isalpha$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^isascii$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^isatty$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^isblank$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^iscntrl$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^isdigit$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^isgraph$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^islower$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^isprint$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^ispunct$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^is_selinux_enabled$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^isspace$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^isupper$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^iswalnum$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^iswprint$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^iswspace$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^isxdigit$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^KActionCollection::action$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^KCmdLineArgs::count$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^KComponentData::isValid$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^KConfigBase::hasGroup$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^KConfigGroup::hasKey$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^KCoreConfigSkeleton::isImmutable$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^KDebug::hasNullOutputQtDebugMsg$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^KDialog::button$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^KDialog::mainWidget$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^KDialog::marginHint$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^KDialog::spacingHint$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^KGlobal::locale$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^KGlobal::mainComponent$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^KIconLoader::global$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^KIO::NetAccess::exists$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^KJob::error$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^KMainWindow::canBeRestored$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^KMainWindow::menuBar$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^KMainWindow::statusBar$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^KMainWindow::toolBar$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^KPluginFactory::InheritanceChecker::createInstanceFunction$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^KServiceTypeTrader::self$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^KSharedPtr::data$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^KUrl::isLocalFile$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^KXMLGUIClient::factory$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^ldap_err2string$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^ldap_first_attribute$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^list_empty$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^lookup$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^lt_dlsym$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^lua_gettop$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^lua_isnumber$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^lua_isstring$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^lua_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^match$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^memchr$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^memcmp$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^mysql_errno$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^mysql_error$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^mysql_fetch_row$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^OBJ_nid2sn$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^pa_context_errno$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^pa_context_get_state$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^pam_strerror$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^pango_context_get_font_description$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^pango_context_get_language$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^pango_layout_get_context$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^pa_strerror$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^pathconf$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^pcap_datalink$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^pcap_geterr$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^Perl_av_fetch$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^Perl_av_len
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^Perl_block_gimme$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^Perl_get_sv$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^Perl_gv_add_by_type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^Perl_mg_find$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^Perl_stack_grow$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^Perl_sv_2bool_flags$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^Perl_sv_derived_from$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^Perl_sv_isobject$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^png_get_valid$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^png_sig_cmp$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^poptGetContext$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^posix_memalign$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^PQerrorMessage$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^PQresultStatus$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^PQstatus$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^pthread_equal$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^pthread_getspecific$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^pthread_self$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^PyCallable_Check$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^PyDict_GetItem$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^PyDict_Next$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^PyErr_ExceptionMatches$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^PyErr_GivenExceptionMatches$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^PyErr_Occurred$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^PyEval_SaveThread$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^_PyInstance_Lookup$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^_PyObject_GetDictPtr$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^PyObject_HasAttrString$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^PyObject_IsInstance$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^PyObject_IsTrue$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^PyObject_SetItem$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^PyObject_Size$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^PySequence_Check$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^PySequence_Size$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^PyType_IsSubtype$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^PyUnicodeUCS4_DecodeUTF8$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QAbstractButton::iconSize$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QAbstractButton::isChecked$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QAbstractItemView::itemDelegate$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QAbstractItemView::model$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QAbstractItemView::selectionModel$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QAbstractProxyModel::sourceModel$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QAbstractScrollArea::horizontalScrollBar$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QAbstractScrollArea::verticalScrollBar$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QAbstractScrollArea::viewport$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QAbstractSlider::maximum$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QAbstractSlider::minimum$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QAction::isChecked$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QAction::isEnabled$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QAction::isSeparator$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QAction::menu$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QApplication::activeWindow$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QApplication::clipboard$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QApplication::desktop$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QApplication::focusWidget$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QApplication::isSessionRestored$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QApplication::startDragDistance$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QBasicAtomicInteger::load$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QBasicAtomicInteger::loadAcquire$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QBasicAtomicPointer::testAndSetOrdered$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QBasicTimer::timerId$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^qBlue$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^qBound$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QBrush::color$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QBuffer::data$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QButtonGroup::button$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QByteArray::constData$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QByteArray::contains$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QByteArray::count$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QByteArray::data$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QByteArray::endsWith$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QByteArray::isEmpty$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QByteArray::isNull$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QByteArray::lastIndexOf$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QByteArray::length$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QByteArray::size$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QByteArray::startsWith$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QChar::isDigit$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QChar::isLetter$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QChar::isLetterOrNumber$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QChar::isNull$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QChar::isPrint$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QChar::isSpace$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QCharRef::isSpace$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QCharRef::toUpper$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QChar::toAscii$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QChar::toUpper$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QCheckBox::checkState$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QColor::alpha$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QColor::alphaF$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QColor::blueF$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QColor::greenF$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QColor::isValid$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QColor::redF$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QColor::rgba$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QComboBox::count$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QComboBox::currentIndex$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QComboBox::findData$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QComboBox::findText$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QComboBox::lineEdit$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QComboBox::model$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QComboBox::view$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QContextMenuEvent::pos$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QCoreApplication::applicationPid$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QCursor::pos$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QCursor::shape$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QDataStream::atEnd$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QDataStream::device$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QDate::currentDate$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QDate::day$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QDate::dayOfWeek$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QDate::isValid$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QDateTime::date$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QDateTime::isNull$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QDateTime::isValid$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QDateTime::secsTo$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QDateTime::time$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QDBusAbstractInterface::isValid$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QDBusConnection::isConnected$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QDBusMessage::type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QDBusPendingCall::isError$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QDBusReply::error$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QDBusReply::isValid$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QDBusReply::value$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QDebug::nospace$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QDebug::space$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QDesktopWidget::availableGeometry$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QDesktopWidget::screenNumber$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QDialogButtonBox::button$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QDialog::qt_metacall$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QDialog::result$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QDir::exists$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QDir::isAbsolutePath$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QDir::isRelativePath$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QDirIterator::hasNext$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QDir::separator$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QDockWidget::toggleViewAction$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QDomElement::hasAttribute$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QDomNode::isElement$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QDomNode::isNull$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QDomNodeList::count$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QDropEvent::mimeData$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QDropEvent::pos$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QDropEvent::source$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QEvent::isAccepted$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QEvent::spontaneous$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QEvent::type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QFile::error$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QFile::exists$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QFile::handle$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QFileInfo::exists$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QFileInfo::isAbsolute$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QFileInfo::isDir$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QFileInfo::isExecutable$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QFileInfo::isFile$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QFileInfo::isReadable$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QFileInfo::isRelative$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QFileInfo::isSymLink$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QFileInfo::isWritable$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^qFlagLocation$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QFocusEvent::reason$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QFont::bold$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QFont::italic$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QFontMetrics::boundingRect$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QFontMetrics::size$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QFont::pointSize$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QFont::underline$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QFont::weight$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QFrame::frameWidth$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^qFuzzyCompare$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^qGetPtrHelper$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QGraphicsItem::isVisible$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QGraphicsItem::parentItem$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QGraphicsItem::scene$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QGraphicsSceneMouseEvent::button$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QGraphicsSceneMouseEvent::pos$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QGraphicsSceneMouseEvent::scenePos$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QGraphicsScene::sceneRect$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QGraphicsView::scene$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^qGreen$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QGroupBox::isChecked$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^qHash$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QHash::begin$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QHash::constBegin$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QHash::constEnd$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QHash::constFind$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QHash::const_iterator::key$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QHash::const_iterator::value$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QHash::contains$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QHash::end$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QHash::find$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QHash::isEmpty$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QHashIterator::hasNext$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QHash::iterator::key$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QHashIterator::key$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QHash::iterator::value$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QHashIterator::value$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QHash::key$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QHash::size$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QHelpEvent::globalPos$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QIcon::hasThemeIcon$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QIcon::isNull$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QImage::depth$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QImage::format$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QImage::isNull$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QImage::pixel$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QImage::rect$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QImage::size$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QIODevice::isOpen$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QIODevice::isReadable$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QItemSelectionModel::isSelected$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QKeyEvent::isAutoRepeat$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QKeyEvent::key$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QKeySequence::isEmpty$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QLabel::pixmap$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QLibrary::resolve$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QList::at$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QList::back$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QList::contains$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QList::count$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QList::empty$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QList::first$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QList::front$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QList::isEmpty$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QListIterator::hasNext$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QListIterator::hasPrevious$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QListIterator::next$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QList::last$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QList::length$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QList::size$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QList::takeFirst$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QList::value$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QListWidget::currentItem$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QListWidget::item$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QListWidgetItem::checkState$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QMainWindow::centralWidget$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QMainWindow::menuBar$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QMainWindow::statusBar$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^qMakePair$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QMap::begin$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QMap::constBegin$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QMap::constEnd$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QMap::constFind$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QMap::const_iterator::key$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QMap::const_iterator::value$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QMap::contains$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QMap::count$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QMap::empty$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QMap::end$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QMap::find$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QMap::isEmpty$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QMapIterator::hasNext$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QMapIterator::key$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QMap::iterator::value$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QMapIterator::value$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QMap::key$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QMap::value$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QMenu::isEmpty$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QMenu::menuAction$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QMessageBox::question$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QMetaEnum::valueToKey$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QMetaObject::cast$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QMetaObject::className$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QMetaObject::indexOfEnumerator$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QMetaObject::indexOfSignal$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QMetaObject::method$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QMetaObject::property$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QMetaObject::propertyCount$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QMetaProperty::name$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^qMetaTypeId$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QMimeData::hasText$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QMimeData::hasUrls$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QModelIndex::internalId$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QModelIndex::isValid$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QModelIndex::model$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QMouseEvent::button$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QMouseEvent::globalPos$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QMouseEvent::pos$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QMutableListIterator::hasNext$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QObject::children$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QObjectData::dynamicMetaObject$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QObject::event$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QObject::eventFilter$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QObject::inherits$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QObject::isWidgetType$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QObject::parent$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QObject::qt_metacall$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QObject::qt_metacast$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QObject::receivers$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QObject::signalsBlocked$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QObject::thread$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QPainter::boundingRect$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QPainter::brush$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QPainter::device$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QPainter::font$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QPainter::pen$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QPaintEvent::rect$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QPaintEvent::region$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QPalette::base$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QPalette::brush$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QPalette::color$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QPalette::highlight$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QPalette::highlightedText$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QPalette::text$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QPalette::window$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QPersistentModelIndex::isValid$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QPixmapCache::find$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QPixmap::isNull$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QPixmap::rect$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QPixmap::size$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QPluginLoader::instance$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QPointer::data$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QPointer::isNull$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QPointF::rx$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QPoint::isNull$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QPoint::rx$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QPoint::ry$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QProcess::exitCode$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QProcess::exitStatus$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QProcess::state$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QProgressBar::value$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QProgressDialog::wasCanceled$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QPushButton::qt_metacall$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QPushButton::qt_metacast$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^qrand$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QRect::bottomLeft$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QRect::bottomRight$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QRect::center$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QRect::contains$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QRectF::bottomLeft$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QRectF::bottomRight$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QRectF::center$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QRectF::contains$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QRectF::intersects$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QRectF::isEmpty$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QRectF::isNull$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QRectF::isValid$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QRectF::normalized$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QRectF::size$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QRectF::topLeft$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QRectF::topRight$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QRectF::translated$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QRectF::x$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QRect::intersects$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QRect::isEmpty$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QRect::isNull$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QRect::isValid$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QRect::size$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QRect::topLeft$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QRect::topRight$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QRect::translated$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^qRed$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QRegExp::exactMatch$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QRegExp::isEmpty$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QRegExp::isValid$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QRegion::contains$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QRegion::isEmpty$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QResizeEvent::oldSize$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QResizeEvent::size$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QScopedPointer::data$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QSet::contains$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QSet::count$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QSet::isEmpty$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QSet::size$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QSettings::contains$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QSize::expandedTo$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QSizeF::toSize$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QSize::isEmpty$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QSize::isNull$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QSize::isValid$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QSizePolicy::hasHeightForWidth$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QSize::rheight$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QSize::rwidth$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QSortFilterProxyModel::lessThan$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QSortFilterProxyModel::qt_metacall$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QSortFilterProxyModel::qt_metacast$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QStackedWidget::count$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QStackedWidget::currentIndex$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QStackedWidget::currentWidget$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QStackedWidget::indexOf$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QStackedWidget::widget$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QStack::top$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QStandardItem::child$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QStandardItemModel::item$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QStandardItemModel::qt_metacall$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QStandardItemModel::qt_metacast$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QStandardItem::row$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QStaticStringData::data_ptr$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^qstrcmp$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QString::at$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QString::compare$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QString::contains$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QString::endsWith$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QString::indexOf$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QString::isEmpty$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QString::isNull$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QString::lastIndexOf$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QStringList::contains$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QString::localeAwareCompare$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QString::size$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QString::startsWith$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QStyledItemDelegate::qt_metacall$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QStyledItemDelegate::qt_metacast$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QTabBar::count$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QTableView::horizontalHeader$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QTableView::verticalHeader$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QTableWidget::horizontalHeaderItem$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QTableWidget::item$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QTableWidget::rowCount$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QTabWidget::count$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QTabWidget::currentWidget$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QTabWidget::indexOf$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QTabWidget::tabBar$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QTabWidget::widget$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QTest::qCompare$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QTest::qVerify$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QTextBlock::isValid$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QTextCodec::codecForMib$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QTextCursor::hasSelection$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QTextDocument::documentLayout$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QTextDocument::size$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QTextEdit::document$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QTextEdit::qt_metacall$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QTextEdit::qt_metacast$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QTextStream::atEnd$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QThread::currentThread$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QThread::isRunning$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QThread::qt_metacall$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QThread::qt_metacast$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QTime::fromString$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QTime::hour$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QTime::isValid$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QTime::minute$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QTime::msec$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QTime::msecsTo$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QTimerEvent::timerId$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QTimer::interval$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QTimer::isActive$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QTime::second$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QToolButton::qt_metacall$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QToolButton::qt_metacast$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QTreeView::header$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QTreeView::isExpanded$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QTreeView::qt_metacall$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QTreeView::qt_metacast$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QTreeWidget::headerItem$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QTreeWidgetItem::checkState$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QTreeWidgetItem::child$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QTreeWidgetItem::childCount$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QTreeWidgetItem::isExpanded$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QTreeWidgetItem::parent$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QTreeWidget::qt_metacall$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QTreeWidget::qt_metacast$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QTreeWidget::topLevelItemCount$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QtSharedPointer::Basic::data$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QUrl::isEmpty$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QUrl::isLocalFile$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QUrl::isRelative$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QUrl::isValid$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QUrl::port$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QUuid::createUuid$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QVariant::canConvert$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^qvariant_cast$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QVariant::isNull$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QVariant::isValid$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QVariant::toRect$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QVariant::toTime$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QVariant::type$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QVariant::typeName$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QVariant::userType$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QVector::at$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QVector::contains$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QVector::count$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QVector::empty$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QVector::end$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QVector::first$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QVector::indexOf$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QVector::isEmpty$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QVector::last$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QVector::size$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^qVersion$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QWeakPointer::data$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QWebView::page$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QWheelEvent::delta$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QWheelEvent::orientation$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QWheelEvent::pos$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QWidget::backgroundRole$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QWidget::contentsRect$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QWidget::effectiveWinId$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QWidget::event$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QWidget::font$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QWidget::foregroundRole$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QWidget::geometry$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QWidget::hasFocus$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QWidget::isActiveWindow$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QWidget::isEnabled$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QWidget::isFullScreen$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QWidget::isHidden$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QWidget::isMinimized$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QWidget::isVisible$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QWidget::isWindow$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QWidget::layout$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QWidget::layoutDirection$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QWidget::mapTo$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QWidget::mapToGlobal$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QWidget::minimumHeight$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QWidget::minimumSize$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QWidget::palette$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QWidget::parentWidget$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QWidget::qt_metacall$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QWidget::qt_metacast$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QWidget::size$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QWidget::sizeHint$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QWidget::sizePolicy$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QWidget::style$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QWidget::testAttribute$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QWidget::topLevelWidget$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QWidget::underMouse$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QWidget::window$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QX11Info::display$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QXmlStreamAttributes::hasAttribute$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QXmlStreamReader::atEnd$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QXmlStreamReader::columnNumber$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QXmlStreamReader::error$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QXmlStreamReader::hasError$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QXmlStreamReader::isEndElement$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QXmlStreamReader::isStartElement$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QXmlStreamReader::lineNumber$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^QXmlStreamReader::tokenType$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^RAND_status$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^rindex$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^rl_completion_matches$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^roundf$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^SDL_GetError$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^SDL_NumJoysticks$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^sigc::bind$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^sigc::mem_fun$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^sigismember$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^sk_num$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^snd_pcm_hw_params_sizeof$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^snd_strerror$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^sqlite3_column_name$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^sqlite3_column_text$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^sqlite3_errmsg$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^sqlite3_mprintf$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^SSL_CIPHER_get_name$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^SSL_CTX_check_private_key$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^SSL_get_current_cipher$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^SSL_get_peer_certificate$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^SSL_get_verify_result$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^SSL_pending$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^SSLv23_client_method$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::auto_ptr::get$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::back_inserter$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::basic_ifstream::is_open$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::basic_ios::bad$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::basic_ios::eof$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::basic_ios::fail$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::basic_ios::good$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::basic_istream::gcount$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::basic_ofstream::is_open$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::basic_string::at$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::basic_string::begin$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::basic_string::compare$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::basic_string::c_str$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::basic_string::empty$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::basic_string::end$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::basic_string::find$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::basic_string::find_first_not_of$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::basic_string::find_first_of$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::basic_string::_M_data$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::basic_string::rfind$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::basic_string::size$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::deque::back$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::deque::empty$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::deque::end$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::deque::front$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::deque::size$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::distance$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::find$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::find_if$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::inserter$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::list::begin$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::list::empty$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::list::end$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::list::front$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::list::size$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::lower_bound$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::make_pair$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::map::begin$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::map::count$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::map::empty$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::map::end$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::map::find$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::map::lower_bound$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::map::size$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::multimap::begin$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::multimap::end$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::multimap::equal_range$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::multimap::upper_bound$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::queue::empty$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::queue::front$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::reverse_iterator::base$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::set::begin$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::set::count$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::set::empty$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::set::end$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::setfill$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::set::find$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::setprecision$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::set::size$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::setw$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::stack::empty$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::stack::size$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::tr1::_Hashtable::begin$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::tr1::_Hashtable::end$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::tr1::_Hashtable::find$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::_Tree::_Parent$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::_Tree_val::_Right$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::type_info::name$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::upper_bound$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::vector::at$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::vector::back$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::vector::begin$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::vector::capacity$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::vector::empty$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::vector::end$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::vector::front$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^std.*::vector::size$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^strcasecmp$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^strcasestr$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^strchr$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^strcmp$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^strcoll$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^strlen$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^strncasecmp$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^strncmp$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^strpbrk$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^strrchr$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^strsignal$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^strspn$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^strstr$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^tgetnum$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^tgetstr$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^tgoto$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^toupper_GNU_extern_inline$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^ttyname$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^wcscmp$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^wxAppConsole::GetInstance$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^X509_get_ext$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^X509_get_ext_d2i$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^X509_get_subject_name$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^X509_NAME_get_entry$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^XDisplayName$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^XKeycodeToKeysym$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^xmlDocGetRootElement$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^XML_ErrorString$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^XML_GetCurrentColumnNumber$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^XML_GetCurrentLineNumber$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^XML_GetErrorCode$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^xmlStrcmp$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^xmlStrEqual$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^XPending$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^XRenderFindVisualFormat$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^XtWindow$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^XVisualIDFromVisual$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^_ZUt0_::isDestroyed$
  • RETURN_CHECKER_BUILT_IN_CHECKED_PURE_FUNCS += ^_ZUt12_::isDestroyed$
Tags

Specifies exceptions to the statistical analysis for Ignored Return Value. In particular, specifies:

Type Boost 'POSIX Extended Regular Expression'
Behavior If the name of a called function matches a RETURN_CHECKER_CHECKED_PURE_FUNCS regular expression and the return value from that function call is ignored on ALL paths, an Ignored Return Value warning will be issued (regardless of the settings of RETURN_CHECKER_CONFIDENCE and RETURN_CHECKER_RATIO).

If the Ignored Return Value warning class is disabled, such as with a WARNING_FILTER rule, this parameter has no effect.

Notes RETURN_CHECKER_IGNORED_FUNCS takes precedence over this parameter.

See Checked Functions for Ignored Return Value for information about the various configuration parameters available for specifying exceptions to the statistical analysis for Ignored Return Value.

If you are choosing between RETURN_CHECKER_CHECKED_PURE_FUNCS and RETURN_CHECKER_CHECKED_PURE_SOME_PATHS_FUNCS, note that the behavior of RETURN_CHECKER_CHECKED_PURE_SOME_PATHS_FUNCS is only likely to be preferred in very specific circumstances: usually where the return value of a pure function indicates the result of some earlier operation with side effects.

(No factory settings)

Tags

Specifies exceptions to the statistical analysis for Ignored Return Value. In particular, specifies:

Type Boost 'POSIX Extended Regular Expression'
Behavior If the name of a called function matches a RETURN_CHECKER_CHECKED_PURE_SOME_PATHS_FUNCS regular expression and the return value from that function call is ignored on ANY path, an Ignored Return Value warning will be issued (regardless of the settings of RETURN_CHECKER_CONFIDENCE and RETURN_CHECKER_RATIO).

For pure functions, this behavior is only likely to be preferred in very specific circumstances: usually where the return value of a pure function indicates the result of some earlier operation with side effects. In most other cases, use RETURN_CHECKER_CHECKED_PURE_FUNCS instead.

If the Ignored Return Value warning class is disabled, such as with a WARNING_FILTER rule, this parameter has no effect.

Notes RETURN_CHECKER_IGNORED_FUNCS takes precedence over this parameter.

See Checked Functions for Ignored Return Value for information about the various configuration parameters available for specifying exceptions to the statistical analysis for Ignored Return Value.

(No factory settings)

Tags

Used by Ignored Return Value to specify exceptions to the statistical analysis: functions whose return values can be ignored without triggering a warning.

Type Boost 'POSIX Extended Regular Expression'
Behavior If the name of a called function matches a RETURN_CHECKER_IGNORED_FUNCS regular expression and the return value from that function call is ignored, an Ignored Return Value warning will not be issued (regardless of the settings of RETURN_CHECKER_CONFIDENCE and RETURN_CHECKER_RATIO).

If the Ignored Return Value warning class is disabled, such as with a WARNING_FILTER rule, this parameter has no effect.

Notes This parameter replaces the csonar_ignore_return() function previously available in the Extension API.

RETURN_CHECKER_IGNORED_FUNCS takes precedence over all the parameters that ENFORCE return value use.

For example, if a function f() matches both a RETURN_CHECKER_IGNORED_FUNCS rule and a RETURN_CHECKER_CHECKED_FUNCS, Ignored Return Value warnings will NOT be issued when the return value from f() is ignored.

Factory Settings
  • RETURN_CHECKER_IGNORED_FUNCS += ^std::basic_ostream::operator<<$
  • RETURN_CHECKER_IGNORED_FUNCS += ^getchar$
Tags

Specifies the threshold for reporting Format String warnings.

Type Real number between 0 and 1 (inclusive)
Behavior For fixed k, if the proportion of call sites to a given function without a format string in the k'th argument position is less than this value, then CodeSonar will issue Format String warnings for those calls.

Parameter FORMAT_STRING_CHECKER_CONFIDENCE specifies the confidence interval for making this determination.

Notes Making this number larger will cause more warnings. A value of 0 will effectively disable statistical warnings.
Factory Setting
  • FORMAT_STRING_CHECKER_RATIO = 0.3
Tags

Specifies the confidence interval for statistically identifying functions that are usually passed a format string in the k'th parameter position for some k.

Type real number
Behavior Once all function calls in the program have been analyzed, there is a set of remaining candidate Format String warnings for which all of the following are true:

For each of these candidate warnings, let f() and k be the function and parameter position in question, and R be the fraction of all observed calls to f() that have a non-format string as the k'th argument. CodeSonar performs a one-sided Wilson test to determine whether R <= FORMAT_STRING_CHECKER_RATIO with at least the confidence specified this parameter. If so, the Format String warning is issued.

For example, with FORMAT_STRING_CHECKER_RATIO=0.1 and FORMAT_STRING_CHECKER_CONFIDENCE=1.96, CodeSonar will flag calls to f() with a non-format string as the first argument if, with 95% confidence, fewer than 10% of calls to f() in the universe have a non-format string as the first argument (that is, more than 90% of calls pass a format string in this position), on the assumption that the code base under analysis is a random sample of all code in the universe.

Notes Changing the value of this parameter can affect the number of warnings issued.
  • A larger value can decrease the number of warnings issued, because it imposes stricter conditions for determining that a function is 'usually' passed a format string in a particular parameter position.
  • Conversely, a smaller value can increase the number of warnings issued.
  • A value of 0 will cause FORMAT_STRING_CHECKER_RATIO to be respected precisely, even for small call populations.
  • Negative values are not useful or recommended.

For example, suppose we have the following.

  • Configuration settings for the relevant parameters are FORMAT_STRING_CHECKER_RATIO=0.1, FORMAT_STRING_CHECKER_CONFIDENCE=1
  • In analyzing calls for function myfunc(), CodeSonar has determined that there are 30 calls to myfunc() and that there is a non-format string argument in parameter position 3 in one of those calls (and a format string in that position for the other 29).
  • Once all function calls in the program have been analyzed, there is a candidate Format String warning representing the myfunc() call with non-format string in parameter position 3.

With these numbers, the one-sided Wilson test determines that the proportion of calls with non-format string is below 0.1 (FORMAT_STRING_CHECKER_RATIO) with 1 sigma of confidence (FORMAT_STRING_CHECKER_CONFIDENCE) and so the warning is issued.

However, if a second call to myfunc() also had a non-format string in position 3 (2/30 calls in total), the Wilson test would determine that the proportion of calls with non-format string is NOT below 0.1 with 1 sigma of confidence, and Format String warnings would not be issued for myfunc() position 3. Note that there may still be Format String warnings issued for calls to myfunc() with non-format strings in other argument positions, since each function-position pair is considered independently.

Factory Setting
  • FORMAT_STRING_CHECKER_CONFIDENCE = 1
Tags

Specifies the confidence interval for statistically determining that a candidate Format String warning can be discarded immediately (that is, before all function calls have been analyzed).

Type real number (indicating a number of sigmas)
Behavior To produce Format String warnings, CodeSonar analyzes the function calls in the program. Each time it encounters a call to some function f() where there is a non-format string in some parameter position k, it accumulates a candidate warning. This candidate is discarded immediately if a one-sided Wilson test determines that, for all calls to f() encountered so far, the proportion with a non-format string in position k is greater than FORMAT_STRING_CHECKER_RATIO with at least this many sigmas of confidence.
Notes The discard test is performed based on the function calls seen up to that point in the analysis (and therefore is based on partial information), so it is possible for some or all Format String warnings for a given function-position pair f(), k to be discarded even if the overall proportion of f() calls in the program with non-format string in position k does not exceed FORMAT_STRING_CHECKER_RATIO.

A smaller value increases the likelihood of false negatives, increases nondeterminism during parallel analysis, and decreases disk space consumption.

Candidate warnings are also discarded immediately if the function-position pair matches a FORMAT_STRING_CHECKER_IGNORED_FUNCS rule.

Factory Setting
  • FORMAT_STRING_CHECKER_DISCARD_CONFIDENCE = 4
Tags

Specifies function/argument combinations for Format String and Format String Type Error to check.

Type A string of the form
   <fmt_pos>, <values_pos>, <family>, <function>

where:

  • <fmt_pos> is the position of the format string argument (counting from 1).
  • <value_pos> is the position of the first "value" argument (counting from 1).
  • <family> is the family of the function: one of { printf, wprintf, vprintf, vwprintf, printf_p, vprintf_p, wprintf_p, vwprintf_p, scanf, vscanf, wscanf, vwscanf, other }.
  • <function> is the name of the function.
Behavior Calling a function whose name matches <function> without a format string in the <fmt_pos>'th parameter position will always trigger a Format String warning, regardless of the settings of FORMAT_STRING_CHECKER_CONFIDENCE and FORMAT_STRING_CHECKER_RATIO.

If <family> is printf or wprintf, the format string contents are checked against the function argument types. If something does not match, a Format String Type Error warning is issued.

  • All other families have no effect at this time.
  • Use the other family for functions that do not fit in any of the other families.
Factory Settings
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 2, printf, __eprintf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 2, printf, _cprintf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 2, wprintf, _cwprintf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 3, printf, _cprintf_l
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 3, wprintf, _cwprintf_l
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 2, printf, _cprintf_s
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 2, wprintf, _cwprintf_s
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 3, printf, _cprintf_s_l
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 3, wprintf, _cwprintf_s_l
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 3, printf, fprintf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 3, wprintf, fwprintf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 4, printf, _fprintf_l
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 4, wprintf, _fwprintf_l
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 3, printf, fprintf_s
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 3, wprintf, fwprintf_s
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 4, printf, _fprintf_s_l
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 4, wprintf, _fwprintf_s_l
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 2, printf, printf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 2, wprintf, wprintf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 3, printf, _printf_l
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 3, wprintf, _wprintf_l
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 2, printf, printf_s
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 2, wprintf, wprintf_s
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 3, printf, _printf_s_l
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 3, wprintf, _wprintf_s_l
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 2, printf, _scprintf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 2, wprintf, _scwprintf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 3, printf, _scprintf_l
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 3, wprintf, _scwprintf_l
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 3, 4, printf, snprintf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 3, 4, printf, _snprintf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 3, 4, wprintf, _snwprintf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 3, 5, printf, _snprintf_l
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 3, 5, wprintf, _snwprintf_l
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 4, 5, printf, _snprintf_s
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 4, 5, wprintf, _snwprintf_s
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 4, 6, printf, _snprintf_s_l
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 4, 6, wprintf, _snwprintf_s_l
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 3, printf, sprintf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 3, 4, wprintf, swprintf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 4, printf, _sprintf_l
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 3, 5, wprintf, _swprintf_l
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 4, wprintf, __swprintf_l
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 3, 4, printf, sprintf_s
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 3, 4, wprintf, swprintf_s
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 3, 5, printf, _sprintf_s_l
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 3, 5, wprintf, _swprintf_s_l
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 2, vprintf, _vcprintf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 2, vwprintf, _vcwprintf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 3, vprintf, _vcprintf_l
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 3, vwprintf, _vcwprintf_l
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 2, vprintf, _vcprintf_s
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 2, vwprintf, _vcwprintf_s
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 3, vprintf, _vcprintf_s_l
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 3, vwprintf, _vcwprintf_s_l
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 3, vprintf, vfprintf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 3, vwprintf, vfwprintf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 4, vprintf, _vfprintf_l
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 4, vwprintf, _vfwprintf_l
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 3, vprintf, vfprintf_s
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 3, vwprintf, vfwprintf_s
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 4, vprintf, _vfprintf_s_l
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 4, vwprintf, _vfwprintf_s_l
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 2, vprintf, vprintf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 2, vwprintf, vwprintf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 3, vprintf, _vprintf_l
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 3, vwprintf, _vwprintf_l
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 2, vprintf, vprintf_s
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 2, vwprintf, vwprintf_s
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 3, vprintf, _vprintf_s_l
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 3, vwprintf, _vwprintf_s_l
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 2, vprintf, _vscprintf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 2, vwprintf, _vscwprintf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 3, vprintf, _vscprintf_l
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 3, vwprintf, _vscwprintf_l
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 3, 4, vprintf, vsnprintf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 3, 4, vprintf, _vsnprintf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 3, 4, vwprintf, _vsnwprintf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 3, 5, vprintf, _vsnprintf_l
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 3, 5, vwprintf, _vsnwprintf_l
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 4, 5, printf, vsnprintf_s
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 4, 5, printf, _vsnprintf_s
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 4, 5, wprintf, _vsnwprintf_s
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 4, 6, printf, _vsnprintf_s_l
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 4, 6, wprintf, _vsnwprintf_s_l
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 3, vprintf, vsprintf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 3, 4, vwprintf, vswprintf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 4, vprintf, _vsprintf_l
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 3, 5, vwprintf, _vswprintf_l
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 4, vwprintf, __vswprintf_l
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 3, 4, vprintf, vsprintf_s
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 3, 4, vwprintf, vswprintf_s
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 3, 5, vprintf, _vsprintf_s_l
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 3, 5, vwprintf, _vswprintf_s_l
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 3, 4, wprintf, wnsprintfA
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 3, 4, wprintf, wnsprintfW
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 3, 4, wprintf, wnsprintf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 3, wprintf, wsprintfA
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 3, wprintf, wsprintfW
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 3, wprintf, wsprintf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 3, 4, vwprintf, wvnsprintfA
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 3, 4, vwprintf, wvnsprintfW
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 3, 4, vwprintf, wvnsprintf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 3, vwprintf, wvsprintfA
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 3, vwprintf, wvsprintfW
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 3, vwprintf, wvsprintf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 3, vprintf, vasprintf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 3, printf, __asprintf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 3, printf, asprintf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 3, vprintf, vdprintf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 3, printf, dprintf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 3, vprintf, obstack_vprintf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 3, printf, obstack_printf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 2, scanf, __isoc99__cscanf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 2, scanf, __isoc23__cscanf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 2, scanf, _cscanf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 3, wscanf, __isoc99_fwscanf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 3, wscanf, __isoc23_fwscanf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 3, wscanf, fwscanf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 3, scanf, __isoc99_fscanf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 3, scanf, __isoc23_fscanf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 3, scanf, fscanf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 3, wscanf, __isoc99_swscanf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 3, wscanf, __isoc23_swscanf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 3, wscanf, swscanf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 3, scanf, __isoc99_sscanf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 3, scanf, __isoc23_sscanf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 3, scanf, sscanf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 3, scanf, __isoc99_fscanf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 3, scanf, __isoc23_fscanf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 3, scanf, fscanf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 3, vscanf, __isoc99_vsscanf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 3, vscanf, __isoc23_vsscanf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 3, vscanf, vsscanf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 3, vscanf, __isoc99_vfscanf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 3, vscanf, __isoc23_vfscanf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 3, vscanf, vfscanf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 2, scanf, __isoc99_scanf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 2, scanf, __isoc23_scanf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 2, scanf, scanf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 2, vscanf, __isoc99_vscanf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 2, vscanf, __isoc23_vscanf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 2, vscanf, vscanf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 2, wscanf, __isoc99_wscanf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 2, wscanf, __isoc23_wscanf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 2, wscanf, wscanf
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 3, 4, printf, StringCchPrintfA
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 3, 4, wprintf, StringCchPrintfW
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 3, printf, syslog
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 2, 3, vprintf, vsyslog
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 2, printf_p, CHString::Format
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 2, vprintf_p, CHString::FormatV
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 2, printf_p, CString::Format
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 2, vprintf_p, CString::FormatV
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 2, wprintf_p, CHString::FormatMessageW
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 2, vprintf_p, CString::FormatMessageV
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 1, 2, printf, DbgPrint
  • FORMAT_STRING_CHECKER_CHECKED_FUNCS += 3, 4, printf, DbgPrintEx
Tags

Used by Format String and Format String Type Error to specify function/argument combinations that the analysis will NOT check.

Type A string of the form
   <pos>, <regex>

where:

Behavior For Format String, this parameter specifies exceptions to both the statistical analysis and the individual checks specified by FORMAT_STRING_CHECKER_CHECKED_FUNCS. Calling a function whose name matches <regex> without a format string in the <pos>'th parameter position will not trigger a Format String warning, regardless of the settings of FORMAT_STRING_CHECKER_CONFIDENCE, FORMAT_STRING_CHECKER_RATIO, and FORMAT_STRING_CHECKER_CHECKED_FUNCS.

For Format String Type Error, this parameter specifies exceptions to the individual checks specified by FORMAT_STRING_CHECKER_CHECKED_FUNCS. Calling a function whose name matches <regex> will not trigger a Format String Type Error warning, regardless of the setting of FORMAT_STRING_CHECKER_CHECKED_FUNCS. The value of the <pos> argument has no effect on this determination.

If both Format String and Format String Type Error are disabled, such as with a WARNING_FILTER rule, this parameter has no effect.

Notes This parameter replaces the csonar_ignore_format_string() function previously available in the Extension API.
Factory Settings
  • FORMAT_STRING_CHECKER_IGNORED_FUNCS += 3, ^strftime$
  • FORMAT_STRING_CHECKER_IGNORED_FUNCS += 1, ::basic_string::
  • FORMAT_STRING_CHECKER_IGNORED_FUNCS += 2, ::basic_string::
  • FORMAT_STRING_CHECKER_IGNORED_FUNCS += 3, ::basic_string::
  • FORMAT_STRING_CHECKER_IGNORED_FUNCS += 4, ::basic_string::
  • FORMAT_STRING_CHECKER_IGNORED_FUNCS += 1, ::basic_string_view::
  • FORMAT_STRING_CHECKER_IGNORED_FUNCS += 2, ::basic_string_view::
Tags

Specifies a function/argument combination for functions that pass data over trust boundaries.

Type A string of the form
  <pos>, <function>

where:

  • <pos> is an argument position (counting from 1)
  • <function> is the name of the function
Behavior A Padding Passed Across a Trust Boundary warning warning will be triggered when a function whose name (as given by cs_pdg_procedure_name()) matches <function> is called with a reference containing padded bits in the <pos>'th parameter position.
Notes Examples of trust boundaries include kernel space -> user space, memory -> socket, and memory -> file.
Factory Settings
  • PASS_OVER_TRUST_BOUNDARY_CHECKED_FUNCS = 2, copy_to_user
  • PASS_OVER_TRUST_BOUNDARY_CHECKED_FUNCS += 1, copyout_nofault
  • PASS_OVER_TRUST_BOUNDARY_CHECKED_FUNCS += 1, copyout
  • PASS_OVER_TRUST_BOUNDARY_CHECKED_FUNCS += 2, write
  • PASS_OVER_TRUST_BOUNDARY_CHECKED_FUNCS += 2, pwrite
  • PASS_OVER_TRUST_BOUNDARY_CHECKED_FUNCS += 1, fwrite
  • PASS_OVER_TRUST_BOUNDARY_CHECKED_FUNCS += 2, writev
  • PASS_OVER_TRUST_BOUNDARY_CHECKED_FUNCS += 2, pwritev
  • PASS_OVER_TRUST_BOUNDARY_CHECKED_FUNCS += 2, pwritev2
  • PASS_OVER_TRUST_BOUNDARY_CHECKED_FUNCS += 2, send
  • PASS_OVER_TRUST_BOUNDARY_CHECKED_FUNCS += 2, sendto
  • PASS_OVER_TRUST_BOUNDARY_CHECKED_FUNCS += 2, WriteFile
  • PASS_OVER_TRUST_BOUNDARY_CHECKED_FUNCS += 2, WriteFileEx
  • PASS_OVER_TRUST_BOUNDARY_CHECKED_FUNCS += 2, WriteFileGather
Tags

Used by Inappropriate Call Outside Loop to specifie functions whose calls should be enclosed in a loop.

Type string (representing a function name)
Behavior A call to any function whose name (as given by cs_pdg_procedure_name()) matches one of these names will trigger a Inappropriate Call Outside Loop warning if it is not enclosed in a loop.
Factory Settings
  • LOOP_ONLY_FUNCS = std::condition_variable::wait(std::unique_lock<std::mutex> &)
  • LOOP_ONLY_FUNCS += std::cv_status std::condition_variable::wait_for<long, std::ratio<(long)1, (long)1000>>(std::unique_lock<std::mutex> &, const std::chrono::duration<T1, T2> &)
  • LOOP_ONLY_FUNCS += std::cv_status std::condition_variable::wait_until<std::chrono::duration<long, std::ratio<(long)1, (long)1000000000>>>(std::unique_lock<std::mutex> &, const std::chrono::time_point<std::chrono::_V2::system_clock, T1> &)
  • LOOP_ONLY_FUNCS += cnd_wait
  • LOOP_ONLY_FUNCS += cnd_timedwait
  • LOOP_ONLY_FUNCS += pthread_cond_wait
  • LOOP_ONLY_FUNCS += pthread_cond_timedwait
Tags

Specifies whether CodeSonar should assume every thread entry point is used to create multiple threads that run concurrently.

Type { Yes, No }
Behavior
  • Yes : CodeSonar will report Data Race warnings in which both threads start at the same entry procedure/method, as well as warnings in which the threads start at different points.
  • No : CodeSonar will only report Data Race warnings in which the threads start at different points.
Notes Setting this to Yes can result in a large number of false positive Data Race warnings, especially for applications that use many "singleton threads".
Factory Setting
  • MULTIPLE_THREADS_PER_ENTRY_PROCEDURE = No
Tags

Sometimes certain variables or procedures should be ignored for the purpose of data race detection. The classic example is errno, which appears to be a normal global variable, but is made thread-local by all modern C/C++ implementations. DATA_RACE_IGNORE_NAMES provides a way to extend the set of variables and procedures that the data race analysis should ignore.

Type Boost 'POSIX Extended Regular Expression'
Behavior The data race analysis checks all global variables and procedure names to see if they match one of the specified patterns. No data races will be reported on accesses to matching variables or inside of matching procedures. The general analysis engine will still track matching variables and procedures as usual.
Notes Example rules:
    DATA_RACE_IGNORE_NAMES += ^errno$
    DATA_RACE_IGNORE_NAMES += ^run$
Tags

Sometimes the analysis engine cannot find all the thread entry procedures/methods in a program. The most common cause of missing entry points is the use of closure-like wrappers around the "true" thread entry procedures. This parameter can be used to force the analysis engine to treat specific procedures as thread entry points.

Type Boost 'POSIX Extended Regular Expression'
Behavior The analysis engine checks all procedures and methods to see if they match one of the specified patterns. Matching procedures are considered thread entry points, even if CodeSonar's regular thread entry discovery mechanisms cannot prove that.
Notes Example rules:
    FORCE_THREAD_ENTRY_NAMES += ^f1$
    FORCE_THREAD_ENTRY_NAMES += ^handler$

Specifying a thread entry point with FORCE_THREAD_ENTRY_NAMES is not sufficient to ensure that CodeSonar will carry out Data Race checking. See Data Race : Note for details.

Note that this parameter does not affect checks for Thread Entry Point, which only reports calls to functions whose library models identify them as thread entry points. If you want to see which functions have been identified as entry points due to FORCE_THREAD_ENTRY_NAMES or THREAD_ENTRY_METHOD_NAMES rules, inspect the Analysis Log for lines of the following form.

   Identified (initial) thread entry function: <name_of_function>
Tags

For programs that use an object-oriented multithreading API. Specifies which method on an object should be considered the "entry method" when the object (or a reference to it) is specified as a thread entry point.

Type Boost 'POSIX Extended Regular Expression'
Behavior If an object (or object reference) is used in a location where a thread entry point procedure is expected, CodeSonar will scan the object's class hierarchy for a method whose name matches one of the specified patterns.
  • If such a method is found, it will be used as a thread entry procedure.
  • Otherwise, no thread entry point is discovered. If the thread contributed to a data race, the analysis will not be able to detect that race.
Notes CodeSonar uses THREAD_ENTRY_METHOD_NAMES settings to determine which method on an object should be considered the "entry method" when the object is specified as a thread entry point. This parameter is only suitable for use with object-oriented multithreading APIs.

To specify that an arbitrary function provides a thread entry point, you will need to write a model for that function. See the manual section on concurrency models for details.

Example rule:

    THREAD_ENTRY_METHOD_NAMES += ^Main$

Specifying a thread entry point with THREAD_ENTRY_METHOD_NAMES is not sufficient to ensure that CodeSonar will carry out Data Race checking. See Data Race : Note for details.

Note that an object with a method matching one or more THREAD_ENTRY_METHOD_NAMES rules will only trigger Thread Entry Point warnings if that method also has a library model that identifies it as a thread entry point.

If you want to see which functions have been identified as entry points due to FORCE_THREAD_ENTRY_NAMES or THREAD_ENTRY_METHOD_NAMES rules, inspect the Analysis Log for lines of the following form.

      Identified (initial) thread entry function: <name_of_function> 
Factory Setting
  • THREAD_ENTRY_METHOD_NAMES += ^run$
Tags
  • Designates Specially-Treated Functions
  • Used by Data Race

Used by the lock-related checks to identify the procedures used to open named semaphores

Type Boost 'POSIX Extended Regular Expression'
Behavior The analysis will treat all functions whose names match patterns in SEMOPEN_FUNCTIONS as semaphore-opening functions. The analysis assumes that the first parameter is a string that represents the name of the semaphore.
Notes Functions that open named semaphores are expected to return the same semaphore address each time they are successfully called with the same name, until that semaphore is unlinked or closed. Identifying a function f() with SEMOPEN_FUNCTIONS ensures that the CodeSonar analysis correctly associates these properties with f().

For more information, see the manual section on concurrency models.

Example rules:

   SEMOPEN_FUNCTIONS += ^semOpen$
   SEMOPEN_FUNCTIONS += ^sem_open$
Tags
  • Designates Specially-Treated Functions

Used by the CONCURRENCY.LOCK.* checks to identify functions that should be treated as if they directly acquire locks.

Type Boost 'POSIX Extended Regular Expression'
Behavior The analysis will treat all functions whose names match patterns in LOCK_FUNCTIONS as lock-acquiring functions. The analysis assumes that the first parameter is a pointer to the lock object.
Notes Use this parameter to identify wrapper functions for lock acquisition. This allows lock acquire/release checks to issue warnings in code that uses these wrappers, instead of only inside the bodies of the wrappers themselves.

For example, suppose a project uses wrapper mylock():

   void mylock(GMutex *m){
      /* ... */
      g_mutex_lock(m);
      return;
   }

   void nounlock(GMutex *m){
      mylock(m);
   }

If we set LOCK_FUNCTIONS += ^mylock$, the analysis will issue a Missing Lock Release in the body of function nounlock().

If we do not specify that mylock is a lock function with LOCK_FUNCTIONS, the analysis will not issue a Missing Lock Release warning in the body of function nounlock(), but WILL issue a Missing Lock Release warning in the body of mylock().

Condition-wait functions should be identified with both LOCK_FUNCTIONS and UNLOCK_FUNCTIONS, because these functions release and subsequently reacquire the specified lock. For example:

    LOCK_FUNCTIONS += ^my_cond_wait$
    UNLOCK_FUNCTIONS += ^my_cond_wait$

Functions that have library models identifying them as lock acquirers do not need to be specified with LOCK_FUNCTIONS: they will automatically be treated correctly.

For more information, see the manual section on concurrency models.

Example rule:

    LOCK_FUNCTIONS += ^my_lock_wrapper$
Tags

Used by the CONCURRENCY.LOCK.* checks to identify functions that should be treated as if they directly release locks.

Type Boost 'POSIX Extended Regular Expression'
Behavior The analysis will treat all functions whose names match patterns in UNLOCK_FUNCTIONS as lock-releasing functions. The analysis assumes that the first parameter is a pointer to the lock object.
Notes Use this parameter to identify wrapper functions for lock release. This allows lock acquire/release checks to issue warnings in code that uses these wrappers, instead of only inside the bodies of the wrappers themselves.

For example, suppose a project uses wrapper myunlock():

   void myunlock(GMutex *m){
      g_mutex_unlock(m);
      /* ... */
      return;
   }

   void nolock(GMutex *m){
      myunlock(m);
   }

If we set UNLOCK_FUNCTIONS += ^myunlock$, the analysis will issue a Missing Lock Acquisition warning in the body of function nolock().

If we do not use LOCK_FUNCTIONS to specify that myunlock is a unlock function, the analysis will not issue a Missing Lock Acquisition warning in the body of function nolock(), but WILL issue a Missing Lock Acquisition warning in the body of myunlock().

Condition-wait functions should be identified with both LOCK_FUNCTIONS and UNLOCK_FUNCTIONS, because these functions release and subsequently reacquire the specified lock. For example:

    LOCK_FUNCTIONS += ^my_cond_wait$
    UNLOCK_FUNCTIONS += ^my_cond_wait$

Functions that have library models identifying them as lock releasers do not need to be specified with UNLOCK_FUNCTIONS: they will automatically be treated correctly.

For more information, see the manual section on concurrency models.

Example rule:

 UNLOCK_FUNCTIONS += ^my_unlock_wrapper$
Tags

Bounds the number of potential lock-related warnings that CodeSonar will consider during the analysis of any particular function.

Type non-negative integer
Behavior If during the analysis of a procedure, more than this many potential lock-related warnings are identified, some of the potential warnings will be dropped. Raising this may result in a more thorough analysis, but will increase the time and memory used by the analysis.
Notes This only affects the analysis for CONCURRENCY.LOCK.* checks. It is quite unusual for this limit to be reached. However, if it is set to a very high number (for example, more than 200,000) CodeSonar may behave unpredictably or crash.
Factory Setting
  • LOCK_MAX_PENDING_WARNINGS_PER_PROCEDURE = 1000

Specifies the extent to which the CodeSonar analysis will expand call sites for full analysis instead of using summaries to approximate the behavior of the call.

Type {None, Some, More, Most}
Behavior For a particular warning, a call site will only be expanded if it is on the warning path and is especially relevant.

A higher value for this preference can reduce the number of false positive results, but will make the analysis take longer.

Notes If a call site on some warning path is expanded in the CodeSonar analysis, the corresponding HTML warning report will allow navigation into the call site. This provides a more complete depiction of program behavior, but increases the size of the output.
Factory Setting
  • CALL_SITE_EXPANSIONS = Some
Tags
  • Analysis resource/effort limit

Places a bound on the nesting depth of call site expansions (nested "+" widgets in warning reports).

Type integer
Notes A limit that is too high may cause CodeSonar to have a stack overflow. The factory setting (30) is only encountered in pathological cases: only one program capable of inducing a stack overflow has ever been found in the wild.
Factory Setting
  • CALL_SITE_EXPANSION_BOUND = 30
Tags
  • Analysis resource/effort limit

Determines whether HTML warning reports may abridge procedure listings in order to show only the most relevant parts.

Type { Yes, No }
Behavior
  • No: if a path includes any part of a procedure, the warning report will show all of the procedure.
Factory Setting
  • ABRIDGE_HTML = Yes
Tags
  • Hub and Web GUI

Used by the Function Too Long check: specifies the maximum allowable length of a function.

Type non-negative integer
Behavior CodeSonar will issue a Function Too Long warning for functions whose Lines With Code exceeds this value.
Notes Note that the Function Too Long check is disabled by default: use a WARNING_FILTER rule to enable it.
Factory Setting
  • MAX_FUNCTION_LENGTH = 60
Tags

Specifies the maximum allowable numbers of parameters a function can have to comply with the Too Many Parameters check.

Type non-negative integer
Behavior CodeSonar will emit a Too Many Parameters warning for functions that have more parameters than specified here.
Notes Note that the Too Many Parameters check is disabled by default: use a WARNING_FILTER rule to enable it.
Factory Setting
  • MAX_NUM_PARAMS = 6
Tags

Used by the Not Enough Assertions check: specifies the minimum number of assertions each function must contain.

Type non-negative integer
Behavior CodeSonar will emit a Not Enough Assertions warning when it detects a function with fewer calls to a recognizable assert function, provided that the function length exceeds the MIN_ASSERTS_FUNCTION_LENGTH threshold.
Notes Note that the Not Enough Assertions check is disabled by default: use a WARNING_FILTER rule to enable it.
Factory Setting
  • MIN_ASSERTS = 2
Tags

Used by the Not Enough Assertions check: specifies the minimum length a function must have to be subject to the check.

Type non-negative integer
Behavior CodeSonar will only check the number of assertions in functions whose Lines With Code exceeds this value.
Notes Note that the Not Enough Assertions check is disabled by default: use a WARNING_FILTER rule to enable it.
Factory Setting
  • MIN_ASSERTS_FUNCTION_LENGTH = 0
Tags

Used by the Too Many Dereferences check: specifies the maximum number of dereferencing levels permitted on a single item.

Type non-negative integer
Behavior If an item is dereferenced by more levels than allowed by this parameter, CodeSonar will issue a Too Many Dereferences warning.
Notes For example,
  • "*x" has a maximum of one dereference,
  • "*x = *y" also has a maximum of one dereference,
  • "*x[0] = *y" has a maximum of two dereferences.

Note that the Too Many Dereferences check is disabled by default: use a WARNING_FILTER rule to enable it.

Factory Setting
  • MAX_PERMITTED_DEREFS = 1
Tags

Specifies the maximum levels of indirection allowed in a declaration to comply with the Too Much Indirection in Declaration check.

Type non-negative integer
Behavior CodeSonar will emit a Too Much Indirection in Declaration warning when it detects a number of indirections greater than this setting.
Notes For example, the following declaration has two levels of indirection:
    int **x

Note that the Too Much Indirection in Declaration check is disabled by default: use a WARNING_FILTER rule to enable it.

Factory Setting
  • MAX_PERMITTED_INDIRECTION_IN_DECLARATION = 2
Tags

Determines how the analysis will report variables that can be local static but are declared with file or global scope.

Type { Yes, No }
Behavior
  • Yes : variables that are global or file static but could be local static will trigger Scope Could Be Local Static warnings.
  • No : variables that are global but could be local static will trigger Scope Could Be File Static warnings; variables that are file static but could be local static do not trigger any scope warning.
Notes Setting to "No" means that no warnings of class Scope Could Be Local Static will be issued by the analysis.

The Scope Could Be File Static check and the Scope Could Be Local Static check are disabled by default: use WARNING_FILTER rules to enable them.

Tags

Used by the Pointer Type Inside Typedef check: specifies types whose typedefs are allowed to contain pointer types.

Type Boost 'POSIX Extended Regular Expression'
Behavior Pointer Type Inside Typedef warnings will not be issued for typedefs whose type name matches a regular expression in the PTR_INSIDE_TYPEDEF_EXCEPTION set, even if the typedef contains a pointer type.
Notes For example,
   PTR_INSIDE_TYPEDEF_EXCEPTION += _ptr$

specifies that typedefs whose name end with _ptr are allowed to have pointers in their definitions.

Note that the Pointer Type Inside Typedef check is disabled by default: use a WARNING_FILTER rule to enable it.

Factory Setting
  • PTR_INSIDE_TYPEDEF_EXCEPTION += _ptr$
Tags

Used by the Recursion, Dynamic Allocation After Initialization, and Dynamic Thread Creation checks to compute an upper bound on the number of procedures the depth-first search in these checks can visit in an incremental run.

Type
  • DFS_MAX_VISITED_COEFFICIENT : non-negative integer
  • DFS_MAX_VISITED_CONSTANT : non-negative integer
Behavior The depth-first search used by the Recursion, Dynamic Allocation After Initialization, and Dynamic Thread Creation checks is bounded on incremental analyses in proportion to the total number of procedures changed since the last analysis.

Specifically, the depth-first search will terminate after visiting a number of procedures equal to:

   DFS_MAX_VISITED_COEFFICIENT * (# of procedures changed) + DFS_MAX_VISITED_CONSTANT
Notes Note that the Recursion, Dynamic Allocation After Initialization, and Dynamic Thread Creation checks are disabled by default: use WARNING_FILTER rules to enable them.
Factory Settings
  • DFS_MAX_VISITED_COEFFICIENT = 8
  • DFS_MAX_VISITED_CONSTANT = 128
Tags

Used by the Recursion, Dynamic Allocation After Initialization, and Dynamic Thread Creation checks: specifies a bound on the number of procedures visited by a single local depth-first search

Type non-negative integer
Behavior In incremental analyses, the depth-first search used by the Recursion, Dynamic Allocation After Initialization, and Dynamic Thread Creation checks descends from each procedure that changed since the last analysis. Each local depth-first search will visit at most DFS_MAX_LOCAL_VISITED procedures.

This works in conjunction with the DFS_MAX_VISITED_COEFFICIENT and DFS_MAX_VISITED_CONSTANT configuration options to bound the depth-first search: it prevents a single depth-first search from hitting the global bound and starving any subsequent searches.

Notes Note that the Recursion, Dynamic Allocation After Initialization, and Dynamic Thread Creation checks are disabled by default: use WARNING_FILTER rules to enable them.
Factory Setting
  • DFS_MAX_LOCAL_VISITED = 16
Tags

Used by the Data Race analysis to limit the amount of effort spent searching for a feasible path in a particular set of potential paths.

Type non-negative integer
Behavior Specifies the maximum number of control flow branches to be explored in the search for a feasible path.
Notes The data race analysis builds up large sets of program paths that could be involved in data races. After the main code analysis completes, the data race detector must search through its (potentially quite large) sets of paths to find pairs of paths that represent a real race. Searching through these sets can be quite time consuming, so DATA_RACE_PATH_FINDING_EFFORT gives a mechanism to limit the amount of time spent on the search.
Factory Setting
  • DATA_RACE_PATH_FINDING_EFFORT = 10000
Tags

Controls how many related Data Race warnings get reported. Can greatly influence runtime.

Type non-negative integer
Behavior Given DATA_RACE_MAX_RELATED_PATHS=N:
  • The CodeSonar will consider N paths to accesses of a particular memory location for each thread entry point.
  • Because a Data Race warning involves two threads, the result is that up to N^2 warnings can be reported per (memory_location, thread_entry_A, access_mode_A, thread_entry_B, access_mode_B) tuple.

Where

  • A memory location might be a global variable.
  • The functions treated as thread entry points include program entry functions main() and WinMain(), library functions that are modeled as thread entry points or signal handler entry points, functions specified with FORCE_THREAD_ENTRY_NAMES, and object-oriented API methods specified with THREAD_ENTRY_METHOD_NAMES. For more details, see Concurrency Models: Thread Entry Points.
  • Access mode is either read or write.

A setting of 0 (zero) will be treated the same as a setting of 1 (one).

Notes The related warnings that are reported will differ only by call stack. Call stacks that contain the same functions but different return addresses are considered different.

The related warnings are often, but not always, in the same warning group. To see multiple instances of the same warning group in the CodeSonar Web GUI, set Visible Warnings to "all".

The analysis may become quite time-intensive for values other than 1.

You may need to adjust DATA_RACE_PATH_FINDING_EFFORT, TIME_LIMIT_DATA_RACE_PATH_SEARCH, and TIME_LIMIT_DATA_RACE_PATH_SEARCH_PER_PROCEDURE to fully realize the additional warnings.

Factory Setting
  • DATA_RACE_MAX_RELATED_PATHS = 1
Tags

Used by the Excessive Stack Depth check: specifies the maximum allowable depth of the call stack, in bytes.

Type integer
Behavior If this threshold is exceeded, CodeSonar will issue a Excessive Stack Depth warning.
Notes Note that the Excessive Stack Depth check is disabled by default: use a WARNING_FILTER rule to enable it.
Factory Setting
  • STACK_DEPTH_THRESHOLD = 65536
Tags

Used by the Excessive Stack Depth check: estimates the activation record size for undefined functions.

Type integer
Behavior CodeSonar will treat calls to undefined functions as contributing this many bytes to the call stack depth.
Notes Note that the Excessive Stack Depth check is disabled by default: use a WARNING_FILTER rule to enable it.
Factory Setting
  • STACK_DEPTH_UNDEFINED_FUNCTION_SIZE = 128
Tags

Used by the Excessive Stack Depth check: estimates the word size to which a compiler will pad individual variables.

Type integer
Behavior CodeSonar will treat variables as being padded to a multiple of this many bytes when determining their contribution to the call stack depth.

For example, on a 4-byte word-aligned system, four bytes will be allocated by the declaration 'char c', even though only one byte is used.

Notes Note that the Excessive Stack Depth check is disabled by default: use a WARNING_FILTER rule to enable it.
Factory Setting
  • STACK_DEPTH_COMPILER_PADDING = 4
Tags

Used by the Excessive Stack Depth check: estimates the the size of the constant elements the compiler pushes on the call stack for each activation record.

Type integer
Behavior CodeSonar will treat every activation record pushed on the call stack as if it contributes this many bytes of constant elements to the call stack depth.

For example, the return address is stored on the call stack for every activation record.

Notes Note that the Excessive Stack Depth check is disabled by default: use a WARNING_FILTER rule to enable it.
Factory Setting
  • STACK_DEPTH_ACTIVATION_RECORD_CONSTANTS = 12
Tags

Used by Excessive Stack Depth to specify the entry point of a module and the maximum allowable depth of the call stack of that module.

Type A string of the form
   <threshold>, <regex>

where:

Behavior If the stack depth of the module entry point exceeds the module's threshold, CodeSonar will issue a Excessive Stack Depth warning.
Notes If any STACK_DEPTH_MODULES are specified - even if none of them match any function - CodeSonar won't check for project-wide stack depth violations.
Tags

Used by Excessive Stack Depth to specify functions whose callees should be ignored when computing the stack depth of the function.

Type string
Behavior If the name of a function equals to the string given, the stack depth of the function will only be computed from its locals.
Tags

Specifies whether or not undefined functions should be considered as having side effects by the Condition Contains Side Effects check.

Type { Yes, No }
Factory Setting
  • UNDEFINED_FUNCTIONS_HAVE_SIDE_EFFECTS = Yes
Tags

Specifies whether or not CodeSonar will output an XML file showing the variables modified by each procedure.

Type { Yes, No }
Behavior
  • Yes : the analysis will output an XML file showing the variables modified by each procedure. For an analysis whose analysis directory is <path>/<to>/<prjname>.prj_files, the XML file path will be <path>/<to>/<prjname>.side_effects.xml.
  • No : this XML file will not be output.
Notes Modifications are stated in terms of inputs to the procedure.
Factory Setting
  • EMIT_PROCEDURE_SIDE_EFFECTS = No
Tags
  • Additional Outputs from the Build/Analysis

Specifies whether or not CodeSonar will issue Unused Value warnings for values that arise from constant assignments.

Type { Yes, No }
Behavior If "Yes", CodeSonar will issue Unused Value warnings in cases like:
  x = 3;
  x = 4;

If "No", such cases will not trigger Unused Value warnings.

Factory Setting
  • REPORT_UNUSED_ASSIGNMENTS_FROM_CONSTANTS = No
Tags

Specifies whether or not CodeSonar will issue Redundant Condition warnings for conditions testing constant values.

Type { Yes, No }
Behavior If "Yes", CodeSonar will issue Redundant Condition warnings in cases like:
  if ( 0 )
     ...

If "No", such cases will not trigger Redundant Condition warnings.

Factory Setting
  • REPORT_REDUNDANT_CONDITIONS_BASED_ON_CONSTANTS = No
Tags

Tells CodeSonar that function A works like function B.

Type String of the form
  A -> B

where A and B are function names.

Behavior The value "A -> B" indicates that CodeSonar should treat calls to function A as calls to function B. This is equivalent to writing a stub using csonar_replace_A that calls B, but may be more convenient.

If A -> B and B -> C then A -> C

The behavior is undefined if:

  • the types of A and B are not binary-compatible (for example, because they have different numbers of parameters), or
  • there are cycles in the function map, or
  • multiple FUNCTION_MAP rules with the same LHS function are specified, or
  • for some function A, csonar_replace_A exists in the project and a FUNCTION_MAP rule mapping A -> B is specified for some B.
Notes The most common use cases are:
  • Designating functions that end program execution.
  • Designating malloc and free workalikes.

For multiple mappings, use a separate FUNCTION_MAP += statement for each mapping.

C++ identifiers containing spaces must be quoted and contain the full name of the function as used by the linker. Microsoft libc command line encoding rules apply (even on non-Windows systems). For example:

  // This maps the foo method to the bar method.
  // FUNCTION_MAP += "ns::x<const char *const >::foo(unsigned int)" -> "ns::x<const char *const >::bar(unsigned int)"
  namespace ns{
    typedef unsigned U;
    template <typename T>
    struct x{
      void foo(U i){}
      void bar(unsigned i){1/i;}
      void baz(void){foo(0);}
    };
    void f(x<const char *const> *p)
    { p->baz(); }
  };

Behavior is undefined if csonar_replace_A is defined and

  FUNCTION_MAP += A -> B

is specified, for any functions A and B.

Example 1: specify that fatal causes the program to abort.

  FUNCTION_MAP += fatal -> abort

Example 2: specify that pmalloc behaves like malloc:

  FUNCTION_MAP += pmalloc -> malloc

Example 3: specify that pfree behaves like free:

  FUNCTION_MAP += pfree -> free
Factory Setting
  • FUNCTION_MAP +=

Specifies whether or not the CodeSonar analysis should check C++ compilation units.

Type { Yes, No }
Behavior
  • Yes : CodeSonar will ignore all C++ compilation units: C++ code will not be checked.
  • No : CodeSonar will check both C and C++ compilation units.
Factory Setting
  • IGNORE_CPP_CODE = No
Tags
  • Treatment of Language Constructs

Specifies the maximum number of parse errors submitted to the hub for a compilation.

Type integer. -1 means "no limit"
Behavior No more than the specified number of errors will be submitted to the hub for any single compilation. If the number of errors for the compilation exceeds the specified number, a "There are more errors" entry is submitted.
Notes This parameter has no effect on whether or not a compilation is included in the analysis.
Factory Setting
  • ERROR_SUBMISSION_LIMIT_PER_COMPILATION = 30
Tags
  • Governs the Build/Analysis

Specifies whether reads through volatile types always result in unknown values.

Type {UNKNOWABLE, ADVERSARIAL, IGNORE}
Behavior
  • UNKNOWABLE : any attempt to read through a volatile type will result in an unknown value that is not considered adversarial.
  • ADVERSARIAL : any attempt to read through a volatile type will result in an adversarial value.
  • IGNORE : CodeSonar ignores the volatile keyword.
Notes The following test case will produce a Null Pointer Dereference warning if this preference is set to UNKNOWABLE or ADVERSARIAL.
   int *p = 0;
   volatile int i;
   i = 5;
   if( i != 5 )
       *p;

The following test case will produce a Division By Zero warning if this preference is set to ADVERSARIAL.

   volatile int i;
   i = 5;
   10 / i;

The following test case will produce a Division By Zero warning if this preference is set to ADVERSARIAL or IGNORE.

   volatile int i;
   i = 0;
   10 / i;

The following test case will produce an Unreachable Code: 5 warning classes warning if this preference is set to IGNORE.

   int j;
   volatile int timer = 0;
   while( timer != 1000 )
       ;
   j = 42;
Factory Setting
  • VOLATILE_TREATMENT = UNKNOWABLE
Tags
  • Treatment of Language Constructs

Specifies whether all floating point values should be considered adversarial.

Type { Yes, No }
Behavior
  • Yes : all floating point values will be treated as unknown and adversarial, even constants.
  • No : CodeSonar will reason about floating point values.
Notes Do not set to Yes if any floating point warning classes (Float Division By Zero plus any class with a mnemonic of the form MATH.*) are enabled: it will cause a large number of false positive warnings with those classes.

For example, a Float Division By Zero warning will be issued for the following when FLOAT_IS_ADVERSARIAL=Yes because the denominator is treated as adversarial even though it is a constant.

  float c = 5.0 / 2.0

The following test case will produce two Buffer Overrun warnings when FLOAT_IS_ADVERSARIAL=Yes.

   char A[10];
   double d = 11.0;
   A[d] = 0;
   d = 5.0;
   A[d] = 0;
Factory Setting
  • FLOAT_IS_ADVERSARIAL = No
Tags
  • Treatment of Language Constructs

Specifies whether to treat globals and statics as const if they are initialized (explicitly or implicitly) but never assigned to.

Type { Yes, No }
Behavior
  • Yes : assume these variables never change
  • No : assume these variables might change
Notes In the following code example, bound is initialized to 100 and then never assigned to.
  • If the example is analyzed with INFER_CONST=Yes, CodeSonar will assume that the value of bound is always 100, and so will determine that the array access buf[i] will never overflow because it is adequately guarded by the test on the previous line.
  • If this example is analyzed with INFER_CONST=No, CodeSonar's analysis will allow for the possibility that the value of bound could be changed by separate code, and so issue a Buffer Overrun warning.
   int bound = 100;
   void foo(void) {
      char buf[100];
      int i = getchar();
      if( i >= bound || i < 0 ) return;
      buf[i] = 'c';
   }

The following test case will produce a Null Pointer Dereference warning if it is analyzed with INFER_CONST=Yes.

   int *ip;
   void foo(void) {
      *ip = 7;
   }

This is because ip is implicitly zero-initialized, and no other value is ever assigned to ip. Therefore, CodeSonar assumes that ip must always be zero. To avoid the zero-initialization, you can change the declaration to

    extern int *ip;

In some cases, analyzing code with INFER_CONST=Yes can lead to unexpected false positives and false negatives.

  • If you are analyzing only pieces of a larger code base, you may experience positives and false negatives arising from variables that are modified elsewhere in the program but not in the analyzed portion (because CodeSonar will assume that these variables are never modified).
  • Similarly, libraries and synthetic test cases often involve variables whose values do not change in the library/test itself, but may be changed by external code.

In these cases, analyzing with INFER_CONST=No may provide better results.

Factory Setting
  • INFER_CONST = Yes
Tags
  • Treatment of Language Constructs

Specifies the maximum sized integer that should be considered a character type for the purpose of tracking the null-terminator position.

Type integer
Notes Setting this to 2 may prove useful for projects using wide characters. However, some approximations that occur as a consequence of using this can backfire when a single memory region contains multiple zeroes. It is not recommended that users alter this unless advised to do so by CodeSecure.
Factory Setting
  • NULL_SENTINEL_CHAR_SIZE = 1
Tags

Specifies whether Pointer Past End of Object warnings should be issued for pointers that point to exactly the end of an object.

Type { Yes, No }
Behavior If set to "Yes", Pointer Past End of Object warnings will be issued in cases like the following.
   int A[10];
   int *p = &A[10];
Notes The factory setting is "No" because many codebases may have cursor pointers that reach the end of an object but are never dereferenced, as in the following example.
   int A[10];
   int *p;
   for( p = A; p < &A[10]; p++ );
Factory Setting
  • WARN_POINTER_AT_END = No
Tags

Specifies whether the tracking of variable initialization in loops is tuned to potentially report more Uninitialized Variable warnings.

Type { Yes, No }
Behavior If set to "Yes", Uninitialized Variable warnings will be issued for variables that are initialized on some but not all paths through the loop.
Notes The factory setting is "No" because this feature is a frequent source of false positive results when complex invariants in the codebase render the non-initializing paths infeasible.
Factory Setting
  • WARN_MORE_LOOP_UVARS = No
Tags

Allows metrics to be turned on/off, either for an entire metric class or for specific files, procedures, or compilation units.

Type Zero or more patterns, each consisting of an <action> followed by one or more <rule>s.

<action> is one of:

  • discard
  • allow

<rule> is one of:

  • metric <matcher> <string>
  • file <matcher> <string>
  • procedure <matcher> <string>
  • procedure_typed <matcher> <string>
  • compilation_unit <matcher> <string>
  • language <matcher> <string>

and <matcher> is one of:

Behavior Depends on the <action>:
  • discard : metrics matching the rules will be discarded instead of being submitted to the hub, and whenever possible will not be computed.
  • allow : metrics matching the rules will be submitted to the hub, even if they matched a previous "discard"
Notes If there are two or more <rule>s in a pattern, the pattern <action> will be applied to metrics that match ALL of the rules.

procedure rules match against the cs_pdg_friendly_name(); procedure_typed rules match against the cs_pdg_procedure_name().

If you want to compute any of the Halstead metrics (n1, N1, n2, N2, D, I, T, E, N, L, V), set

    RETAIN_UNNORMALIZED_C_AST = Yes

Metrics of an individual granularity can be allowed/discarded if the string pattern is of the form "tag[granularity]". For example, to discard the "Total Lines" (TL) metric only for file granularity (not the analysis or procedure granularity metrics with the same tag), the following rule will work:

    METRIC_FILTER += discard metric="TL[FILE]"

The following metrics are enabled by default. To discard a particular metric class, use the corresponding "discard" rule.

    METRIC_FILTER += discard metric="LCodeOnly"
    METRIC_FILTER += discard metric="LCode"
    METRIC_FILTER += discard metric="LMCC"
    METRIC_FILTER += discard metric="LComOnly"
    METRIC_FILTER += discard metric="LB"
    METRIC_FILTER += discard metric="TL"
    METRIC_FILTER += discard metric="LCom"
    METRIC_FILTER += discard metric="vG"
    METRIC_FILTER += discard metric="mvG"
    METRIC_FILTER += discard metric="Modules"
    METRIC_FILTER += discard metric="TopLF"
    METRIC_FILTER += discard metric="InclF"
    METRIC_FILTER += discard metric="TaintSource"
    METRIC_FILTER += discard metric="TaintProp"
    METRIC_FILTER += discard metric="TaintSink"

The following metrics are disabled by default. To enable a particular metric class, use the corresponding "allow" rule.

    METRIC_FILTER += allow metric="CALLING"
    METRIC_FILTER += allow metric="CALLS"
    METRIC_FILTER += allow metric="GOTO"
    METRIC_FILTER += allow metric="NCOMM"
    METRIC_FILTER += allow metric="NPATH"
    METRIC_FILTER += allow metric="PARAM"
    METRIC_FILTER += allow metric="RETURN"
    METRIC_FILTER += allow metric="STMIF"
    METRIC_FILTER += allow metric="STPTH"
    METRIC_FILTER += allow metric="STST1"
    METRIC_FILTER += allow metric="STST2"
    METRIC_FILTER += allow metric="STST3"
    METRIC_FILTER += allow metric="n1"
    METRIC_FILTER += allow metric="N1"
    METRIC_FILTER += allow metric="n2"
    METRIC_FILTER += allow metric="N2"
    METRIC_FILTER += allow metric="D"
    METRIC_FILTER += allow metric="I"
    METRIC_FILTER += allow metric="T"
    METRIC_FILTER += allow metric="E"
    METRIC_FILTER += allow metric="N"
    METRIC_FILTER += allow metric="L"
    METRIC_FILTER += allow metric="V"
    METRIC_FILTER += allow metric="evG"
    METRIC_FILTER += allow metric="ivG"
    METRIC_FILTER += allow metric="S1"
Tags
  • metric-related
  • Analysis-Side Filtering

Creates new derived metrics, which are computed by mathematically manipulating values of already existing metrics.

Type A string of the form <metric tag>, <metric description>, <granularity>, <expression>

where:

<metric tag> is the quoted tag for the new metric. Metric tags are case-sensitive; the metrics page has a table showing the tags for all built-in metrics. The <metric tag> must:

  • start with characters matching: [a-zA-Z]
  • only contain characters matching: [a-zA-Z][0-9] _-
  • have string length <= 15 characters
  • be unique, in combination with <granularity>. (This allows you to use the same tag for a conceptually similar metric across multiple granularities, while preventing duplicate tags within a single granularity.)
  • not match any function name in the expression grammar

<metric description> is the quoted description for the new metric, and must:

  • only contain characters matching: [a-zA-Z][0-9] _-
  • have string length <= 35 characters

<granularity> is the granularity of the new metric, and is one of {ANALYSIS, COMPUNIT, DIRECTORY, FILE, PROCEDURE}

<expression> is an expression containing mathematical operators, functions, constant (floating point) values, and references to other metrics.

Expression grammar:

   S        -> expr
   expr     -> expr + expr | expr - expr | expr * expr | expr / expr |
               const | metric | function(expr, ...)
   function -> cos | sin | tan | acos | asin | atan | atan2 | cosh | sinh |
               tanh | exp | ldexp | log | log10 | pow | sqrt |
               ceil | fabs | floor | fmod | sum | prod | avg | min | max
   metric   -> "[a-zA-Z0-9]+\[granularity\]"
   granularity -> ANALYSIS | COMPUNIT | FILE | PROCEDURE
  • All metric values must match an existing metric; metric tags are case-sensitive.
  • All functions return a single floating point value.
  • All math operations are floating point.
  • Functions sum, prod, avg, min, and max are summarizing functions they only take metrics as arguments, and only work when the derived metric has granularity greater than the referenced metric. See table below (sum is used as example).
   +---------------------+-------------------+-----------------------------+
   | derived metric gran | expression        | description                 |
   +---------------------+-------------------+-----------------------------+
   | FILE                | sum(PROCEDURE)    | Sums over all procedures in |
   |                     |                   | the file.                   |
   |                     |                   |                             |
   | COMPUNIT            | sum(PROCEDURE)    | Sums over all procedures in |
   |                     |                   | the compilation unit.       |
   |                     |                   |                             |
   | ANALYSIS            | sum(PROCEDURE)    | Sums over all procedures in |
   |                     |                   | the analyzed project.       |
   |                     |                   |                             |
   | COMPUNIT            | sum(FILE)         | Sums over all files in the  |
   |                     |                   | compilation unit.           |
   |                     |                   |                             |
   | ... etc                                                               |
   +-----------------------------------------------------------------------+
Behavior If a properly formed derived metric is specified, that metric will be computed and displayed for the next analysis unless it is discarded via METRIC_FILTER.

If there is an error in the specification of METRIC_DERIVED_DEF, CodeSonar will issue an alert that specifies the nature of the problem.

Notes If a derived metric which is enabled refers to a metric which is disabled, the derived metric will still be calculated. This will cause the disabled metric to be calculated as well (though not reported). In this scenario, the performance gains from having the unreported metric disabled are lost.

All METRIC_DERIVED_DEF definitions are processed before any METRIC_FILTER settings. A derived metric can therefore be disabled by a METRIC_FILTER rule that appears before the metric definition in the configuration file.

If you want to compute any of the Halstead metrics (n1, N1, n2, N2, D, I, T, E, N, L, V), set

    RETAIN_UNNORMALIZED_C_AST = Yes

Example 1: Divide LCode by 1000 to get a "kLOC" metric.

    METRIC_DERIVED_DEF += "kLOC", "Lines With Code / 1000", PROCEDURE, "LCode[PROCEDURE]" / 1000)
    METRIC_DERIVED_DEF += "kLOC", "Lines With Code / 1000", FILE, "LCode[FILE]" / 1000)

Example 2: Some slight variations on the basic McCabe metrics.

    METRIC_DERIVED_DEF += "vG-code", "Cyclomatic Density", PROCEDURE, "[PROCEDURE]" / "LCode[PROCEDURE]"
    METRIC_DERIVED_DEF += "ivG-vG", "Module Design Density", PROCEDURE, "ivG[PROCEDURE]" / "vG[PROCEDURE]"
    METRIC_DERIVED_DEF += "evG-vG", "Essential Density", PROCEDURE, ("evG[PROCEDURE]" - 1) / "vG[PROCEDURE]"
Factory Settings
  • METRIC_DERIVED_DEF += "LCodeOnly", "Code Lines", DIRECTORY, sum("LCodeOnly[FILE]") + sum("LCodeOnly[DIRECTORY]")
  • METRIC_DERIVED_DEF += "LMCC", "Mixed Lines", DIRECTORY, sum("LMCC[FILE]") + sum("LMCC[DIRECTORY]")
  • METRIC_DERIVED_DEF += "LComOnly", "Comment Lines", DIRECTORY, sum("LComOnly[FILE]") + sum("LComOnly[DIRECTORY]")
  • METRIC_DERIVED_DEF += "LB", "Blank Lines", DIRECTORY, sum("LB[FILE]") + sum("LB[DIRECTORY]")
  • METRIC_DERIVED_DEF += "TL", "Total Lines", DIRECTORY, sum("TL[FILE]") + sum("TL[DIRECTORY]")
  • METRIC_DERIVED_DEF += "LCode", "Lines with Code", DIRECTORY, sum("LCode[FILE]") + sum("LCode[DIRECTORY]")
  • METRIC_DERIVED_DEF += "LCom", "Lines with Comments", DIRECTORY, sum("LCom[FILE]") + sum("LCom[DIRECTORY]")
  • METRIC_DERIVED_DEF += "vG", "Cyclomatic Complexity", FILE, sum("vG[PROCEDURE]")
  • METRIC_DERIVED_DEF += "mvG", "Modified Cyclomatic Complexity", FILE, sum("mvG[PROCEDURE]")
  • METRIC_DERIVED_DEF += "ivG", "Module Design Complexity", FILE, sum("ivG[PROCEDURE]")
  • METRIC_DERIVED_DEF += "evG", "Essential Complexity", FILE, sum("evG[PROCEDURE]")
  • METRIC_DERIVED_DEF += "vG", "Cyclomatic Complexity", DIRECTORY, sum("vG[FILE]") + sum("vG[DIRECTORY]")
  • METRIC_DERIVED_DEF += "mvG", "Modified Cyclomatic Complexity", DIRECTORY, sum("mvG[FILE]") + sum("mvG[DIRECTORY]")
  • METRIC_DERIVED_DEF += "ivG", "Module Design Complexity", DIRECTORY, sum("ivG[FILE]") + sum("ivG[DIRECTORY]")
  • METRIC_DERIVED_DEF += "evG", "Essential Complexity", DIRECTORY, sum("evG[FILE]") + sum("evG[DIRECTORY]")
  • METRIC_DERIVED_DEF += "N1", "Total Operators", FILE, sum("N1[PROCEDURE]")
  • METRIC_DERIVED_DEF += "N2", "Total Operands", FILE, sum("N2[PROCEDURE]")
  • METRIC_DERIVED_DEF += "N", "Halstead Program Length", FILE, sum("N[PROCEDURE]")
  • METRIC_DERIVED_DEF += "L", "Halstead Program Level", FILE, sum("L[PROCEDURE]")
  • METRIC_DERIVED_DEF += "V", "Halstead Program Volume", FILE, sum("V[PROCEDURE]")
  • METRIC_DERIVED_DEF += "D", "Halstead Program Difficulty", FILE, sum("D[PROCEDURE]")
  • METRIC_DERIVED_DEF += "E", "Halstead Programming Effort", FILE, sum("E[PROCEDURE]")
  • METRIC_DERIVED_DEF += "I", "Halstead Intelligent Content", FILE, sum("I[PROCEDURE]")
  • METRIC_DERIVED_DEF += "T", "Halstead Programming Time", FILE, sum("T[PROCEDURE]")
  • METRIC_DERIVED_DEF += "N1", "Total Operators", DIRECTORY, sum("N1[FILE]") + sum("N1[DIRECTORY]")
  • METRIC_DERIVED_DEF += "N2", "Total Operands", DIRECTORY, sum("N2[FILE]") + sum("N2[DIRECTORY]")
  • METRIC_DERIVED_DEF += "N", "Halstead Program Length", DIRECTORY, sum("N[FILE]") + sum("N[DIRECTORY]")
  • METRIC_DERIVED_DEF += "L", "Halstead Program Level", DIRECTORY, sum("L[FILE]") + sum("L[DIRECTORY]")
  • METRIC_DERIVED_DEF += "V", "Halstead Program Volume", DIRECTORY, sum("V[FILE]") + sum("V[DIRECTORY]")
  • METRIC_DERIVED_DEF += "D", "Halstead Program Difficulty", DIRECTORY, sum("D[FILE]") + sum("D[DIRECTORY]")
  • METRIC_DERIVED_DEF += "E", "Halstead Programming Effort", DIRECTORY, sum("E[FILE]") + sum("E[DIRECTORY]")
  • METRIC_DERIVED_DEF += "I", "Halstead Intelligent Content", DIRECTORY, sum("I[FILE]") + sum("I[DIRECTORY]")
  • METRIC_DERIVED_DEF += "T", "Halstead Programming Time", DIRECTORY, sum("T[FILE]") + sum("T[DIRECTORY]")
  • METRIC_DERIVED_DEF += "TaintSource", "Taint Source Total", FILE, sum("TaintSource[PROCEDURE]")
  • METRIC_DERIVED_DEF += "TaintProp", "Taint Propagator Total", FILE, sum("TaintProp[PROCEDURE]")
  • METRIC_DERIVED_DEF += "TaintSink", "Taint Sink Total", FILE, sum("TaintSink[PROCEDURE]")
  • METRIC_DERIVED_DEF += "TaintSource", "Taint Source Total", DIRECTORY, sum("TaintSource[FILE]") + sum("TaintSource[DIRECTORY]")
  • METRIC_DERIVED_DEF += "TaintProp", "Taint Propagator Total", DIRECTORY, sum("TaintProp[FILE]") + sum("TaintProp[DIRECTORY]")
  • METRIC_DERIVED_DEF += "TaintSink", "Taint Sink Total", DIRECTORY, sum("TaintSink[FILE]") + sum("TaintSink[DIRECTORY]")
Tags

Specifies whether C++ method invocations should always be treated as if they dereference this at the method invocation site.

Type {All, Undefined, None}
Behavior The C++ method invocation p->m() will not actually dereference the pointer p unless the body of m accesses a data member of p. However, sometimes it is useful to treat method invocations as if they always dereference their objects - either because the source code implementing m() is unavailable or to reduce the complexity of warnings.
  • All : All method invocations are treated as if they dereference their this pointer. Additionally, this is assumed to never have a value below NULL_POINTER_THRESHOLD.
  • Undefined : All invocations of undefined methods (methods for which no source code is available) are treated as if they dereference their this pointers, which are assumed to never have a value below NULL_POINTER_THRESHOLD. No assumptions are made about defined methods.
  • None : No assumptions are made about any methods. In practice, this means that invocations of undefined methods are never considered to dereference this.
Notes With the All setting, method invocations on unconditionally null pointers will result in unreachable code after the method returns.
Factory Setting
  • METHOD_INVOCATION_DEREFERENCE_BEHAVIOR = None
Tags
  • Treatment of Language Constructs

Specifies a warning condition for a metric; if that condition is met, a warning is reported.

Type
  • METRIC_WARNING_CONDITION: metric <op> number where the metric is specified by tag[granularity], and <op> is one of >, <, >=, <=
  • METRIC_WARNING_CLASS_NAME: string
  • METRIC_WARNING_CATEGORIES: string
  • METRIC_WARNING_BASE_RANK: number
  • METRIC_WARNING_SIGNIFICANCE: { UNSPECIFIED, SECURITY, RELIABILITY, REDUNDANCY, STYLE, DIAGNOSTIC }
Behavior These parameters are used together to specify conditions on metric values, and warnings to issue when values meet those conditions.
  • METRIC_WARNING_CONDITION specifies a metric and a condition on that metric. A warning will be issued if the metric's value meets the condition. The metric must be enabled with a METRIC_FILTER allow rule. Both built-in metrics and derived metrics can be used.
  • METRIC_WARNING_CLASS_NAME is the warning class name.
  • METRIC_WARNING_CATEGORIES is the set of categories for the warning, as a semicolon-separated list.
  • METRIC_WARNING_BASE_RANK is the base rank assigned to the warning, with default 25.0.
  • METRIC_WARNING_SIGNIFICANCE is a string representing the Significance classification for this warning class.
Notes Parameter METRIC_WARNING_RANK is deprecated in favor of METRIC_WARNING_BASE_RANK; the two currently have identical behavior.

The METRIC_WARNING_CATEGORIES, METRIC_WARNING_BASE_RANK, and METRIC_WARNING_SIGNIFICANCE settings are optional, but METRIC_WARNING_CONDITION and METRIC_WARNING_CLASS_NAME must be fully specified. The METRIC_WARNING_CONDITION message must come first, and the METRIC_WARNING_CLASS_NAME second.

If two or more sets of METRIC_WARNING_* rules have the same METRIC_WARNING_CLASS_NAME value, the same warning class will be used to cover all cases. Therefore, sets of rules with the same METRIC_WARNING_CLASS_NAME should also have the same METRIC_WARNING_CATEGORIES and METRIC_WARNING_BASE_RANK values (that is, they should only differ in the METRIC_WARNING_CONDITION setting).

Similarly, if a set of METRIC_WARNING_* rules has a METRIC_WARNING_CLASS_NAME that is the same as the name of a standard CodeSonar warning class, the category and rank settings of the standard class will apply and any METRIC_WARNING_CATEGORIES or METRIC_WARNING_BASE_RANK specified in the set will not be used.

Examples (note that the categories in these examples are arbitrary text):

Instruct CodeSonar to issue a warning of class "Large procedure" for any function containing more than 100 lines with code:

     METRIC_WARNING_CONDITION = LCode[PROCEDURE] > 100
     METRIC_WARNING_CLASS_NAME = Large procedure
     METRIC_WARNING_CATEGORIES = METRIC.LCODE
     METRIC_WARNING_BASE_RANK = 1.0
     METRIC_WARNING_SIGNIFICANCE = STYLE

Instruct CodeSonar to issue a warning of class "Too few comments" for any insufficiently commented function (defined here as a function containing fewer than 5 lines with comments).

     METRIC_WARNING_CONDITION = LCom[PROCEDURE] < 5
     METRIC_WARNING_CLASS_NAME = Too few comments
     METRIC_WARNING_CATEGORIES = METRIC.LCOM
     METRIC_WARNING_BASE_RANK = 2.0
     METRIC_WARNING_SIGNIFICANCE = STYLE
Factory Settings
  • METRIC_WARNING_CONDITION = vG[PROCEDURE] > 20
  • METRIC_WARNING_CLASS_NAME = High Cyclomatic Complexity (Procedure)
Tags

Specifies whether the Python Console will be made available for the analysis (provided the hub is running with debug features enabled).

Type { Yes, No }
Behavior
  • Yes : the Python Console will be available and functional for this analysis, provided the hub is running with debug features enabled. Warning: this poses a grave security risk. Anyone with access to the console can execute arbitrary code in the analysis process.
  • No : the API Consoles will not be available for this analysis.
Notes To enable debug features:

The Python console can be useful for experimenting with the analysis APIs. It can also be useful for debugging analysis plug-ins.

Code will have full access to the program representations generated by CodeSonar and will run with the credentials of whoever started the analysis process. There is no sandboxing of any kind.

Factory Setting
  • WEB_CONSOLE = No
Tags
  • Hub and Web GUI

Specifies whether multiple instances of the same procedure should be collapsed into a single instance for viewing purposes. This primarily affects templated functions which are instantiated with multiple template arguments, and also static inline functions.

Type { Yes, No }
Behavior If set to "Yes", the hub will only display one procedure in cases where multiple PDGs are instances of the same procedure.
Notes The choice of representative procedure instance is arbitrary. Multiple procedures defined at the same source file/line may also be collapsed. Do not change the setting of this parameter between incremental builds.

For example, suppose foo<T>(void) has two instances: foo<int>(void) and foo<float>(void).

  • With COLLAPSE_PROCEDURES=Yes, foo will have only a single line in tables of procedures and procedure-granularity metrics, describing one of the two instances. Only this instance will be shown in charts.
  • With COLLAPSE_PROCEDURES=No, foo will have two lines in tables of procedures and procedures-granularity metrics - one for each instance. Both instances will be shown in charts.

Procedure and line counts are not affected by the setting of this parameter. Metrics warnings on procedures are also not affected.

Factory Setting
  • COLLAPSE_PROCEDURES = Yes
Tags
  • Do Not Change Between Incremental Analyses or Stages of a Single Build/Analysis
  • Hub and Web GUI

Normally, leak warnings on paths that iterate around a loop multiple times are suppressed. Setting to "Yes" will disable the suppression.

Type { Yes, No }
Behavior If set to "Yes", leaks will be reported on paths that iterate around loops multiple times. These leaks are often false positives.
Notes This is an experimental feature and more work is necessary on CodeSecure's part to eliminate false positives in this area. The natural language explanation of existing warnings may also degrade as a consequence of enabling this setting.
Factory Setting
  • WARN_MORE_LOOP_LEAKS = No
Tags
  • Used by Leak
  • Fine Tuning for Warnings

Setting to "No" will prevent CodeSonar from dismissing likely leak false positives.

Type { Yes, No }
Behavior If set to "No", leaks will be reported significantly more frequently. Many of the resulting reports will be false positives, but some may be true positives.
Factory Setting
  • REFINE_LEAKS_THOROUGHLY = Yes
Tags
  • Used by Leak
  • Fine Tuning for Warnings

For Source Listing pages: specifies whether calls to undefined functions should be specially marked.

Type { Yes, No }
Behavior If set to "Yes", undefined functions will be marked with events when viewing a file's contents from the hub.
Notes Turning this on could have a negative performance impact on the file listing view in the hub.

This parameter does not affect Warning Report pages, which will always show events for undefined function calls that occur on the warning path.

Factory Setting
  • FILE_LISTING_UNDEF_PROCS = No
Tags
  • Hub and Web GUI
  • Analysis Properties

Specifies whether analysis daemon should write the content of a warning to an XML file when it sends the warning to the hub.

Type {FULL, NO_LISTING, No}
Behavior
  • FULL: the full warning report will be written out for each warning.
  • NO_LISTING: the warning report for each warning will be written out with the path listing omitted.
  • No: no XML files are generated.
Notes Set this parameter to FULL or NO_LISTING if you want the analysis to generate XML files for all warnings sent to the hub. There will be one XML file per warning.
  • XML files for warnings issued in source file <path>/<basename> will be output at <prjname>.xml/analysis_<analysis_id>/<basename><hash(path)>/.
  • XML files for warnings not associated with a source file will be output at <prjname>.xml/analysis_<analysis_id>/NONAME_0000000>/.
Factory Setting
  • XML_DUMP_MODE = No
Tags
  • Analysis Properties

Specifies loops for which Potential Unbounded Loop warnings should not be issued.

Type Boost 'POSIX Extended Regular Expression'
Behavior If the line containing the loop condition matches this regular expression, a Potential Unbounded Loop warning will not be issued.
Notes For example,
   NON_TERMINATING_LOOP_MARK += /[*] @non-terminating@ [*]/

specifies that Potential Unbounded Loop warnings will not be triggered by any loop whose condition line contains the comment /* @non-terminating@ */.

Don't issue warnings for loops whose condition looks like for(;;) :

   NON_TERMINATING_LOOP_MARK += for *[(] *; *; *[)]

Don't issue warnings for loops whose condition looks like while(1) :

   NON_TERMINATING_LOOP_MARK += while *[(] *1 *[)]

Note that the Potential Unbounded Loop check is disabled by default: use a WARNING_FILTER rule to enable it.

Tags

For remote-managed analyses, specify the parameters in the linear model used to estimate the disk requirements for the analysis directory.

Type real number
Behavior As part of the data and control transfer for a remote-managed analysis, CodeSonar estimates the the final size of the analysis directory as follows.
   P = S*B + I

where:

  • P is the the predicted analysis directory size after analysis
  • B is the size of the build directory after all and before analysis
  • S is the value of PRJ_FILES_SIZE_PREDICTION_LINEAR_MODEL_SLOPE
  • I is the value of PRJ_FILES_SIZE_PREDICTION_LINEAR_MODEL_INTERCEPT

If the launch daemon L specified for the analysis cannot accommodate the predicted final size of the analysis directory, the analysis will fail.

Specifically, the Space Quota for L must be sufficient to accommodate the following.

  • The predicted final size P,
  • AND the total size of all analysis directories for completed remote analyses that used L,
  • AND the predicted final sizes of all currently running remote analyses using L.

If multiple candidate launch daemons are specified, CodeSonar will choose one that can accommodate the predicted final size, or fail if there are no such launch daemons.

These parameters have no effect for local-managed analyses.

Notes Adjust these parameters if you are experiencing problems due to estimated size being too high (so analysis fails even though the analysis directory could actually be accommodated) or too low.
Factory Settings
  • PRJ_FILES_SIZE_PREDICTION_LINEAR_MODEL_SLOPE=2.0
  • PRJ_FILES_SIZE_PREDICTION_LINEAR_MODEL_INTERCEPT=20

Specifies additional functions that should be considered as program entry points. Currently only the Dynamic Allocation After Initialization and Dynamic Thread Creation checks use this parameter.

Type Boost 'POSIX Extended Regular Expression'
Behavior The Dynamic Allocation After Initialization check will trigger a warning if there is a call chain from a program entry point to an allocator call that does not go through a function specified with DYN_INIT_FUNCTIONS.

The Dynamic Thread Creation check will trigger a warning if there is a call chain from a program entry point to a thread creation call that does not go through a function specified with THREAD_INIT_FUNCTIONS.

Notes For example,
   PROGRAM_ENTRY_POINTS += ^init$

specifies that the check should start at function(s) named init.

Note that the Dynamic Allocation After Initialization and Dynamic Thread Creation checks are disabled by default: use WARNING_FILTER rules to enable them.

Factory Settings
  • PROGRAM_ENTRY_POINTS += ^#System_Initialization$
  • PROGRAM_ENTRY_POINTS += ^init$
Tags

Specifies allocator functions. Currently only used by the Dynamic Allocation After Initialization check.

Type Boost 'POSIX Extended Regular Expression'
Behavior For the Dynamic Allocation After Initialization check, calls to functions matching this regular expression are reported unless:
Notes For example,
   ALLOCATOR_FUNCTIONS += ^mmap$

specifies that mmap() should be considered an allocator

Note that the Dynamic Allocation After Initialization check is disabled by default: use a WARNING_FILTER rule to enable it.

Factory Settings
  • ALLOCATOR_FUNCTIONS += ^(csonar_allocate_heap)$
  • ALLOCATOR_FUNCTIONS += ^(malloc|alloca|realloc)$
  • ALLOCATOR_FUNCTIONS += ^(sbrk|brk|mmap)$
  • ALLOCATOR_FUNCTIONS += ^(_mmap)$
Tags

Specifies functions that may directly or transitively call allocator functions without triggering a Dynamic Allocation After Initialization warning.

Type Boost 'POSIX Extended Regular Expression'
Behavior No Dynamic Allocation After Initialization warnings are issued for allocators (as specified by ALLOCATOR_FUNCTIONS) called directly or transitively by a function whose name matches this regular expression.
Notes For example,
   DYN_INIT_FUNCTIONS += ^dyn_init$

specifies that function(s) dyn_init() can directly or transitively call allocator functions without triggering a warning.

Note that the Dynamic Allocation After Initialization check is disabled by default: use a WARNING_FILTER rule to enable it.

Factory Setting
  • DYN_INIT_FUNCTIONS += ^dyn_init$
Tags

Specifies thread creation functions. Currently only used by the Dynamic Thread Creation check.

Type Boost 'POSIX Extended Regular Expression'
Behavior For the Dynamic Thread Creation check, calls to functions matching this regular expression are reported unless:
Notes For example,
   THREAD_CREATION_FUNCTIONS += ^thrd_create$

specifies that thrd_create() should be considered a thread creation function

Note that the Dynamic Thread Creation check is disabled by default: use a WARNING_FILTER rule to enable it.

Factory Settings
  • THREAD_CREATION_FUNCTIONS += ^(thrd_create)$
  • THREAD_CREATION_FUNCTIONS += ^(pthread_create)$
  • THREAD_CREATION_FUNCTIONS += ^(std::thread::thread)$
Tags

Specifies functions that may directly or transitively call thread creation functions without triggering a Dynamic Thread Creation warning.

Type Boost 'POSIX Extended Regular Expression'
Behavior No Dynamic Thread Creation warnings are issued for thread creators (as specified by THREAD_CREATION_FUNCTIONS) called directly or transitively by a function whose name matches this regular expression.
Notes For example,
   THREAD_INIT_FUNCTIONS += ^dyn_init$

specifies that function(s) dyn_init() can directly or transitively call thread creation functions without triggering a warning.

Note that the Dynamic Thread Creation check is disabled by default: use a WARNING_FILTER rule to enable it.

Factory Setting
  • THREAD_INIT_FUNCTIONS += ^dyn_init$
Tags

Specifies functions that will be treated as assertions by the Not Enough Assertions check

Type Boost 'POSIX Extended Regular Expression'
Behavior Calls to functions matching this regular expression are counted as assertions.
Notes For example,
   ASSERT_FAIL_FUNCTIONS += ^__assert_fail$

specifies that calls to __assert_fail() should be considered assertions. Some systems implement the assert macro using __assert_fail().

Note that the Not Enough Assertions check is disabled by default: use a WARNING_FILTER rule to enable it.

Factory Settings
  • ASSERT_FAIL_FUNCTIONS += ^__assert_fail$
  • ASSERT_FAIL_FUNCTIONS += ^__assert_func$
  • ASSERT_FAIL_FUNCTIONS += ^__assert$
  • ASSERT_FAIL_FUNCTIONS += ^_assert$
  • ASSERT_FAIL_FUNCTIONS += ^assert$
  • ASSERT_FAIL_FUNCTIONS += ^_wassert$
Tags

Specifies file system paths which contain system include headers.

Type string
Behavior Any file matching any of these paths is excluded from computation of metrics and checks for certain warning classes. Substring match is used to match files to the specified system include paths.
Notes Any line ending with a "\" is treated as a continuation - meaning that the subsequent line will be concatenated with the current line. To avoid this situation (e.g. for paths that actually end in "\"), add whitespace after the "\" before the newline character.

Checks for the following warning classes will always be excluded from files matching any of these paths.

WARNING_FILTER discard rules can specify is_sysinclude to match warnings whose Listing XML lies entirely within system include files as designated by SYSTEM_INCLUDE_PATHS.

For example, the factory settings for WARNING_FILTER include the following rule: all warnings in C++ code whose Listing XML lies entirely within system include files will be discarded. Note that this rule does not affect warnings in C code.

   WARNING_FILTER += discard language="C++" is_sysinclude
Factory Settings
  • SYSTEM_INCLUDE_PATHS += /codesonar/smel/
  • SYSTEM_INCLUDE_PATHS += /codesonar/libmodels/
  • SYSTEM_INCLUDE_PATHS += /csurf/csinclude/
  • SYSTEM_INCLUDE_PATHS += /usr/include/
  • SYSTEM_INCLUDE_PATHS += /usr/lib/
  • SYSTEM_INCLUDE_PATHS += /usr/lib64/
  • SYSTEM_INCLUDE_PATHS += /usr/local/include/
  • SYSTEM_INCLUDE_PATHS += /usr/local/lib/
  • SYSTEM_INCLUDE_PATHS += /usr/local/lib64/
  • SYSTEM_INCLUDE_PATHS += /usr/sfw/include/
  • SYSTEM_INCLUDE_PATHS += /usr/sfw/lib/
  • SYSTEM_INCLUDE_PATHS += /opt/sfw/include/
  • SYSTEM_INCLUDE_PATHS += /opt/sfw/lib/
  • SYSTEM_INCLUDE_PATHS += /cygwin/lib/
  • SYSTEM_INCLUDE_PATHS += /cygwin/local/lib/
  • SYSTEM_INCLUDE_PATHS += /cygwin64/lib/
  • SYSTEM_INCLUDE_PATHS += /cygwin64/local/lib/
  • SYSTEM_INCLUDE_PATHS += :\Program Files\Microsoft
  • SYSTEM_INCLUDE_PATHS += :\Program Files\Windows
  • SYSTEM_INCLUDE_PATHS += :\Program Files\Freescale
  • SYSTEM_INCLUDE_PATHS += :\Program Files\Metrowerks
  • SYSTEM_INCLUDE_PATHS += :\Program Files\Intel
  • SYSTEM_INCLUDE_PATHS += :\Program Files\ARM
  • SYSTEM_INCLUDE_PATHS += :\Program Files\IAR
  • SYSTEM_INCLUDE_PATHS += :\Program Files\Borland
  • SYSTEM_INCLUDE_PATHS += :\Program Files\CodeGear
  • SYSTEM_INCLUDE_PATHS += :\Program Files\Hi-Tech
  • SYSTEM_INCLUDE_PATHS += :\CCStudio
  • SYSTEM_INCLUDE_PATHS += :\WINCE
  • SYSTEM_INCLUDE_PATHS += :\Keil
  • SYSTEM_INCLUDE_PATHS += :\HEW
  • SYSTEM_INCLUDE_PATHS += :\Borland
  • SYSTEM_INCLUDE_PATHS += ARC\MetaWare
  • SYSTEM_INCLUDE_PATHS += :\cygwin\usr\include\
  • SYSTEM_INCLUDE_PATHS += :\cygwin\lib\
  • SYSTEM_INCLUDE_PATHS += :\cygwin\local\lib\
  • SYSTEM_INCLUDE_PATHS += :\cygwin64\usr\include\
  • SYSTEM_INCLUDE_PATHS += :\cygwin64\lib\
  • SYSTEM_INCLUDE_PATHS += :\cygwin64\local\lib\
  • SYSTEM_INCLUDE_PATHS += \csurf\include\
  • SYSTEM_INCLUDE_PATHS += \csurf\csinclude\
  • SYSTEM_INCLUDE_PATHS += \codesonar\smel\
  • SYSTEM_INCLUDE_PATHS += \codesonar\libmodels\
  • SYSTEM_INCLUDE_PATHS += :\Program Files (x86)\Microsoft
  • SYSTEM_INCLUDE_PATHS += :\Program Files (x86)\Windows
  • SYSTEM_INCLUDE_PATHS += :\Program Files (x86)\Freescale
  • SYSTEM_INCLUDE_PATHS += :\Program Files (x86)\Metrowerks
  • SYSTEM_INCLUDE_PATHS += :\Program Files (x86)\Intel
  • SYSTEM_INCLUDE_PATHS += :\Program Files (x86)\ARM
  • SYSTEM_INCLUDE_PATHS += :\Program Files (x86)\IAR
  • SYSTEM_INCLUDE_PATHS += :\Program Files (x86)\Borland
  • SYSTEM_INCLUDE_PATHS += :\Program Files (x86)\CodeGear
  • SYSTEM_INCLUDE_PATHS += :\Program Files (x86)\Hi-Tech
  • SYSTEM_INCLUDE_PATHS += /Developer/Headers/
  • SYSTEM_INCLUDE_PATHS += /Developer/SDKs/
  • SYSTEM_INCLUDE_PATHS += /Library/Frameworks/
  • SYSTEM_INCLUDE_PATHS += /System/Library/
  • SYSTEM_INCLUDE_PATHS += /opt/local/include/
  • SYSTEM_INCLUDE_PATHS += /sw/include/
  • SYSTEM_INCLUDE_PATHS += /usr/llvm-gcc-
  • SYSTEM_INCLUDE_PATHS += codesonar_classfile_summaries
  • SYSTEM_INCLUDE_PATHS += /qnx660/target/
  • SYSTEM_INCLUDE_PATHS += /qnx660/host/
  • SYSTEM_INCLUDE_PATHS += /qnx650/target/
  • SYSTEM_INCLUDE_PATHS += /qnx650/host/
Tags

Specifies base directories for the CodeSonar SARIF generator to use when relativizing file paths.

Type string
Behavior When analysis warning information is exported in SARIF format, file paths are expressed relative to the specified absolute directory.

If multiple directories are specified, each file path F is expressed relative to the one that matches the longest path prefix of F.

If the analysis command specifies -srcroot <basedir>, the specified <basedir> is appended to the list of file paths accumulated with SRCROOT_PATH rules.

Notes For example, suppose we have the following settings
  SRCROOT_PATHS += /user/alex/ProjectX/ComponentY/
  SRCROOT_PATHS += /user/alex/ProjectX/ComponentY/GU
  SRCROOT_PATHS += /user/alex/database/

and the analysis includes files with paths /user/alex/ProjectX/ComponentY/GUI/gui.cpp and /user/alex/database/db.c. If warning information from the analysis is exported in SARIF format, the file paths will be expressed as GUI/gui.cpp and db.c, respectively. Note in particular that the /user/alex/ProjectX/ComponentY/GUI/gui.cpp file path does NOT match /user/alex/ProjectX/ComponentY/GU.

The --src-root option to codesonar dump_warnings.py takes precedence over this setting.

For cases where CodeSonar cannot determine this directly, these parameters specify the effects that certain called functions may be assumed to have on their parameters and memory locations that are transitively reachable from those parameters (pointer targets, structure fields, and so on).

Type { Yes, No }
Behavior Each parameter specifies, for a single kind of function call, whether CodeSonar can treat that call as if it may {free, initialize, modify} one or more of its parameters {P} or the memory locations transitively reachable from {P}.

The function call kinds are as follows.

  • _UNDEFINED_ : a call to a function whose definition does not appear in the analyzed project.
  • _FUNCPTR_ : a call through a function pointer.
  • _VARARG_ : a call to a variadic function. Note: the ASSUME_VARARG_PARAMETERS_MAYBE_* rules control the treatment of variadic arguments (those designated by '...' in the header) only.
  • _OTHER_ : other special cases. This designation includes recursive calls and certain calls to functions whose analysis was incomplete.

The effects are as follows, where {f} denotes all functions of the kind under consideration and {T} denotes the set of arguments to a function call along with all transitively reachable memory locations.

  • _MAYBE_FREED : if set to Yes, CodeSonar will treat all calls to {f} as if they may free one or more of {T}. This can reduce the incidence of Leak warnings. If set to No, CodeSonar will treat all calls to {f} as if they do not free any of {T}.
  • _MAYBE_INITIALIZED : if set to Yes, CodeSonar will treat all calls to {f} as if they may initialize one or more of {T}. This can reduce the incidence of Uninitialized Variable warnings. If set to No, CodeSonar will treat all calls to {f} as if they do not initialize any of {T}.
  • _MAYBE_MODIFIED : if set to Yes, CodeSonar will treat all calls to {f} as if they may modify one or more of {T}. This can reduce the incidence of warnings from path-sensitive warning classes such as Buffer Overrun, Division By Zero, and Unreachable Code: 5 warning classes. If set to No, CodeSonar will treat all calls to {f} as if they do not modify any of {T}.
Notes For Yes settings, CodeSonar will make the associated assumptions only when doing so allows it to avoid issuing a warning.

For example, suppose we have undefined function g() and are analyzing the following code.

   int funcA(){
      char *p = malloc(5);
      if (p) {g(p);}
      return 1;
   }

   int funcB(){
      char *p = malloc(5);
      if (p) {
         g(p);
         p++;
      }
      return 2;
   }

With ASSUME_UNDEFINED_PARAMETERS_MAYBE_FREED=Yes, CodeSonar assumes that...

  • ...the call to g(p) in funcA frees p : no Leak warning,
  • ...the call to g(p) in funcB does not free p : no Use After Free warning (for example).

With ASSUME_UNDEFINED_PARAMETERS_MAYBE_FREED=No, CodeSonar must treat both calls to g(p) as if they do not free p.

In general, Yes settings are likely to reduce the number of false positive warnings, but may also cause true defects to be overlooked.

Factory Settings
  • ASSUME_UNDEFINED_PARAMETERS_MAYBE_FREED = Yes
  • ASSUME_UNDEFINED_PARAMETERS_MAYBE_INITIALIZED = Yes
  • ASSUME_UNDEFINED_PARAMETERS_MAYBE_MODIFIED = Yes
  • ASSUME_FUNCPTR_PARAMETERS_MAYBE_FREED = Yes
  • ASSUME_FUNCPTR_PARAMETERS_MAYBE_INITIALIZED = Yes
  • ASSUME_FUNCPTR_PARAMETERS_MAYBE_MODIFIED = Yes
  • ASSUME_VARARG_PARAMETERS_MAYBE_FREED = Yes
  • ASSUME_VARARG_PARAMETERS_MAYBE_INITIALIZED = Yes
  • ASSUME_VARARG_PARAMETERS_MAYBE_MODIFIED = Yes
  • ASSUME_OTHER_PARAMETERS_MAYBE_FREED = Yes
  • ASSUME_OTHER_PARAMETERS_MAYBE_INITIALIZED = Yes
  • ASSUME_OTHER_PARAMETERS_MAYBE_MODIFIED = Yes
Tags

Specifies the procedures from which reachability information is computed.

Type Procedure, as a string of the form "file:procedure" or "file:linenum".
Behavior fname:XXXX is interpreted as follows.
  • fname matches every file whose full path name has fname as a suffix. Empty fname matches all files in the project.
  • XXXX must be nonempty. If it is an integer, it is treated as a line number and matches every procedure whose definition includes line XXXX. If it is '*', it matches every procedure. Otherwise, it matches every procedure whose cs_pdg_friendly_name() is exactly XXXX.

If no REACHABILITY_ROOTS rules are specified (or some are specified but the last one is "REACHABILITY_ROOTS= "), CodeSonar treats all procedures as reachable.

Notes Reachability analysis results are used in the following contexts.

CodeSonar will generate

  • an alert for each REACHABILITY_ROOTS fname:XXXX rule that does not match at least one procedure in the project.
  • an alert if there are one or more WARNING_FILTER reachable rules, or SKIP_ANALYSIS_OF += UNREACHABLE_FUNCTIONS (or UNREACHABLE_BINARY_FUNCTIONS, for binary analyses) is specified, but set REACHABLE_FROM_ROOTS is empty.
  • an alert if there are one or more WARNING_FILTER reachable rules, or SKIP_ANALYSIS_OF += UNREACHABLE_FUNCTIONS is specified, but no procedures match the specified REACHABILITY_ROOTS.
  • an Analysis Log message for each REACHABILITY_ROOTS fname:XXXX rule that matches more than one procedure (these are permitted, but are logged in case they were not intentional).

For a typical simple C program, we might be only interested in reachability from main(), and consider any procedure that is not [transitively] called by main() to be unreachable. For example:

   REACHABILITY_ROOTS = main.c:main

Example 1: all of the following will match procedure main() in file /home/me/myproject/src/main.c

  REACHABILITY_ROOTS += :main
  REACHABILITY_ROOTS += main.c:main
  REACHABILITY_ROOTS += /main.c:main
  REACHABILITY_ROOTS += myproject/src/main.c:main

Example 2: the following will match any procedure in every file whose full path name has foo.c as a suffix.

 REACHABILITY_ROOTS += foo.c:*

We define sets REACHABLE_FROM_ROOTS and REACHABLE_FROM_ROOTS_EXTENDED.

REACHABLE_FROM_ROOTS is the set of all procedures P such that:

If no REACHABILITY_ROOTS rules are specified (or some are specified but the last one is "REACHABILITY_ROOTS= "), set REACHABLE_FROM_ROOTS contains all procedures in the project.

In some cases, such as calls through function pointer variables, CodeSonar may not correctly resolve all callees for a procedure. This can result in procedures incorrectly being identified as unreachable, which in turn can reduce the quality of CodeSonar analysis results. The use of set REACHABLE_FROM_ROOTS_EXTENDED represents a safeguard against such cases.

REACHABLE_FROM_ROOTS_EXTENDED is defined as follows. Let R be the source procedure subset of REACHABLE_FROM_ROOTS, and let S be the set of all source procedures in the analyzed project (for a source-only analysis, all procedures are source procedures).

  • If |R|/|S| is less than the value of parameter SOURCE_MIN_REACHABLE_FROM_ROOTS, REACHABLE_FROM_ROOTS_EXTENDED is the union of REACHABLE_FROM_ROOTS and S. CodeSonar will issue an alert to notify you that it has made this determination.
  • Otherwise, REACHABLE_FROM_ROOTS_EXTENDED is equal to REACHABLE_FROM_ROOTS.

If one or more REACHABILITY_ROOTS rules are specified (and the last one is NOT "REACHABILITY_ROOTS= "), and no procedure in the project matches any REACHABILITY_ROOTS rule, set REACHABLE_FROM_ROOTS will be empty and CodeSonar will issue alerts as noted above.

If this occurs, you have several options.

  • Adjust your REACHABILITY_ROOTS rules so that they match at least one procedure in the project.
  • Add a final rule "REACHABILITY_ROOTS= " so that all procedures are treated as reachable.
  • Remove any WARNING_FILTER reachable rules and SKIP_ANALYSIS_OF UNREACHABLE_FUNCTIONS rules, if you no longer need them.

Specifies an output file for diagnostic reachability information.

Type string (representing a file path)
Behavior Reachability information will be output to the specified file.
Notes Example:
  REACHABILITY_DUMP_FILE = /PATH/TO/dump_file
Tags
  • Additional Outputs from the Build/Analysis

Use the HARDCODED_ARGS_* family of parameters to define warning classes that indicate the use of hardcoded arguments to functions whose arguments should not be hardcoded.

Type
  • HARDCODED_ARGS_REGEX: Boost 'POSIX Extended Regular Expression'
  • HARDCODED_ARGS_LIST: comma-separated list of numbers
  • HARDCODED_ARGS_CLASS_NAME: string
  • HARDCODED_ARGS_CATEGORIES: string
  • HARDCODED_ARGS_BASE_RANK: number
  • HARDCODED_ARGS_SIGNIFICANCE: { UNSPECIFIED, SECURITY, RELIABILITY, REDUNDANCY, STYLE, DIAGNOSTIC }
Behavior These parameters are used together to specify functions with arguments that should never be hardcoded, and warnings to issue if hardcoded arguments are used.
  • HARDCODED_ARGS_REGEX is a regular expression. Functions whose name matches this expression will be included in the check.
  • HARDCODED_ARGS_LIST are the positions (counting from 1) of the arguments whose values should never be hardcoded.
  • HARDCODED_ARGS_CLASS_NAME will be used as the warning class name. If the message contains any characters that are special to HTML, they must be HTML-encoded.
  • HARDCODED_ARGS_CATEGORIES is the set of categories for the warning, as a semicolon-separated list. This defaults to the empty string.
  • HARDCODED_ARGS_BASE_RANK is the base rank assigned to the warning, with default 25.0.
  • HARDCODED_ARGS_SIGNIFICANCE is a string representing the Significance classification for this warning class.
Notes The HARDCODED_ARGS_CATEGORIES, HARDCODED_ARGS_BASE_RANK, and HARDCODED_ARGS_SIGNIFICANCE settings are optional, but HARDCODED_ARGS_REGEX and HARDCODED_ARGS_CLASS_NAME must be fully specified. The HARDCODED_ARGS_REGEX message must come first, and the HARDCODED_ARGS_CLASS_NAME second.

If two or more sets of HARDCODED_ARGS_* rules have the same HARDCODED_ARGS_CLASS_NAME value, the same warning class will be used to cover all cases. Therefore, sets of rules with the same HARDCODED_ARGS_CLASS_NAME should also have the same HARDCODED_ARGS_CATEGORIES and HARDCODED_ARGS_BASE_RANK values (that is, they should only differ in the HARDCODED_ARGS_REGEX or HARDCODED_ARGS_LIST settings).

Similarly, if a set of HARDCODED_ARGS_* rules has a HARDCODED_ARGS_CLASS_NAME that is the same as the name of a standard CodeSonar warning class, the category and rank settings of the standard class will apply and any HARDCODED_ARGS_CATEGORIES or HARDCODED_ARGS_BASE_RANK specified in the set will not be used.

Example:

  HARDCODED_ARGS_REGEX = ^crypt(_r)?$
  HARDCODED_ARGS_LIST = 2
  HARDCODED_ARGS_CLASS_NAME = Hardcoded Crypto Salt
  HARDCODED_ARGS_SIGNIFICANCE = SECURITY

specifies that the second argument to crypt() and crypt_r() should not be hardcoded, and that warnings of class "Hardcoded Crypto Salt" should be issued at locations where this constraint is violated.

Factory Settings
  • HARDCODED_ARGS_REGEX = ^CreateProcessWithLogon(A|W)?$
  • HARDCODED_ARGS_LIST = 1, 3
  • HARDCODED_ARGS_CLASS_NAME = Hardcoded Authentication
  • HARDCODED_ARGS_CATEGORIES = HARDCODED.AUTH;CWE:547
  • HARDCODED_ARGS_SIGNIFICANCE = SECURITY
  • HARDCODED_ARGS_REGEX = ^LogonUser(Ex|ExEx)?(A|W)?$
  • HARDCODED_ARGS_LIST = 1, 3
  • HARDCODED_ARGS_CLASS_NAME = Hardcoded Authentication
  • HARDCODED_ARGS_CATEGORIES = HARDCODED.AUTH;CWE:547
  • HARDCODED_ARGS_SIGNIFICANCE = SECURITY
  • HARDCODED_ARGS_REGEX = ^CredUIPromptForCredentials(A|W)?$
  • HARDCODED_ARGS_LIST = 5, 7
  • HARDCODED_ARGS_CLASS_NAME = Hardcoded Authentication
  • HARDCODED_ARGS_CATEGORIES = HARDCODED.AUTH;CWE:547
  • HARDCODED_ARGS_SIGNIFICANCE = SECURITY
  • HARDCODED_ARGS_REGEX = ^WNetAddConnection(A|W)?$
  • HARDCODED_ARGS_LIST = 2
  • HARDCODED_ARGS_CLASS_NAME = Hardcoded Authentication
  • HARDCODED_ARGS_CATEGORIES = HARDCODED.AUTH;CWE:547
  • HARDCODED_ARGS_SIGNIFICANCE = SECURITY
  • HARDCODED_ARGS_REGEX = ^WNetAddConnection2?(A|W)?$
  • HARDCODED_ARGS_LIST = 2, 3
  • HARDCODED_ARGS_CLASS_NAME = Hardcoded Authentication
  • HARDCODED_ARGS_CATEGORIES = HARDCODED.AUTH;CWE:547
  • HARDCODED_ARGS_SIGNIFICANCE = SECURITY
  • HARDCODED_ARGS_REGEX = ^WNetAddConnection3(A|W)?$
  • HARDCODED_ARGS_LIST = 3, 4
  • HARDCODED_ARGS_CLASS_NAME = Hardcoded Authentication
  • HARDCODED_ARGS_CATEGORIES = HARDCODED.AUTH;CWE:547
  • HARDCODED_ARGS_SIGNIFICANCE = SECURITY
  • HARDCODED_ARGS_REGEX = ^ChangeAccountPassword(A|W)?$
  • HARDCODED_ARGS_LIST = 3, 4, 5
  • HARDCODED_ARGS_CLASS_NAME = Hardcoded Authentication
  • HARDCODED_ARGS_CATEGORIES = HARDCODED.AUTH;CWE:547
  • HARDCODED_ARGS_SIGNIFICANCE = SECURITY
  • HARDCODED_ARGS_REGEX = ^SQLConnect(A|W|UNIX)?$
  • HARDCODED_ARGS_LIST = 4, 6
  • HARDCODED_ARGS_CLASS_NAME = Hardcoded Authentication
  • HARDCODED_ARGS_CATEGORIES = HARDCODED.AUTH;CWE:547
  • HARDCODED_ARGS_SIGNIFICANCE = SECURITY
  • HARDCODED_ARGS_REGEX = ^WTSConnectSession(A|W)?$
  • HARDCODED_ARGS_LIST = 3
  • HARDCODED_ARGS_CLASS_NAME = Hardcoded Authentication
  • HARDCODED_ARGS_CATEGORIES = HARDCODED.AUTH;CWE:547
  • HARDCODED_ARGS_SIGNIFICANCE = SECURITY
  • HARDCODED_ARGS_REGEX = ^(ecb_|cbc_)?crypt(_r)?$
  • HARDCODED_ARGS_LIST = 1
  • HARDCODED_ARGS_CLASS_NAME = Hardcoded Crypto Key
  • HARDCODED_ARGS_CATEGORIES = HARDCODED.KEY;CWE:547
  • HARDCODED_ARGS_SIGNIFICANCE = SECURITY
  • HARDCODED_ARGS_REGEX = ^passwd2des$
  • HARDCODED_ARGS_LIST = 1
  • HARDCODED_ARGS_CLASS_NAME = Hardcoded Crypto Key
  • HARDCODED_ARGS_CATEGORIES = HARDCODED.KEY;CWE:547
  • HARDCODED_ARGS_SIGNIFICANCE = SECURITY
  • HARDCODED_ARGS_REGEX = ^x(en|de)crypt$
  • HARDCODED_ARGS_LIST = 2
  • HARDCODED_ARGS_CLASS_NAME = Hardcoded Crypto Key
  • HARDCODED_ARGS_CATEGORIES = HARDCODED.KEY;CWE:547
  • HARDCODED_ARGS_SIGNIFICANCE = SECURITY
  • HARDCODED_ARGS_REGEX = ^krb5_c_(en|de)crypt$
  • HARDCODED_ARGS_LIST = 2
  • HARDCODED_ARGS_CLASS_NAME = Hardcoded Crypto Key
  • HARDCODED_ARGS_CATEGORIES = HARDCODED.KEY;CWE:547
  • HARDCODED_ARGS_SIGNIFICANCE = SECURITY
  • HARDCODED_ARGS_REGEX = ^BF_set_key$
  • HARDCODED_ARGS_LIST = 3
  • HARDCODED_ARGS_CLASS_NAME = Hardcoded Crypto Key
  • HARDCODED_ARGS_CATEGORIES = HARDCODED.KEY;CWE:547
  • HARDCODED_ARGS_SIGNIFICANCE = SECURITY
  • HARDCODED_ARGS_REGEX = ^[dD][eE][sS]_set_key(_unchecked|_checked)?$
  • HARDCODED_ARGS_LIST = 1
  • HARDCODED_ARGS_CLASS_NAME = Hardcoded Crypto Key
  • HARDCODED_ARGS_CATEGORIES = HARDCODED.KEY;CWE:547
  • HARDCODED_ARGS_SIGNIFICANCE = SECURITY
  • HARDCODED_ARGS_REGEX = ^[dD][eE][sS]_string_to_key$
  • HARDCODED_ARGS_LIST = 1
  • HARDCODED_ARGS_CLASS_NAME = Hardcoded Crypto Key
  • HARDCODED_ARGS_CATEGORIES = HARDCODED.KEY;CWE:547
  • HARDCODED_ARGS_SIGNIFICANCE = SECURITY
  • HARDCODED_ARGS_REGEX = ^[dD][eE][sS]_string_to_2keys$
  • HARDCODED_ARGS_LIST = 1
  • HARDCODED_ARGS_CLASS_NAME = Hardcoded Crypto Key
  • HARDCODED_ARGS_CATEGORIES = HARDCODED.KEY;CWE:547
  • HARDCODED_ARGS_SIGNIFICANCE = SECURITY
  • HARDCODED_ARGS_REGEX = ^krb5_c_string_to_key$
  • HARDCODED_ARGS_LIST = 3
  • HARDCODED_ARGS_CLASS_NAME = Hardcoded Crypto Key
  • HARDCODED_ARGS_CATEGORIES = HARDCODED.KEY;CWE:547
  • HARDCODED_ARGS_SIGNIFICANCE = SECURITY
  • HARDCODED_ARGS_REGEX = ^[dD][eE][sS]_(f)?crypt$
  • HARDCODED_ARGS_LIST = 2
  • HARDCODED_ARGS_CLASS_NAME = Hardcoded Crypto Salt
  • HARDCODED_ARGS_CATEGORIES = HARDCODED.SALT;CWE:547
  • HARDCODED_ARGS_SIGNIFICANCE = SECURITY
  • HARDCODED_ARGS_REGEX = ^crypt(_r)?$
  • HARDCODED_ARGS_LIST = 2
  • HARDCODED_ARGS_CLASS_NAME = Hardcoded Crypto Salt
  • HARDCODED_ARGS_CATEGORIES = HARDCODED.SALT;CWE:547
  • HARDCODED_ARGS_SIGNIFICANCE = SECURITY
  • HARDCODED_ARGS_REGEX = ^krb5_c_string_to_key$
  • HARDCODED_ARGS_LIST = 4
  • HARDCODED_ARGS_CLASS_NAME = Hardcoded Crypto Salt
  • HARDCODED_ARGS_CATEGORIES = HARDCODED.SALT;CWE:547
  • HARDCODED_ARGS_SIGNIFICANCE = SECURITY
  • HARDCODED_ARGS_REGEX = ^srand((om)|(48))?$
  • HARDCODED_ARGS_LIST = 1
  • HARDCODED_ARGS_CLASS_NAME = Hardcoded Seed in PRNG
  • HARDCODED_ARGS_SIGNIFICANCE = SECURITY

Enable taint highlighting in the hub GUI.

Type { Yes, No }
Behavior
  • Yes : CodeSonar will perform taint propagation analysis, and use the results of that analysis to highlight tainted values in source code displayed in the hub GUI.
  • No : CodeSonar will not perform taint propagation analysis, and taint highlighting will not be available.
Notes Taint propagation analysis takes place in the pointer analysis phase. Note that if TAINT_HIGHLIGHTING=No then taint propagation analysis will not be performed even if pointer analysis passes are being performed for the sake of resolving function pointers (for FUNCTION_POINTER_RESOLUTION).

The extra information gained during taint propagation analysis can also improve taint warnings in some cases.

Factory Setting
  • TAINT_HIGHLIGHTING = Yes

Enable function pointer resolution.

Type { Yes, No }
Behavior
  • No : CodeSonar will not perform function pointer resolution.
Notes Function pointer resolution takes place in the pointer analysis phase. Note that if FUNCTION_POINTER_RESOLUTION=No then function pointer resolution will not be performed even if pointer analysis passes are being performed for the sake of taint propagation analysis (for TAINT_HIGHLIGHTING).

Setting this to Yes can improve CodeSonar results by permitting a more precise analysis of behavior at function pointer call sites.

Factory Setting
  • FUNCTION_POINTER_RESOLUTION = Yes

For the taint analysis, specifies whether global inputs to procedures (as opposed to parameter inputs) should be checked for taint, provided the procedure uses them in ways where they should not be tainted.

Type { Yes, No }
Behavior
  • Yes : the taint analysis will check global inputs to prodedures for taint.
  • No : the taint analysis will not check global inputs to prodedures for taint.
Notes Setting this to Yes can lead to scalability issues on large projects.

This setting is analogous to MAX_GLOBAL_CHECK_AGE, but for taint, and only has two possible settings (effectively 0 and unlimited).

Factory Setting
  • TAINT_TRIGGER_ON_GLOBALS = No
Tags
  • Analysis resource/effort limit

For the taint analysis, a threshold for expression complexity.

Type integer
Behavior Information about expressions whose complexity exceeds this limit is discarded.
Notes Expressions with more pointer dereferences and field/array accesses have a higher complexity.

For the remainder of the analysis, expression complexity is bounded instead by MAX_EXPRESSION_COMPLEXITY.

Factory Setting
  • TAINT_MAX_EXPRESSION_COMPLEXITY = 40
Tags
  • Analysis resource/effort limit

For the taint analysis, specifies the maximum size of a points-to set.

Type integer
Factory Setting
  • TAINT_MAX_SET_CARDINALITY = 10
Tags
  • Analysis resource/effort limit

For the taint analysis, specifies a per-procedure bound on the number of modified values (outputs and side effects) that CodeSonar will keep track of in procedure summaries.

Type integer
Behavior If a procedure modifies more values than this maximum, CodeSonar will select values to discard from the summaries for the procedure to bring the total number of values tracked down to the maximum. Increasing the value for this preference may allow more precise analysis, at the cost of longer analysis time and higher memory usage.
Notes The values modified by a procedure may include its return value, parameters and values from its calling environment, and values derived from these.

For the remainder of the analysis, the number of modified values is bounded instead by MAX_MODIFIED_VALUES.

Factory Setting
  • TAINT_MAX_MODIFIED_VALUES = 100
Tags
  • Analysis resource/effort limit

For the taint analysis, specifies how many inputs to a procedure can be checked at call sites.

Type integer
Behavior A negative value indicates no limit. Lower (positive) values will conserve disk space and time, but can cause false negatives.
Notes This bound may be useful for projects containing millions of lines of code.

Checks for code nearer to the beginning of procedures receive preferential treatment.

Both implicit and explicit inputs are counted. For example, both the pointer passed to strlen() and the value pointed to by that pointer are counted as inputs to strlen(). Global variables transitively used by a procedure also qualify.

For the remainder of the analysis, the number of checked inputs is bounded instead by MAX_CHECKED_INPUTS_PER_PROCEDURE.

Factory Setting
  • TAINT_MAX_CHECKED_INPUTS_PER_PROCEDURE = 100
Tags
  • Analysis resource/effort limit

For the taint analysis, specifies how many usages of a particular input to a procedure can be checked at call sites.

Type integer
Behavior Lower values will conserve disk space and time, but can cause false negatives.
Notes This bound may be useful for projects containing millions of lines of code.
Factory Setting
  • TAINT_MAX_CHECKED_LOCATIONS_PER_INPUT = 50
Tags
  • Analysis resource/effort limit

For the taint analysis, specifies the maximum number of taint kinds for which there can be checks against a single procedure's inputs.

Type integer
Behavior If a single procedure's inputs are checked against more than this many individual taint kinds - either directly in the procedure, or in its (transitive) callees - CodeSonar will select taint sinks to discard in order to bring the total number of taint kinds down to the specified limit.

Special values csonar_taint_source_any() and csonar_taint_source_any_no_kind() are each counted as one taint kind.

Setting TAINT_MAX_CHECKED_TAINT_KINDS_PER_PROCEDURE=0 will discard all taint sinks, except for intraprocedural ones (which do not typically exist).

Notes CodeSonar ships with 13 predefined taint kinds, plus special values csonar_taint_source_any() and csonar_taint_source_any_no_kind(). Any TAINT_MAX_CHECKED_TAINT_KINDS_PER_PROCEDURE setting higher than 15 will therefore impose no restrictions on taint checking (unless you have implemented additional custom taint kinds).
Factory Setting
  • TAINT_MAX_CHECKED_TAINT_KINDS_PER_PROCEDURE = 100
Tags
  • Analysis resource/effort limit

For warnings implemented by taint analysis, specifies the maximum number of program points along an execution path that will be considered.

Type integer
Behavior Taint warnings traversing more than this many program points will not be detected during refinement. Larger values may allow warning refinement to use more time and detect longer warnings.
Factory Setting
  • TAINT_MAX_WARNING_PATH_LENGTH = 10000
Tags
  • Analysis resource/effort limit

Bounds the number of similar taint warnings that CodeSonar will report. Only successfully refined warnings count against this limit.

Type integer
Notes Most users will never need a setting higher than 1

This parameter can significantly affect performance.

Factory Setting
  • TAINT_MAX_SIMILAR_PATHS = 1
Tags
  • Analysis resource/effort limit

Bounds the number of potentially similar taint warnings that CodeSonar will attempt to refine. Both successfully refined warnings and dismissed warnings count against this limit.

Type integer
Notes TAINT_MAX_SIMILAR_PATHS is similar to this except that it bounds the number of reported taint warnings. TAINT_MAX_ATTEMPTED_SIMILAR_PATHS should always be at least as large as TAINT_MAX_SIMILAR_PATHS.
Factory Setting
  • TAINT_MAX_ATTEMPTED_SIMILAR_PATHS = 1
Tags
  • Analysis resource/effort limit

Specifies a set of taint kinds that should be ignored by the taint analysis.

Type string
Behavior If the specified string matches the name of built in or user-defined taint kind, taint of that kind will be ignored by the analysis.

Certain warning classes rely on exactly one taint kind. For these classes, CodeSonar enables or disables the relevant taint kind automatically depending on whether or not the warning class is enabled. Do not specify these taint kinds in DISABLED_TAINT_KINDS rules: add_overflow, mult_overflow, sub_underflow, truncation_overflow, lib_blacklist, proc_blacklist, net_blacklist.

Notes Taint sinks can be enabled and disabled by using a WARNING_FILTER rule, for example, to disable specific warning classes or warnings reported at certain locations. DISABLED_TAINT_KINDS can be used to control which taint sources are enabled, at a coarse granularity.

This setting might be used to disable taint kinds that are trusted in the context of the subject software. For example, suppose we have this code:

   system(getenv("FOO"));

CodeSonar would, by default, issue a Command Injection warning. However, perhaps this warning is undesirable because, in this context, the environment is trusted. You can disable environment taint to suppress this and other similar warnings:

   DISABLED_TAINT_KINDS += environment

The following taint kinds are enabled by default.

  DISABLED_TAINT_KINDS += dns
  DISABLED_TAINT_KINDS += environment
  DISABLED_TAINT_KINDS += fd
  DISABLED_TAINT_KINDS += file
  DISABLED_TAINT_KINDS += file_metadata
  DISABLED_TAINT_KINDS += network
  DISABLED_TAINT_KINDS += registry
Factory Setting
  • DISABLED_TAINT_KINDS += time
Tags
  • Fine Tuning for Warnings

Specifies the largest allocation size that can be successfully satisfied on the target platform.

Type non-negative integer
Behavior The CodeSonar analysis will assume that no heap allocation requests for more than this number of bytes can succeed.

Specifying 0, or values larger than 2^31-1, has no effect.

Notes An additional consequence of setting MAX_ALLOCATION_SIZE=X (for some non-negative integer X) is that strlen() cannot return values larger than X.

Setting MAX_ALLOCATION_SIZE to a suitable non-zero value can be useful to suppress some warnings that might only be possible if the program has already run out of memory.

Factory Setting
  • MAX_ALLOCATION_SIZE = 1073741824
Tags
  • Warning-Class-Specific Settings

Specifies an upper bound on the allowed "size" in some integer overflow warning classes. If the resulting "size" will always exceed the upper bound, then the warning will be dropped.

Type non-negative integer
Behavior Can be useful if reviewers are not interested in overflow warnings that would always result in very large (e.g., unsatisfiable) allocation requests, for example.
Notes Due to analysis engine limitations, values larger than 2^31-1 will be ignored. Furthermore, values less than (2^31-1)/8 are not effective w.r.t. strlen and similar. These limitations may be addressed in the future.

This check is always performed against the least significant 32 bits of the size using an unsigned interpretation. This shortcoming may be fixed in the future, and probably means the feature will only work well with 32-bit targets for now.

Tags

Specifies whether signed integer division overflow (e.g., -1 / MIN_INT) should be treated as if it terminates execution, when using 32-bit or wider division.

Type { Yes, No }
Behavior Setting this to Yes can allow CodeSonar to rule out certain warnings that might only be possible in the presence of division overflow. This setting rarely matters.
Notes The C language leaves behavior undefined. In practice, Intel hardware raises an exception similar to a division by zero. sparc hardware will silently evaluate to -1/MIN_INT to 0x80000001. Other hardware may behave differently.
Factory Setting
  • DIV_OVERFLOW_CRASHES = Yes
Tags
  • Warning-Class-Specific Settings

Specifies whether integer division by zero terminates execution or merely results in an unknown value.

Type { Yes, No }
Behavior
  • Yes : CodeSonar will treat division by zero as a crashing bug. In particular, the analysis will deduce that if execution continues after a division operation, the divisor cannot have been zero. This can eliminate some false positives.
  • No : CodeSonar will treat division by zero as an operation that results in an unknown value.
Notes The vast majority of environments will terminate execution on division by zero.
Factory Setting
  • DIV_BY_ZERO_CRASHES = Yes
Tags
  • Warning-Class-Specific Settings

Specifies whether dereferences of addresses below the NULL_POINTER_THRESHOLD will terminate execution.

Type { Yes, No }
Behavior
  • Yes : CodeSonar will treat null pointer dereferences (defined as dereferences of addresses below the NULL_POINTER_THRESHOLD) as crashing bugs. In particular, the analysis will deduce that if execution continues after a pointer dereference, the pointer cannot have been NULL. This can eliminate some false positives.
  • No : CodeSonar will not impose constraints on the pointer value as a consequence of dereferencing it.
Notes Some embedded environments may allow dereferencing of NULL.

We do not recommend setting this to No as it may produce confusing results or false positives, such as the following division by zero:

  p = unknown_value();
  if( rand() ) {
       *p = 42;
       j = 0;
  } else { j = 1; }
  if( !p ) j = 1 / j;
Factory Setting
  • NULL_POINTER_DEREF_CRASHES = Yes
Tags
  • Warning-Class-Specific Settings

Modify the set of options being passed to the Java build/analysis.

Type a list of Java build options

Microsoft libc command line encoding rules apply (even on non-Windows systems).

Behavior The specified options will be prepended to the set of options passed to the Java build/analysis.
Languages Java
Notes The += operator will actually prepend to this preference (in all cases except for other parameters with names of the form *_PREPEND, the += operator appends). This means that if you specify two JAVA_FLAGS_PREPEND+= settings, the options in the second rule will be prepended to the options in the first setting.
Factory Setting
  • JAVA_FLAGS_PREPEND +=
Tags
  • Governs the Build/Analysis

Modify the set of options being passed to the Java build/analysis.

Type a list of Java build options

Microsoft libc command line encoding rules apply (even on non-Windows systems).

Behavior The specified options will be appended to the set of options passed to the Java build/analysis.
Languages Java
Factory Setting
  • JAVA_FLAGS_APPEND +=
Tags
  • Governs the Build/Analysis

Modify the set of options being passed to the C# build/analysis.

Type a list of C# build options
Behavior The specified options will be prepended to the set of options passed to the C# build/analysis.
Languages C#
Notes The += operator will actually prepend to this preference (in all cases except for other parameters with names of the form *_PREPEND, the += operator appends). This means that if you specify two CSHARP_FLAGS_PREPEND+= settings, the options in the second rule will be prepended to the options in the first setting.
Factory Setting
  • CSHARP_FLAGS_PREPEND +=
Tags
  • Governs the Build/Analysis

Modify the set of options being passed to the C# build/analysis.

Type a list of C# build options
Behavior The specified options will be appended to the set of options passed to the C# build/analysis.
Languages C#
Factory Setting
  • CSHARP_FLAGS_APPEND +=
Tags
  • Governs the Build/Analysis

Specifies an upper bound on the number of analysis passes that will take place in the pointer analysis phase.

Type positive integer
Behavior Depends on the settings of TAINT_HIGHLIGHTING and FUNCTION_POINTER_RESOLUTION.
  • If one or both are set to Yes : the pointer analysis phase will stop after this many passes, or after pointer analysis results converge - whichever occurs first.
  • If both are set to No: the CodeSonar analysis will not include a pointer analysis phase, regardless of the setting of MAX_POINTER_ANALYSIS_PASSES.
Notes CodeSonar uses pointer analysis to obtain information about:
  • function pointer resolution (including virtual function dispatch), and
  • taint propagation.

Pointer analysis can have high time cost, and there are generally diminishing returns as the number of passes increases.

  • Only one pass is required if the program does not use function pointers: this single pass is sufficient for taint analysis.
  • Two or three passes will be sufficient for most programs that use function pointers.
  • Very few programs will require more than 10 passes.
Factory Setting
  • MAX_POINTER_ANALYSIS_PASSES = 2
Tags
  • Analysis resource/effort limit

Specifies whether CodeSonar will issue Tainted Buffer Access warnings when the accessed buffer cannot be identified (and so its size cannot be determined).

Type { Yes, No }
Behavior
  • Yes : CodeSonar will issue Tainted Buffer Access warnings if the size of the accessed buffer cannot be determined and the access location is tainted, or if the size of the accessed buffer can be determined and the access location is tainted and may lie outside the buffer.
  • No : CodeSonar will only issue Tainted Buffer Access warnings if the size of the accessed buffer can be determined and the tainted access location may lie outside the buffer.
Notes For example, CodeSonar will only issue a Tainted Buffer Access warning for the following code fragment if TAINTED_BUF_TRIGGER_ON_UNKNOWN_BUFFERS=Yes.
  p = undefined_function();
  p[getchar()] = 42;

Setting TAINTED_BUF_TRIGGER_ON_UNKNOWN_BUFFERS=Yes will potentially generate a large number of false positive Tainted Buffer Access warnings.

Factory Setting
  • TAINTED_BUF_TRIGGER_ON_UNKNOWN_BUFFERS = No
Tags

Specifies how taint propagates through global variables.

Type {None, Context_Insensitive, Context_Sensitive}
Behavior
  • None : the analysis will not propagate taint through globals from callers to callees.
  • Context_Sensitive : the analysis will propagate taint through globals from callers to callees, but will likely drop taint if is propagated down too many calls.
  • Context_Insensitive : the analysis will propagate more taint through globals from callers to callees than it will for the Context_Sensitive setting, but the propagation may be imprecise. This setting tends to produce many false positives in programs with tainted globals.
Notes None and Context_Sensitive are essentially equivalent for the purposes of reporting taint warnings. The primary advantage of Context_Sensitive over None will be more taint marking in the GUI.

Setting TAINT_TRIGGER_ON_GLOBALS to Yes will cause more taint warnings to be emitted against global variables when GLOBAL_TAINT_MODE=None or GLOBAL_TAINT_MODE=Context_Sensitive.

Factory Setting
  • GLOBAL_TAINT_MODE = None
Tags
  • Analysis Properties

Specifies whether and how the CodeSonar analysis will propagate function pointers through global variables.

Type {None, Context_Insensitive, Context_Sensitive}
Behavior
  • None : the analysis will not propagate function pointers through globals from callers to callees.
  • Context_Sensitive : the analysis will propagate function pointers through globals from callers to callees, but will likely drop points-to facts if they are propagated down too many calls.
  • Context_Insensitive : the analysis will propagate more function pointers through globals from callers to callees than it will for the Context_Sensitive setting, but the propagation may be imprecise.
Factory Setting
  • GLOBAL_FUNCTION_POINTER_MODE = Context_Insensitive
Tags
  • Analysis Properties

Specifies whether or not CodeSonar can immediately exploit knowledge of function pointer resolvents that might not be known when using other possible parallel analysis schedules.

Type { Yes, No }
Behavior
  • Yes : CodeSonar will take advantage of function pointer resolvents as soon as they are discovered.
  • No : CodeSonar will ignore this information until the next pointer analysis pass.
Notes This setting is a trade off between determinism and analysis accuracy. A setting of Yes will produce fewer false negatives but can introduce nondeterminism into parallel analyses.

A setting of Yes allows CodeSonar to learn more about the program in fewer pointer analysis passes. However, a setting of Yes may also cause non-deterministic behavior for parallel analyses. A higher setting for MAX_POINTER_ANALYSIS_PASSES may be required to get equivalent results when RELAXED_TOPDOWN_FUNCPTR_RESOLUTION=No.

Factory Setting
  • RELAXED_TOPDOWN_FUNCPTR_RESOLUTION = Yes
Tags
  • Analysis Properties

Specifies whether to adjust the rank of a warning if values relevant to the warning are tainted.

Type { Yes, No }
Behavior
  • Yes : if one or more values relevant to a warning are tainted, the warning rank computation will be adjusted to a smaller value (that is, one that indicates that the warning should be reviewed earlier). The magnitude of the adjustment is proportional to the number of relevant values that are tainted.
  • No : The warning rank will not be affected by the presence or absence of taint.
Notes This parameter has no effect unless the taint propagation analysis is enabled with TAINT_HIGHLIGHTING=Yes. The cost can be as much as 20 percent of overall analysis time.
Factory Setting
  • TAINT_RANK_BONUS = No
Tags
  • Analysis resource/effort limit

Bound for searching paths during taint refinement.

Type integer
Behavior When the number is larger, more paths are searched, but more time is used.
Notes This preference represents a trade-off between time and thoroughness.
Factory Setting
  • TAINT_SEARCH_BOUND = 100
Tags
  • Analysis resource/effort limit

Bound effort for expanding callsites during taint refinement.

Type integer
Behavior When the number is larger, more paths are searched, but more time is used.
Notes This preference represents a trade-off between time and thoroughness.
Factory Setting
  • TAINT_CALLSITE_EXPANSION_EFFORT = 1000
Tags
  • Analysis resource/effort limit

Specifies how a function propagates data, and the taint on that data, into a structured memory block.

Type A string of the form
   <name>, <dst>, <src>, <n>, <scale>, <kind>

where:

  • <name> is the name of the function. If you have defined a CodeSonar replacement function csonar_replace_f() for the function f() of interest, specify csonar_replace_f as the <name> (not f).
  • <dst> is the position of the 'destination' argument (counting from 1).
  • <src> is the number of the 'source' argument (counting from 1), or 0 if there is no source parameter - that is, if the source is implicit to the function.
  • <n> is the position of the 'size' argument (counting from 1), or 0 if there is no single size parameter, as is the case with fread.
  • <scale> is the factor by which the size parameter <n> should be multiplied in order to determine the block size in bytes. In many cases this is 1, but it may be larger, for instance when the function copies <n> words rather than <n> bytes. This can be either an integer or a type name: one of { SHORT, LONG, SIZE_T, PTRDIFF_T, WCHAR_T, POINTER, LONG_LONG, INT128, INT, FLOAT, DOUBLE, LONG_DOUBLE }.
  • <kind> characterizes the general behavior of the function: one of { MEMCPY, MEMCPY+PROPAGATE, MEMSET+PROPAGATE, READ, READ+PROPAGATE, IGNORE }.
Behavior CodeSonar will treat calls to function <name> as propagating data - including any taint on that data - to the block of memory starting at the address specified by the <dst> parameter, where the size of the block is determined by multiplying the value of the <n> parameter by <scale>.

The details of data and taint propagation depend the value of <kind>:

  • MEMCPY : the function is like memcpy(): the fields of <src> are copied to the corresponding fields of the destination block, with taint propagated along with the data for each field. If <name>'s implementation applies taint to <dst>, it is propagated only to the first field of the destination block.
  • MEMCPY+PROPAGATE : as for MEMCPY except that if <name>'s implementation applies taint to <dst>, it is propagated to all fields of the destination block.
  • MEMSET+PROPAGATE : the function is like memset(): a single <src> element is distributed to each of the fields of the destination block. The taint on <src> is likewise distributed to all fields of the destination block. If <name>'s implementation applies taint to <dst>, it is propagated to all fields of the destination block.
  • READ : the function is like read(): content comes from an indeterminate source, filling the block. When <kind> has this value, the <src> is ignored. If <name>'s implementation applies taint to <dst>, it is propagated only to the first field of the destination block.
  • READ+PROPAGATE : as for READ except that if <name>'s implementation applies taint to <dst>, it is propagated to all fields of the destination block.
  • IGNORE : all previous rules with the same <name> are ignored. Note that a subsequent rule with the same <name> will take precedence over an IGNORE rule.
Notes In some cases, the data propagation behavior of a function depends on type information that is only available to the function caller and not to the function itself. For example, memcpy() copies the contents of a source block to a destination, bytewise, without regard for the actual organization of those contents. An analysis that only considers this bytewise behavior will not have information about the internal structure of the destination block. The TAINT_BLOCK_PROPAGATION_FUNCS parameter allows you to provide the CodeSonar taint analysis with information about how functions propagate data: this will generally reduce false negatives but increase analysis resource use (time and space).

For example, one of the rules in the factory setting for this parameter is:

  TAINT_BLOCK_PROPAGATION_FUNCS += memcpy, 1, 2, 3, 1, MEMCPY

This rule specifies that function memcpy() propagates taint as follows.

  • The source block is indicated by the second (2) argument.
  • The destination block starts at the address given in the first (1) argument.
  • The length of the destination block is obtained by multiplying the third (3) argument by 1.
  • Propagation is MEMCPY-like: data (and thus any taint on that data) is copied from fields in the source block to the corresponding fields in the destination block. Any taint applied to the second argument by memcpy() should only be propagated to the first field of the destination block (rather than to the entire block).

With this setting, the analysis can account for pointer aliasing introduced when memcpy() is used to copy structured data.

 struct S {
   int *p;
   int *q;
 };

 void f(struct S *d, struct S *s) {
   memcpy( d, s, sizeof(*d) );
 }

 void g(void) {
   int A[10], B[10];
   struct S a = {A, B}, b = {};
   f(&b, &a);          // data from a is propagated to b
                       // (nothing is tainted at this point)
   B[5] = getchar();   // B[5] is now tainted
   int C[10];
   C[b.q[5]] = 123;    // Tainted Buffer Access: can only be detected if
                       // the analysis understands that b.q[5] is the
                       // same as B[5].
 }

If there are multiple TAINT_BLOCK_PROPAGATION_FUNCS rules with the same <name>, only the last one is used.

The additional analysis enabled by TAINT_BLOCK_PROPAGATION_FUNCS rules is applied at call sites to each identified function f(), and only when a summary is used.

  • There is no additional taint propagation modeling within the body of f().
  • If the CodeSonar refinement phase expands the body of f() rather than using its summary, the additional information provided by the TAINT_BLOCK_PROPAGATION_FUNCS rule will not be used. To avoid this, create a replacement function csonar_replace_f() that wraps a call to f() (and nothing else), and use __CSURF_MARKER_LIBRARY_FUNCTION__ to mark csonar_replace_f() as a library function so that its body is not expanded.
Factory Settings
  • TAINT_BLOCK_PROPAGATION_FUNCS += __aeabi_memclr, 1, 0, 2, 1, MEMSET+PROPAGATE
  • TAINT_BLOCK_PROPAGATION_FUNCS += __aeabi_memclr4, 1, 0, 2, 1, MEMSET+PROPAGATE
  • TAINT_BLOCK_PROPAGATION_FUNCS += __aeabi_memclr8, 1, 0, 2, 1, MEMSET+PROPAGATE
  • TAINT_BLOCK_PROPAGATION_FUNCS += __aeabi_memcpy, 1, 2, 3, 1, MEMCPY
  • TAINT_BLOCK_PROPAGATION_FUNCS += __aeabi_memcpy4, 1, 2, 3, 1, MEMCPY
  • TAINT_BLOCK_PROPAGATION_FUNCS += __aeabi_memcpy8, 1, 2, 3, 1, MEMCPY
  • TAINT_BLOCK_PROPAGATION_FUNCS += __aeabi_memmove, 1, 2, 3, 1, MEMCPY
  • TAINT_BLOCK_PROPAGATION_FUNCS += __aeabi_memmove4, 1, 2, 3, 1, MEMCPY
  • TAINT_BLOCK_PROPAGATION_FUNCS += __aeabi_memmove8, 1, 2, 3, 1, MEMCPY
  • TAINT_BLOCK_PROPAGATION_FUNCS += __aeabi_memset, 1, 3, 2, 1, MEMSET+PROPAGATE
  • TAINT_BLOCK_PROPAGATION_FUNCS += __aeabi_memset4, 1, 3, 2, 1, MEMSET+PROPAGATE
  • TAINT_BLOCK_PROPAGATION_FUNCS += __aeabi_memset8, 1, 3, 2, 1, MEMSET+PROPAGATE
  • TAINT_BLOCK_PROPAGATION_FUNCS += __builtin___memcpy_chk, 1, 2, 3, 1, MEMCPY
  • TAINT_BLOCK_PROPAGATION_FUNCS += __builtin___memmove_chk, 1, 2, 3, 1, MEMCPY
  • TAINT_BLOCK_PROPAGATION_FUNCS += __builtin___mempcpy_chk, 1, 2, 3, 1, MEMCPY
  • TAINT_BLOCK_PROPAGATION_FUNCS += __builtin___memset_chk, 1, 2, 3, 1, MEMSET+PROPAGATE
  • TAINT_BLOCK_PROPAGATION_FUNCS += __builtin__memcpy_chk, 1, 2, 3, 1, MEMCPY
  • TAINT_BLOCK_PROPAGATION_FUNCS += __builtin__memmove_chk, 1, 2, 3, 1, MEMCPY
  • TAINT_BLOCK_PROPAGATION_FUNCS += __builtin__mempcpy_chk, 1, 2, 3, 1, MEMCPY
  • TAINT_BLOCK_PROPAGATION_FUNCS += __builtin__memset_chk, 1, 2, 3, 1, MEMSET+PROPAGATE
  • TAINT_BLOCK_PROPAGATION_FUNCS += __builtin_bcopy, 2, 1, 3, 1, MEMCPY
  • TAINT_BLOCK_PROPAGATION_FUNCS += __builtin_bzero, 1, 0, 2, 1, MEMSET+PROPAGATE
  • TAINT_BLOCK_PROPAGATION_FUNCS += __builtin_memcpy, 1, 2, 3, 1, MEMCPY
  • TAINT_BLOCK_PROPAGATION_FUNCS += __builtin_memmove, 1, 2, 3, 1, MEMCPY
  • TAINT_BLOCK_PROPAGATION_FUNCS += __builtin_memset, 1, 2, 3, 1, MEMSET+PROPAGATE
  • TAINT_BLOCK_PROPAGATION_FUNCS += __copy_from_user, 1, 2, 3, 1, MEMCPY+PROPAGATE
  • TAINT_BLOCK_PROPAGATION_FUNCS += __copy_from_user_inatomic, 1, 2, 3, 1, MEMCPY+PROPAGATE
  • TAINT_BLOCK_PROPAGATION_FUNCS += __fread_chk, 1, 0, 0, 1, READ+PROPAGATE
  • TAINT_BLOCK_PROPAGATION_FUNCS += __memcpy_chk, 1, 2, 3, 1, MEMCPY
  • TAINT_BLOCK_PROPAGATION_FUNCS += __memmove_chk, 1, 2, 3, 1, MEMCPY
  • TAINT_BLOCK_PROPAGATION_FUNCS += __mempcpy, 1, 2, 3, 1, MEMCPY
  • TAINT_BLOCK_PROPAGATION_FUNCS += __mempcpy_chk, 1, 2, 3, 1, MEMCPY
  • TAINT_BLOCK_PROPAGATION_FUNCS += __memset_chk, 1, 2, 3, 1, MEMSET+PROPAGATE
  • TAINT_BLOCK_PROPAGATION_FUNCS += __pread64, 2, 0, 3, 1, READ+PROPAGATE
  • TAINT_BLOCK_PROPAGATION_FUNCS += __pread_chk, 2, 0, 3, 1, READ+PROPAGATE
  • TAINT_BLOCK_PROPAGATION_FUNCS += __read_chk, 2, 0, 3, 1, READ+PROPAGATE
  • TAINT_BLOCK_PROPAGATION_FUNCS += __recv_chk, 2, 0, 3, 1, READ+PROPAGATE
  • TAINT_BLOCK_PROPAGATION_FUNCS += __recvfrom_chk, 2, 0, 3, 1, READ+PROPAGATE
  • TAINT_BLOCK_PROPAGATION_FUNCS += __wmemcpy_chk, 1, 2, 3, WCHAR_T, MEMCPY
  • TAINT_BLOCK_PROPAGATION_FUNCS += __wmemmove_chk, 1, 2, 3, WCHAR_T, MEMCPY
  • TAINT_BLOCK_PROPAGATION_FUNCS += __wmempcpy, 1, 2, 3, WCHAR_T, MEMCPY
  • TAINT_BLOCK_PROPAGATION_FUNCS += __wmemset_chk, 1, 2, 3, WCHAR_T, MEMSET+PROPAGATE
  • TAINT_BLOCK_PROPAGATION_FUNCS += _bcopy, 2, 1, 3, 1, MEMCPY
  • TAINT_BLOCK_PROPAGATION_FUNCS += _fread_nolock, 1, 0, 0, 1, READ+PROPAGATE
  • TAINT_BLOCK_PROPAGATION_FUNCS += bcopy, 2, 1, 3, 1, MEMCPY
  • TAINT_BLOCK_PROPAGATION_FUNCS += bcopyLongs, 2, 1, 3, LONG, MEMCPY
  • TAINT_BLOCK_PROPAGATION_FUNCS += bcopyWords, 2, 1, 3, SHORT, MEMCPY
  • TAINT_BLOCK_PROPAGATION_FUNCS += bfill, 1, 3, 2, 1, MEMSET+PROPAGATE
  • TAINT_BLOCK_PROPAGATION_FUNCS += bfillBytes, 1, 3, 2, 1, MEMSET+PROPAGATE
  • TAINT_BLOCK_PROPAGATION_FUNCS += bzero, 1, 0, 2, 1, MEMSET+PROPAGATE
  • TAINT_BLOCK_PROPAGATION_FUNCS += copy_from_user, 1, 2, 3, 1, MEMCPY+PROPAGATE
  • TAINT_BLOCK_PROPAGATION_FUNCS += copyin, 2, 1, 3, 1, MEMCPY+PROPAGATE
  • TAINT_BLOCK_PROPAGATION_FUNCS += copyinmsg, 2, 1, 3, 1, MEMCPY+PROPAGATE
  • TAINT_BLOCK_PROPAGATION_FUNCS += fread, 1, 0, 0, 1, READ+PROPAGATE
  • TAINT_BLOCK_PROPAGATION_FUNCS += memcpy, 1, 2, 3, 1, MEMCPY
  • TAINT_BLOCK_PROPAGATION_FUNCS += memcpy_s, 1, 3, 4, 1, MEMCPY
  • TAINT_BLOCK_PROPAGATION_FUNCS += memmove, 1, 2, 3, 1, MEMCPY
  • TAINT_BLOCK_PROPAGATION_FUNCS += memmove_s, 1, 3, 4, 1, MEMCPY
  • TAINT_BLOCK_PROPAGATION_FUNCS += mempcpy, 1, 2, 3, 1, MEMCPY
  • TAINT_BLOCK_PROPAGATION_FUNCS += memset, 1, 2, 3, 1, MEMSET+PROPAGATE
  • TAINT_BLOCK_PROPAGATION_FUNCS += pread, 2, 0, 3, 1, READ+PROPAGATE
  • TAINT_BLOCK_PROPAGATION_FUNCS += pread64, 2, 0, 3, 1, READ+PROPAGATE
  • TAINT_BLOCK_PROPAGATION_FUNCS += qMemCopy, 1, 2, 3, 1, MEMCPY
  • TAINT_BLOCK_PROPAGATION_FUNCS += qMemSet, 1, 2, 3, 1, MEMSET+PROPAGATE
  • TAINT_BLOCK_PROPAGATION_FUNCS += read, 2, 0, 3, 1, READ+PROPAGATE
  • TAINT_BLOCK_PROPAGATION_FUNCS += recv, 2, 0, 3, 1, READ+PROPAGATE
  • TAINT_BLOCK_PROPAGATION_FUNCS += recvfrom, 2, 0, 3, 1, READ+PROPAGATE,
  • TAINT_BLOCK_PROPAGATION_FUNCS += tyRead, 2, 0, 3, 1, READ+PROPAGATE
  • TAINT_BLOCK_PROPAGATION_FUNCS += wmemcpy, 1, 2, 3, WCHAR_T, MEMCPY
  • TAINT_BLOCK_PROPAGATION_FUNCS += wmemcpy_s, 1, 3, 4, WCHAR_T, MEMCPY
  • TAINT_BLOCK_PROPAGATION_FUNCS += wmemmove, 1, 2, 3, WCHAR_T, MEMCPY
  • TAINT_BLOCK_PROPAGATION_FUNCS += wmemmove_s, 1, 3, 4, WCHAR_T, MEMCPY
  • TAINT_BLOCK_PROPAGATION_FUNCS += wmempcpy, 1, 2, 3, WCHAR_T, MEMCPY
  • TAINT_BLOCK_PROPAGATION_FUNCS += wmemset, 1, 2, 3, WCHAR_T, MEMSET+PROPAGATE

Specifies a set of types and values that are to be considered as Boolean for the purpose of the MISRA C checks.

Type A whitespace separated list of triples of the form
  <typename>,<truename>,<falsename>

where:

  • <typename> is the name of the Boolean type
  • <truename> is the name of the true value for type <typename>
  • <falsename> is the name of the false value for type <typename>
Notes For example, if your program has the following:
     typedef unsigned char bool;
     const bool true = 1;
     const bool false = 0;

you would use

     BOOL_TYPES += bool,true,false

The += operator can be used to specify multiple triples.

Factory Setting
  • BOOL_TYPES =

Specifies whether or not each analysis slave should only perform one unit of work before terminating itself.

Type { Yes, No }
Behavior
  • Yes : An analysis slave will always exit once it has performed one unit of work. A new process will be created for every unit of work, incurring massive overhead and missing out on significant caching opportunities. Performance can be severely degraded.
  • No : There is no upper bound on the number of units of work that a slave may perform.
In either case an analysis slave will also exit if ANALYSIS_SLAVE_TIMEOUT is reached, the analysis phase ends, or the slave is manually shut down.
Notes This is useful for debugging CodeSonar in some cases or CodeSonar plugins. Use of this setting in a production setting is discouraged.
Factory Setting
  • UNIT_OF_WORK_ISOLATION = No

Specifies the maximum amount of memory (in megabytes) to allocate in the analysis master for a pending transaction.

Type integer
Behavior When set to integer N, an N-megabyte transaction buffer will be maintained in the analysis master for the analysis of each procedure when the analysis is not run in serial mode. When a slave analyzes a procedure, any outputs from the analysis of that procedure (e.g., warnings and summaries) are accumulated to the corresponding transaction buffer in the master. Once analysis of the procedure completes, the transaction is committed and the buffer freed. If the size limit is exceeded, then the transaction is abandoned and rolled back. The offending procedure will in effect not be analyzed.
Notes This setting was introduced to safeguard against out of memory conditions witnessed in certain generated procedures many thousands of lines long, which contained dozens of unreachable code warnings. Cumulatively, the size of the markup for these warnings was enough to make CodeSonar use more memory than would be available on a 32-bit system. This configuration variable exists to safeguard against such unusual code.
Factory Setting
  • TRANSACTION_BUFFER_SIZE_LIMIT = 512
Tags
  • Analysis resource/effort limit

Specifies whether global variables without explicit initialization should be treated as uninitialized and therefore subject to Uninitialized Variable warnings.

Type { Yes, No }
Behavior
  • Yes : Uninitialized Variable warnings can be issued on global variables that are used before being explicitly initialized.
  • No : Global and static variables without explicit initialization are assumed to be implicitly zero-initialized.
Notes All C and C++ language standards stipulate that global and static variables without explicit initialization should be implicitly zero initialized. However, if your codebase strives to never rely on this, or you are in an environment that does not initialize such variables, then setting UNINITIALIZED_GLOBALS=Yes might be useful.

If this parameter is set to Yes, you will need to adjust several other parameters to accommodate the additional checking. This will incur significant cost. On large programs, the analysis might not run in a reasonable amount of time anymore, depending on how high these settings are raised.

  • Increase MAX_MODIFIED_VALUES so that it is more than double the number of global variables in your program.
  • Increase MAX_CHECKED_INPUTS_PER_PROCEDURE so that it is more than double the number of global variables in your program.
  • You may also wish to increase MAX_GLOBAL_CHECK_AGE: uses of uninitialized variables at call stack depths deeper than MAX_GLOBAL_CHECK_AGE will not be detected.
Factory Setting
  • UNINITIALIZED_GLOBALS = No
Tags

Determines the scenarios under which Assignment in Conditional warnings are generated.

Type {All, Var_and_const, Const_only}
Behavior
  • All : Assignment in Conditional warnings are reported for any assignment inside a conditional statement, including assigning the result of a function call.
  • Var_and_const : Warnings are reported only for assignments where the right hand side is either a variable or a constant value.
  • Const_only : Warnings are reported only for assignments where the right hand side is a constant value.
Factory Setting
  • ASSIGN_COND_MODE = Const_only
Tags

Maximum number of characters that %f in printf-family functions will expand to, not including the decimal point or the minus sign.

Type integer
Behavior When the number is larger, it will be assumed that uses of %f in sprintf-like functions might print up to this many characters.
Notes The factory setting has been experimentally verified as the largest number of digits common printf implementations will render for a 64-bit double.

Some potential Buffer Overrun warnings can depend on this setting.

Factory Setting
  • MAX_PERCENT_F_CHARACTERS = 309
Tags
  • Treatment of Language Constructs

Maximum number of characters that %lf in printf-family functions will expand to, not including the decimal point or the minus sign.

Type integer
Behavior When the number is larger, it will be assumed that uses of %lf in sprintf-like functions might print up to this many characters.
Notes The factory setting has been experimentally verified as the largest number of digits common printf implementations will render for an 80-bit double.

Some potential Buffer Overrun warnings can depend on this setting.

Factory Setting
  • MAX_PERCENT_LF_CHARACTERS = 4933
Tags
  • Treatment of Language Constructs

Specifies the number of characters in which global identifiers should be considered to be significant.

Type integer
Behavior
  • 0 : All characters must differ for the identifiers to be considered distinct.
  • N (for N>0) : Identifiers must differ in the first N characters to be considered distinct.
  • -1 : The value is determined based on which version of the C or C++ standard is being used to parse the file.
Notes If unspecified, or if the value is -1, the analysis will attempt to determine which version of the C or C++ standard is explicitly used, and the values are set based on that:
  • C90 or C94: 6
  • C99: 31
  • C++: 2047
  • all other cases: 31

See also SIGNIFICANCE_LEN_MACRO, SIGNIFICANCE_LEN_OTHER.

Factory Setting
  • SIGNIFICANCE_LEN_EXTERN = -1
Tags

Specifies the number of characters in which macros should be considered to be significant.

Type integer
Behavior
  • 0 : All characters must differ for the identifiers to be considered distinct.
  • N (for N>0) : Identifiers must differ in the first N characters to be considered distinct.
  • -1 : The value is determined based on which version of the C or C++ standard is being used to parse the file.
Notes If unspecified, or if the value is -1, the analysis will attempt to determine which version of the C or C++ standard is explicitly used, and the values are set based on that:
  • C90 or C94: 31
  • C99: 63
  • C++: 2047
  • all other cases: 31

See also SIGNIFICANCE_LEN_EXTERN, SIGNIFICANCE_LEN_OTHER.

Factory Setting
  • SIGNIFICANCE_LEN_MACRO = -1
Tags

Specifies the number of characters in which identifiers other than globals or macros should be considered to be significant.

Type integer
Behavior
  • 0 : All characters must differ for the identifiers to be considered distinct.
  • N (for N>0) : Identifiers must differ in the first N characters to be considered distinct.
  • -1 : The value is determined based on which version of the C or C++ standard is being used to parse the file.
Notes If unspecified, or if the value is -1, the analysis will attempt to determine which version of the C or C++ standard is explicitly used, and the values are set based on that:
  • C90 or C94: 31
  • C99: 63
  • C++: 2047
  • all other cases: 31

See also SIGNIFICANCE_LEN_EXTERN, SIGNIFICANCE_LEN_MACRO.

Factory Setting
  • SIGNIFICANCE_LEN_OTHER = -1
Tags

Specifies whether Shift Amount Exceeds Bit Width checks should follow MISRA rules (as opposed to the C standards) for determining whether an arithmetic-shift operation exceeds the number of bits occupied by the left-hand operand of the operation.

Type { Yes, No }
Behavior
  • Yes : CodeSonar will determine that the width of the left-hand operand of an arithmetic-shift operation is the width of the type of the operand actually appearing in the source code.
  • No : CodeSonar will determine that the width of the left-hand operand of an arithmetic-shift operation is the width of the type of the operand, after possible casts have being applied by the compiler to the operand actually appearing in the source code.
Notes According to the C standards, when a value that is smaller than an int is used as the left-hand operand of an arithmetic shift, then that value is first cast to int before the shift is applied. Hence, the following code
     char c;
     c << 10;
     c << 64;

is equivalent to

     char c;
     ((int)c) << 10;
     ((int)c) << 64;

When checker Shift Amount Exceeds Bit Width is applied to an arithmetic shift, the width in bits of the left-hand operand is determined by the setting of MISRA_SHIFT_AMOUNT_EXCEEDS_BIT_WIDTH.

Assuming an int is 64 bits long or less, CodeSonar will produce either one or two warnings.

MISRA_SHIFT_AMOUNT_EXCEEDS_BIT_WIDTH=Yes (2 warnings):

     char c;
     c << 10; /* Shift Amount Exceeds Bit Width */
     c << 64; /* Shift Amount Exceeds Bit Width */

MISRA_SHIFT_AMOUNT_EXCEEDS_BIT_WIDTH=No (1 warning):

     char c;
     c << 10;
     c << 64; /* Shift Amount Exceeds Bit Width */
Factory Setting
  • MISRA_SHIFT_AMOUNT_EXCEEDS_BIT_WIDTH = No
Tags

Specifies that Read Past Null Terminator warnings should only be issued when comparing arrays having "essentially char type".

Type { Yes, No }
Behavior
  • Yes : CodeSonar will determine the essential type of the actual parameters to the comparison and only issue Read Past Null Terminator warnings if both parameters are arrays having essentially char type.
  • No : CodeSonar will issue Read Past Null Terminator warnings regardless of the essential type of the actual parameters to the comparison.
Notes Misra 2012 Rule 21.14 applies only when the actual parameters to memcmp() are arrays having essentially char type. Thus, the following code is technically compliant (but violates other rules).
     void * s1 = (void *)"abc";             // not an array of essentially char type
     void * s2 = (void *)"abc";             // not an array of essentially char type
     if ( memcmp( s1, s2, 5 ) == 0 ) ...;
  • READ_PAST_NTERM_CONSERVATIVE_CHECK=Yes : checks for this warning class follow the technical definition of Misra 2012 Rule 21.14. This call to memcmp() will NOT trigger a Read Past Null Terminator warning.
  • READ_PAST_NTERM_CONSERVATIVE_CHECK=No : checks for this warning class cover all calls to memcmp(), regardless of argument type. This call to memcmp() will trigger a Read Past Null Terminator warning.

Setting READ_PAST_NTERM_CONSERVATIVE_CHECK=Yes can reduce false positives for comparison of binary data that happens to contain null characters.

Factory Setting
  • READ_PAST_NTERM_CONSERVATIVE_CHECK=No
Tags

Specifies tags that are considered indicators that the code is incomplete.

Type Boost 'POSIX Extended Regular Expression'
Behavior If any line of a comment contains text that matches any of these regular expressions, a Comment Suggests Code Unfinished warning will be issued. The pattern matches are attempted in order of occurrence and only the first successful match is reported.
Notes For example, Comment Suggests Code Unfinished warnings will be reported on lines 1 and 4 of the following code fragment.
  /* 1 */  /* TODO: complete before release */      
  /* 2 */  void incomplete(void)
  /* 3 */  {
  /* 4 */    // FIXME: to be implemented later
  /* 5 */  }
Factory Settings
  • UNFINISHED_CODE_TAGS += FIXME
  • UNFINISHED_CODE_TAGS += TODO
  • UNFINISHED_CODE_TAGS += \\todo
  • UNFINISHED_CODE_TAGS += @todo
  • UNFINISHED_CODE_TAGS += \\bug
  • UNFINISHED_CODE_TAGS += @bug
  • UNFINISHED_CODE_TAGS += XXX
  • UNFINISHED_CODE_TAGS += BUG
  • UNFINISHED_CODE_TAGS += LATER
  • UNFINISHED_CODE_TAGS += HACK
Tags

Use the BAD_MACRO_* family of parameters to define warning classes that indicate the use of specific (prohibited) macros.

Type
Behavior These parameters are used together to specify bad macros to check for and warnings to issue when those macros occur.
  • BAD_MACRO_CLASS will be used as the warning class name. If the message contains any characters that are special to HTML, they must be HTML-encoded.
  • BAD_MACRO_NAME is a regular expression. If a macro that matches this is used, then the warning may be issued. If unspecified, any macro name will match. At least one of BAD_MACRO_NAME and BAD_MACRO_FILENAME must be specified.
  • BAD_MACRO_FILENAME is a regular expression. If the macro is defined in a file whose name matches this expression, then the warning may be issued. If unspecified, any file name will match. At least one of BAD_MACRO_NAME and BAD_MACRO_FILENAME must be specified.
  • BAD_MACRO_CATEGORIES is the set of categories for the warning, as a semicolon-separated list. This defaults to the empty string.
  • BAD_MACRO_BASE_RANK is the base rank assigned to the warning, with default 15.0.
  • BAD_MACRO_INFO will be used in the warning description box sentence, where occurrences of <macroname/> are replaced by the name of the macro, and <filename/> is replaced by the name of the file in which the macro was defined. The default value is "'Use of macro <macroname/> is not recommended because it is correlated with security or safety defects." Use <paragraph></paragraph> to delimit paragraphs. Use <link url="linkURL">linktext</link> to link "linktext" to linkURL.
  • BAD_MACRO_LINK specifies a URL for further information. Values beginning with "#' are interpreted relative to the CodeSonar manual root. If a value is specified, CodeSonar will append 'See <a href="...">here</a> for more information.' to the text in the warning description box. If no value is specified, and BAD_MACRO_INFO is also not specified, CodeSonar will look for a category beginning with "BADMACRO" in the BAD_MACRO_CATEGORIES list. If there is such a category, CodeSonar will add the "See here..." sentence with a link to the corresponding warning class page.
  • BAD_MACRO_SIGNIFICANCE is a string representing the Significance classification for this warning class.
Notes If two or more sets of BAD_MACRO_* rules have the same BAD_MACRO_CLASS value, the same warning class will be used to cover all cases. Therefore, sets of rules with the same BAD_MACRO_CLASS should also have the same BAD_MACRO_CATEGORIES, BAD_MACRO_INFO, and BAD_MACRO_BASE_RANK values (that is, they should only differ in the BAD_MACRO_NAME and BAD_MACRO_FILENAME setting).

Similarly, if a set of BAD_MACRO_* rules has a BAD_MACRO_CLASS that is the same as the name of a standard CodeSonar warning class, the category and base rank settings of the standard class will apply and any BAD_MACRO_CATEGORIES or BAD_MACRO_BASE_RANK specified in the set will not be used.

Examples:

     BAD_MACRO_CLASS = Use of Forbidden Macro
     BAD_MACRO_NAME = ^MAX$
     BAD_MACRO_INFO = MAX is bad
     BAD_MACRO_NAME = ^MIN$
     BAD_MACRO_INFO = MIN is bad
     BAD_MACRO_BASE_RANK = 1.0
     BAD_MACRO_SIGNIFICANCE = RELIABILITY

specifies a single warning class that will trigger if a macro named either MAX or MIN defined in any file are used.

The manifest entry will prevent this from triggering on C programs, only C++

Factory Settings
  • BAD_MACRO_CATEGORIES = BADMACRO.WEAK_CRYPTO;CWE:327
  • BAD_MACRO_BASE_RANK = 1.0
  • BAD_MACRO_SIGNIFICANCE = SECURITY
  • BAD_MACRO_FILENAME = stdint.h
  • BAD_MACRO_CLASS=Use of NULL
  • BAD_MACRO_NAME=^NULL$
Tags
  • Designates Specially-Treated Macros

Specifies functions whose calls are to be considered side effect free.

Type Boost 'POSIX Extended Regular Expression'
Behavior In checks for the following warning classes, CodeSonar treats all function calls as having side effects UNLESS the function name matches a SIDE_EFFECT_FREE_FUNCTIONS regular expression.
Notes It is impossible to know precisely which functions have side effects in general, so this parameter allows the specification of functions that are considered side effect free.
Factory Settings
  • SIDE_EFFECT_FREE_FUNCTIONS += ^(strlen|strnlen_s|strcmp|strncmp|strcoll|strchr|strrchr|strspn|strcspn|memchr)$
  • SIDE_EFFECT_FREE_FUNCTIONS += ^(isalnum|isalpha|islower|isupper|isdigit|isxdigit|iscntrl|isgraph|isspace|isblank|isprint|ispunct|tolower|toupper)$
  • SIDE_EFFECT_FREE_FUNCTIONS += ^(iswalnum|iswalpha|iswlower|iswdigit|iswxdigit|iswcntrl|iswgraph|iswspace|iswblank|iswprint|iswpunct|wctype|towlower|towupper|towctrans|wctrans)$
Tags

Specifies process names that will trigger Untrusted Process Creation warnings.

Type Boost 'POSIX Extended Regular Expression'
Behavior An UNTRUSTED_PROC_BLACKLIST rule is "applicable" if and only if
  • there is no subsequent UNTRUSTED_PROC_WHITELIST rule (which would take precedence), AND
  • there is no subsequent UNTRUSTED_PROC_BLACKLIST= rule (which would reset the blacklist). All other UNTRUSTED_PROC_BLACKLIST rules are ignored.

If there are one or more applicable UNTRUSTED_PROC_BLACKLIST rules, calls to triggering functions for Untrusted Process Creation are handled as follows.

  • If the process name argument matches the regular expression in one or more of the applicable UNTRUSTED_PROC_BLACKLIST rules, a warning is issued.
  • Otherwise, a warning is issued if and only if CodeSonar determines that the process name argument may have been obfuscated (where obfuscation thresholds are specified by MIN_B64_SCORE and MIN_ENC_SCORE).

If there are no applicable UNTRUSTED_PROC_BLACKLIST rules, calls to triggering functions for Untrusted Process Creation are handled as follows

  • If any UNTRUSTED_PROC_WHITELIST rules are applicable, they are applied as described in the documentation for UNTRUSTED_PROC_WHITELIST.
  • Otherwise, a warning is issued if and only if CodeSonar determines that the process name argument may have been obfuscated.
Notes With factory settings, all Linux and Windows shells are blacklisted.

The applicability rules for UNTRUSTED_PROC_BLACKLIST and UNTRUSTED_PROC_WHITELIST are such that process name whitelists and blacklists cannot be used in combination: rules of at most one of the two types will be applicable. If both UNTRUSTED_PROC_BLACKLIST and UNTRUSTED_PROC_WHITELIST rules are specified, an alert will be generated in the hub.

Factory Settings
  • UNTRUSTED_PROC_BLACKLIST += ^\s*(.*[/\\])?(a|ba|c|k|pdk|sc|tc|z)?sh(\s+.*)*$
  • UNTRUSTED_PROC_BLACKLIST += ^\s*(.*[/\\])?cmd(.exe)?(\s+.*)*$
  • UNTRUSTED_PROC_BLACKLIST += ^\s*(.*[/\\])?command(.com)?(\s+.*)*$
  • UNTRUSTED_PROC_BLACKLIST += ^\s*(.*[/\\])?(java|perl|python|ruby)
Tags

Specifies process names that will not trigger a Untrusted Process Creation warning.

Type Boost 'POSIX Extended Regular Expression'
Behavior An UNTRUSTED_PROC_WHITELIST rule is "applicable" if and only if
  • there is no subsequent UNTRUSTED_PROC_BLACKLIST rule (which would take precedence), AND
  • there is no subsequent UNTRUSTED_PROC_WHITELIST= rule (which would reset the whitelist). All other UNTRUSTED_PROC_WHITELIST rules are ignored.

If there are one or more applicable UNTRUSTED_PROC_WHITELIST rules, calls to triggering functions for Untrusted Process Creation are handled as follows.

  • If the process name argument matches the regular expression in one or more of the applicable UNTRUSTED_PROC_WHITELIST rules, a warning is NOT issued.
  • Otherwise, a warning is issued. This includes the case where CodeSonar cannot determine the value of the process name argument.

If there are no applicable UNTRUSTED_PROC_WHITELIST rules, calls to triggering functions for Untrusted Process Creation are handled as follows

  • If any UNTRUSTED_PROC_BLACKLIST rules are applicable, they are applied as described in the documentation for UNTRUSTED_PROC_BLACKLIST.
  • Otherwise, a warning is issued if and only if CodeSonar determines that the process name argument may have been obfuscated (where obfuscation thresholds are specified by MIN_B64_SCORE and MIN_ENC_SCORE).
Notes The applicability rules for UNTRUSTED_PROC_WHITELIST and UNTRUSTED_PROC_BLACKLIST are such that process name whitelists and blacklists cannot be used in combination: rules of at most one of the two types will be applicable. If both UNTRUSTED_PROC_WHITELIST and UNTRUSTED_PROC_BLACKLIST rules are specified, an alert will be generated in the hub.

The whitelist represents a much more aggressive approach than the blacklist, and will result in more false positives. For example, if CodeSonar cannot determine the name of the process being created, a warning will be generated for whitelists but not blacklists.

Tags

Specifies dynamic library names that will trigger Untrusted Library Load warnings.

Type Boost 'POSIX Extended Regular Expression'
Behavior An UNTRUSTED_LIB_BLACKLIST rule is "applicable" if and only if
  • there is no subsequent UNTRUSTED_LIB_WHITELIST rule (which would take precedence), AND
  • there is no subsequent UNTRUSTED_LIB_BLACKLIST= rule (which would reset the blacklist). All other UNTRUSTED_LIB_BLACKLIST rules are ignored.

If there are one or more applicable UNTRUSTED_LIB_BLACKLIST rules, calls to triggering functions for Untrusted Library Load are handled as follows.

  • If the library name argument matches the regular expression in one or more of the applicable UNTRUSTED_LIB_BLACKLIST rules, a warning is issued.
  • Otherwise, a warning is issued if and only if CodeSonar determines that the library name argument may have been obfuscated (where obfuscation thresholds are specified by MIN_B64_SCORE and MIN_ENC_SCORE).

If there are no applicable UNTRUSTED_LIB_BLACKLIST rules, calls to triggering functions for Untrusted Library Load are handled as follows

  • If any UNTRUSTED_LIB_WHITELIST rules are applicable, they are applied as described in the documentation for UNTRUSTED_LIB_WHITELIST.
  • Otherwise, a warning is issued if and only if CodeSonar determines that the library name argument may have been obfuscated.
Notes With factory settings, no dynamic libraries are blacklisted.

The applicability rules for UNTRUSTED_LIB_BLACKLIST and UNTRUSTED_LIB_WHITELIST are such that library name whitelists and blacklists cannot be used in combination: rules of at most one of the two types will be applicable. If both UNTRUSTED_LIB_WHITELIST and UNTRUSTED_LIB_BLACKLIST rules are specified, an alert will be generated in the hub.

Tags

Specifies dynamic library names that will not trigger a Untrusted Library Load warning.

Type Boost 'POSIX Extended Regular Expression'
Behavior An UNTRUSTED_LIB_WHITELIST rule is "applicable" if and only if
  • there is no subsequent UNTRUSTED_LIB_BLACKLIST rule (which would take precedence), AND
  • there is no subsequent UNTRUSTED_LIB_WHITELIST= rule (which would reset the whitelist). All other UNTRUSTED_LIB_WHITELIST rules are ignored.

If there are one or more applicable UNTRUSTED_LIB_WHITELIST rules, calls to triggering functions for Untrusted Library Load are handled as follows.

  • If the library name argument matches the regular expression in one or more of the applicable UNTRUSTED_LIB_WHITELIST rules, a warning is NOT issued.
  • Otherwise, a warning is issued. This includes the case where CodeSonar cannot determine the value of the library name argument.

If there are no applicable UNTRUSTED_LIB_WHITELIST rules, calls to triggering functions for Untrusted Library Load are handled as follows

  • If any UNTRUSTED_LIB_BLACKLIST rules are applicable, they are applied as described in the documentation for UNTRUSTED_LIB_BLACKLIST.
  • Otherwise, a warning is issued if and only if CodeSonar determines that the library name argument may have been obfuscated (where obfuscation thresholds are specified by MIN_B64_SCORE and MIN_ENC_SCORE).
Notes The applicability rules for UNTRUSTED_LIB_WHITELIST and UNTRUSTED_LIB_BLACKLIST are such that library name whitelists and blacklists cannot be used in combination: rules of at most one of the two types will be applicable. If both UNTRUSTED_LIB_WHITELIST and UNTRUSTED_LIB_BLACKLIST rules are specified, an alert will be generated in the hub.

The whitelist represents a much more aggressive approach than the blacklist, and will result in more false positives. For example, if CodeSonar cannot determine the name of the dynamic library being loaded, a warning will be generated for whitelists but not blacklists.

Tags

Specifies network hosts that will trigger a Untrusted Network Host warning.

Type
  • <re>
  • allow <re>
where <re> is a Boost 'POSIX Extended Regular Expression'
Behavior A NETWORK_HOST_BLACKLIST rule is "applicable" if and only if
  • there is no subsequent NETWORK_HOST_WHITELIST rule (which would take precedence), AND
  • there is no subsequent NETWORK_HOST_BLACKLIST= rule (which would reset the blacklist). All other NETWORK_HOST_BLACKLIST rules are ignored.

If there are one or more applicable NETWORK_HOST_BLACKLIST rules, calls to triggering functions for Untrusted Network Host are handled as follows.

  • If the network host argument matches an 'allow' regular expression in one or more of the applicable NETWORK_HOST_BLACKLIST rules, a warning is not issued.
  • Otherwise, if the network host argument matches the regular expression in one or more of the applicable (non-'allow') NETWORK_HOST_BLACKLIST rules, a warning is issued.
  • Otherwise, a warning is issued if and only if CodeSonar determines that the network host argument may have been obfuscated (where obfuscation thresholds are specified by MIN_B64_SCORE and MIN_ENC_SCORE).

If there are no applicable NETWORK_HOST_BLACKLIST rules, calls to triggering functions for Untrusted Network Host are handled as follows

  • If any NETWORK_HOST_WHITELIST rules are applicable, they are applied as described in the documentation for NETWORK_HOST_WHITELIST.
  • Otherwise, a warning is issued if and only if CodeSonar determines that the network host argument may have been obfuscated.
Notes With factory settings, all hardcoded IPv4, IPv6, and DNS addresses are blacklisted.

The applicability rules for NETWORK_HOST_BLACKLIST and NETWORK_HOST_WHITELIST are such that network host whitelists and blacklists cannot be used in combination: rules of at most one of the two types will be applicable. If both NETWORK_HOST_WHITELIST and NETWORK_HOST_BLACKLIST rules are specified, an alert will be generated in the hub.

The 'allow' rules are provided so that blacklist exceptions can be specified without resorting to overcomplicated blacklist regular expressions.

Factory Settings
  • NETWORK_HOST_BLACKLIST += allow ^127.0.0.1$
  • NETWORK_HOST_BLACKLIST += allow ^0\.[0-9]+\.[0-9]+\.[0-9]+$
  • NETWORK_HOST_BLACKLIST += [0-9]+\.[0-9]+\.[0-9]+\.[0-9]+
  • NETWORK_HOST_BLACKLIST += allow ^0:0:0:0:0:0:0:1$
  • NETWORK_HOST_BLACKLIST += allow ^::1$
  • NETWORK_HOST_BLACKLIST += allow ^0:0:0:0:0:0:0:0$
  • NETWORK_HOST_BLACKLIST += allow ^::$
  • NETWORK_HOST_BLACKLIST += ([a-zA-Z0-9])+:([a-zA-Z0-9])+:([a-zA-Z0-9])+:([a-zA-Z0-9])
  • NETWORK_HOST_BLACKLIST += .+\.[a-zA-Z]{2,6}($|\s+|\\|/|:)
Tags

Specifies network hosts that will not trigger a Untrusted Network Host warning.

Type Boost 'POSIX Extended Regular Expression'
Behavior A NETWORK_HOST_WHITELIST rule is "applicable" if and only if
  • there is no subsequent NETWORK_HOST_BLACKLIST rule (which would take precedence), AND
  • there is no subsequent NETWORK_HOST_WHITELIST= rule (which would reset the whitelist). All other NETWORK_HOST_WHITELIST rules are ignored.

If there are one or more applicable NETWORK_HOST_WHITELIST rules, calls to triggering functions for Untrusted Network Host are handled as follows.

  • If the network host argument matches the regular expression in one or more of the applicable NETWORK_HOST_WHITELIST rules, a warning is NOT issued.
  • Otherwise, a warning is issued. This includes the case where CodeSonar cannot determine the value of the library name argument.

If there are no applicable NETWORK_HOST_WHITELIST rules, calls to triggering functions for Untrusted Network Host are handled as follows

  • If any NETWORK_HOST_BLACKLIST rules are applicable, they are applied as described in the documentation for NETWORK_HOST_BLACKLIST.
  • Otherwise, a warning is issued if and only if CodeSonar determines that the network host argument may have been obfuscated (where obfuscation thresholds are specified by MIN_B64_SCORE and MIN_ENC_SCORE).
Notes The applicability rules for NETWORK_HOST_WHITELIST and NETWORK_HOST_BLACKLIST are such that network host whitelists and blacklists cannot be used in combination: rules of at most one of the two types will be applicable. If both NETWORK_HOST_WHITELIST and NETWORK_HOST_BLACKLIST rules are specified, an alert will be generated in the hub.

Using the whitelist is a much more aggressive approach than using the blacklist, and will result in more false positives. For example, if CodeSonar cannot determine the target host name, a warning will be generated for whitelists but not blacklists.

Tags

Specifies network ports that will trigger a Untrusted Network Port warning.

Type Boost 'POSIX Extended Regular Expression'
Behavior A NETWORK_PORT_BLACKLIST rule is "applicable" if and only if
  • there is no subsequent NETWORK_PORT_WHITELIST rule (which would take precedence), AND
  • there is no subsequent NETWORK_PORT_BLACKLIST= rule (which would reset the blacklist). All other NETWORK_PORT_BLACKLIST rules are ignored.

If there are one or more applicable NETWORK_PORT_BLACKLIST rules, calls to triggering functions for Untrusted Network Port are handled as follows.

  • If the network port argument matches the regular expression in one or more of the applicable NETWORK_PORT_BLACKLIST rules, a warning is issued.
  • Otherwise, no warning is issued.

If there are no applicable NETWORK_PORT_BLACKLIST rules, calls to triggering functions for Untrusted Network Port are handled as follows

  • If any NETWORK_PORT_WHITELIST rules are applicable, they are applied as described in the documentation for NETWORK_HOST_WHITELIST.
  • Otherwise, no warning is issued.
Notes The applicability rules for NETWORK_PORT_BLACKLIST and NETWORK_PORT_WHITELIST are such that network port whitelists and blacklists cannot be used in combination: rules of at most one of the two types will be applicable. If both NETWORK_PORT_WHITELIST and NETWORK_PORT_BLACKLIST rules are specified, an alert will be generated in the hub.

For example, to warn about any hardcoded port, put the following after all other NETWORK_PORT_BLACKLIST and NETWORK_PORT_WHITELIST rules.

   NETWORK_PORT_BLACKLIST = .*
Tags

Specifies network ports that will not trigger a Untrusted Network Port warning.

Type Boost 'POSIX Extended Regular Expression'
Behavior A NETWORK_PORT_WHITELIST rule is "applicable" if and only if
  • there is no subsequent NETWORK_PORT_BLACKLIST rule (which would take precedence), AND
  • there is no subsequent NETWORK_PORT_WHITELIST= rule (which would reset the whitelist). All other _WHITELIST rules are ignored.

If there are one or more applicable NETWORK_PORT_WHITELIST rules, calls to triggering functions for Untrusted Network Port are handled as follows.

  • If the network host argument matches the regular expression in one or more of the applicable NETWORK_PORT_WHITELIST rules, a warning is NOT issued.
  • Otherwise, a warning is issued. This includes the case where CodeSonar cannot determine the value of the library name argument.

If there are no applicable NETWORK_PORT_WHITELIST rules, calls to triggering functions for Untrusted Network Port are handled as follows

  • If any NETWORK_PORT_BLACKLIST rules are applicable, they are applied as described in the documentation for NETWORK_PORT_BLACKLIST.
  • Otherwise, a warning not is issued.
Notes With factory settings, the following are allowed: Email, SSH, SMTP, HTTP, FTP, SSH.

The applicability rules for NETWORK_PORT_WHITELIST and NETWORK_PORT_BLACKLIST are such that network port whitelists and blacklists cannot be used in combination: rules of at most one of the two types will be applicable. If both NETWORK_PORT_WHITELIST and NETWORK_PORT_BLACKLIST rules are specified, an alert will be generated in the hub.

Using the whitelist is a much more aggressive approach than using the blacklist, and will result in more false positives. For example, if CodeSonar cannot determine the value of the network port argument, a warning will be generated for whitelists but not blacklists.

Factory Settings
  • NETWORK_PORT_WHITELIST += ^20$
  • NETWORK_PORT_WHITELIST += ^21$
  • NETWORK_PORT_WHITELIST += ^22$
  • NETWORK_PORT_WHITELIST += ^25$
  • NETWORK_PORT_WHITELIST += ^80$
  • NETWORK_PORT_WHITELIST += ^123$
  • NETWORK_PORT_WHITELIST += ^143$
Tags

Specifies whether the Potential Timebomb check should ignore comparisons against zero.

Type { Yes, No }
Behavior
  • Yes : Potential Timebomb checks will ignore comparisons against zero, which is a common error return value for time functions.
  • No : Potential Timebomb checks will not ignore comparisons against zero. This is likely to result in more false positive warnings.
Factory Setting
  • TIMEBOMB_IGNORE_ZERO = Yes
Tags

Specifies the number of lines of code after a call to chroot() within which a subsequent call to chdir() must occur to avoid issuing a chroot without chdir warning.

Type integer
Behavior Sets a bound N. A chroot without chdir warning is issued at a call to chroot() if either of the following are true.
  • N lines of code can be executed after the call to chroot() without encountering a call to chdir().
  • The function in which chroot() was called returns before reaching a call to chdir().
Factory Setting
  • MAX_CHROOT_CHDIR_DIST = 20
Tags

Specifies a threshold beyond which constant strings are identified as Base64-encoded for warning classes Untrusted Network Host, Untrusted Library Load, and Untrusted Process Creation.

Type integer
Behavior When a constant string argument is passed to a triggering function for any of these warning classes, CodeSonar computes a metric from that string to determine heuristically whether it represents Base64-encoded content. If the value of the computed metric is above MIN_B64_SCORE, a warning of the corresponding class is issued.

Note The factors considered by the metric include the following.

  • Does the string consist entirely of alphanumeric characters and '+', '/', or '='?
  • Is the length of the string an integer multiple of 4?
  • Does the string end with '=' characters?
  • Are the alphabetic characters in the string consistently upper or consistently lower case?
  • Does the string include many of the available Base64 encoding characters?
Factory Setting
  • MIN_B64_SCORE = 50
Tags

Specifies a threshold beyond which constant strings are identified as encrypted for warning classes Untrusted Network Host, Untrusted Library Load, and Untrusted Process Creation.

Type integer
Behavior When a constant string argument is passed to a triggering function for any of these warning classes, CodeSonar computes a metric from that string to determine heuristically whether it represents encrypted content. If the value of the computed metric is above MIN_ENC_SCORE, a warning of the corresponding class is issued.

Note Factors considered include:

  • Does the string consist entirely of alphanumeric characters or other common text characters? (If so, it is unlikely to be encrypted.)
  • Does the string exhibit high entropy?
Factory Setting
  • MIN_ENC_SCORE = 90
Tags

When the address of a portion of an aggregate is taken, and CodeSonar is not intraprocedurally aware of the size of the underlying allocation, should the "2$Buffer Overrun" warning class checker treat the pointer's capacity as the capacity of the portion (as opposed to the capacity of the underlying allocation)?

Type { Yes, No }
Behavior
  • Yes : CodeSonar will determine the pointer capacity using the type boundary of the entity whose address was taken.
  • No : CodeSonar will determine the pointer capacity using the capacity of the underlying allocation.
Notes When the address of some sub-object like a field in a structure or a row of a multi-dimensional array is taken, CodeSonar will record how far the resulting address is from the end of the allocation, for the purpose of detecting buffer overruns.

For statements such as:

    q = &p->f;

CodeSonar will generally pick the minimum of the distance between the size of f and the distance to the end of the underlying allocation from the beginning of f. However, there will be times when CodeSonar must make this decision without knowing these two values. This preference determines which of the two behaviors is used in this case.

Setting POINTED_TO_CAPACITY_DEFAULTS_TO_TYPE_BOUNDARY=Yes permits CodeSonar to detect the buffer overrun in the following code.

    struct { int f; } *p = unknown_value();
    int *q = &p->f;
    q[5] = 42;

Setting POINTED_TO_CAPACITY_DEFAULTS_TO_TYPE_BOUNDARY=No permits CodeSonar to detect the buffer overrun in the following code.

void f(int x){
int A[10][10];
int *q = &A[x][0];
q[5] = 42;
}
void g(){ f(11); }

Note that the "2$Buffer Overrun" warning class is one of several detectors for buffer overruns, and unlike the others is disabled by default. You can enable it with a WARNING_FILTER rule.

Factory Setting
  • POINTED_TO_CAPACITY_DEFAULTS_TO_TYPE_BOUNDARY = Yes
Tags

Specifies whether or not Type Overrun warnings will be issued for a variable length array at the end of a class, struct, or union.

Type { Yes, No }
Behavior
  • Yes : CodeSonar will issue Type Overrun warnings for variable length arrays at the end of a class, struct, or union.
  • No : CodeSonar will not issue Type Overrun warnings for these arrays.
Because of the way CodeSonar handles variable length arrays, setting this parameter to No will also suppress Type Overrun warnings for fixed length arrays of length 0 or 1 when these arrays occur at the end of a class, struct, or union.
Notes This parameter does not affect Buffer Overrun warnings.

Example:

  struct { int A[1]; } *p = malloc(sizeof(*p) + 100);
  p->A[5] = 123;    /* Type Overrun warning issued only if TYPE_OVERRUN_ON_LAST_ARRAY_FIELD=Yes
                     * no Buffer Overrun: write is inside allocated buffer
                     */

  p->A[555] = 123;  /* Type Overrun warning issued only if TYPE_OVERRUN_ON_LAST_ARRAY_FIELD=Yes
                     * Buffer Overrun warning always issued: write is outside allocated buffer
                     */

The idiom in this example is in common use, but is not permitted by the C and C++ standards. Some compilers have compiler-defined behavior for such code, but others will treat it as having undefined behavior.

Factory Setting
  • TYPE_OVERRUN_ON_LAST_ARRAY_FIELD = No
Tags

Specifies whether or not CodeSonar will keep the full unnormalized AST information associated with a C/C++ project.

Type { Yes, No }
Behavior
  • Yes : Unnormalized C/C++ ASTs will be available during analysis.
  • No : Unnormalized C/C++ ASTs will not be available.
Notes The unnormalized ASTs can consume significant amounts of disk space and saving it takes time.
Factory Setting
  • RETAIN_UNNORMALIZED_C_AST = No
Tags
  • Governs the Build/Analysis
  • Do Not Change Between Incremental Analyses or Stages of a Single Build/Analysis

Specifies the order of evaluation of function parameters.

Type { LEFT_TO_RIGHT, RIGHT_TO_LEFT}
Behavior
  • LEFT_TO_RIGHT : Parameters are evaluated left to right.
  • RIGHT_TO_LEFT : Parameters are evaluated right to left.
Notes This behavior can vary from compiler to compiler. Some compilers may use other orders (e.g., 1,3,2) that cannot be specified here.
Factory Setting
  • PARAMETER_EVALUATION_ORDER = RIGHT_TO_LEFT
Tags
  • Governs the Build/Analysis

Specifies an upper bound on the number of implicitly-zero-initialized array elements from a curly-brace initializer CodeSonar will explicitly track, on each end of the implicitly-initialized segment of the array.

Type integer
Behavior Using a setting of 2, the initialization of elements 0, 1, 2, 3, 4, 98, and 99 of this array would be tracked:
    int A[100] = { 42, 42, 42 };
Notes Large values may increase precision in some programs, but will slow down the analysis.
Factory Setting
  • IMPLICIT_INITIALIZER_ELT_LIMIT = 2
Tags
  • Analysis resource/effort limit

Specifies whether or not to report Essential Type Diagnostic warnings (warnings of this class are reported for all expressions).

Type { Yes, No }
Behavior
  • Yes : Essential Type Diagnostic warnings are reported, provided the class is suitably enabled (see warning class documentation for details). Note that warnings of this class are reported for every expression.
  • No : Essential Type Diagnostic warnings are not reported, even if the other requirements for enabling the class are satisfied.
Notes The Essential Type Diagnostic warning class is only only useful for debugging purposes. Its use is not recommended unless explicitly directed by CodeSecure support.

A Essential Type Diagnostic warning is issued for every expression. In all but the most trivial programs, there are a great many expressions and consequently there will be a great many Essential Type Diagnostic warnings unless the class is selectively enabled for only parts of the program.

If you are trying to determine the essential types of only a few expressions within your program, use multiple clauses in your WARNING_FILTER rule to ensure you only enable warnings that are useful to you. For example, suppose that you are only interested in the essential types of expressions in source file problemfile.c. Then your rule will be:

  WARNING_FILTER += allow class="Essential Type Diagnostic" file=problemfile.c
Factory Setting
  • ESSENTIAL_TYPE_DIAGNOSTIC_ENABLED = No
Tags

Specifies whether or not to report Buffer Underrun and Type Underrun warnings when there is a guard that almost contradicts the warning, but not quite, but simultaneously there is not evidence that the index can take on the dangerous value.

Type { Yes, No }
Behavior
  • Yes : More Buffer Underrun and Type Underrun warnings will be reported. Most of them might be false positives, but some may be useful.
  • No : Do not report Buffer Underrun and Type Underrun warnings when guards nearly-contradict the possibility.
Notes In the following example, suppose that unknown_value() is some untainted value that the analysis isn't sure about. Then a Type Underrun warning will be reported only if UNDER_BY_ONE=Yes:
   void f(){
      int x = unknown_value();
      int A[10];
      if( x > -2 ) A[x] = 42;
   }
Factory Setting
  • UNDER_BY_ONE = No
Tags

Specifies whether or not CodeSonar will infer that unsigned comparison against an upper bound also implies a lower bound of zero.

Type { Yes, No }
Behavior
  • Yes : Conditions such as x < 10U or x <= 10U will imply that x >= 0 along with the upper bound on x.
  • No : Conditions such as x < 10U will only result in an upper bound on x.
Notes Because many of the abstractions used by the analysis are based on rational numbers and not modular arithmetic, setting this to Yes can result in inconsistencies if "x" is interpreted as a signed integer elsewhere. In general, setting this to Yes tends to cause false positives and false negatives but may fix some specific false negatives.
Factory Setting
  • UNSIGNED_BRACKET_INEQUALITY = No
Tags
  • Fine Tuning for Warnings

Specifies whether or not a Format String Type Error warning should be issued when the sign of the type of an argument does not match the sign of the format string specifier.

Type { Yes, No }
Behavior
  • Yes : Warn if the signedness of an argument does not match the argument's signedeness.
  • No : Do not issue any warnings if the signedness does not match.
Notes Format String Type Error warnings will only be issued in the following code if FORMAT_STRING_WARN_ON_SIGN_MISMATCH=Yes.
   void f(){
      printf( "%u\n", 42 );
      printf( "%x\n", 42 );
      printf( "%d\n", 42U );
   }
Factory Setting
  • FORMAT_STRING_WARN_ON_SIGN_MISMATCH = No
Tags

Specifies whether or not a Format String Type Error warning should be issued when the integer kind of the type of an argument does not match the integer kind of the format string specifier, but the two integer kinds have equal sizes.

Type { Yes, No }
Behavior
  • Yes : Warn if integer kinds differ, even if they have the same size.
  • No : Consider distinct integer kinds with the same size as binary compatible.
Notes On ABIs where int and long have the same size, Format String Type Error warnings will only be issued in the following code if FORMAT_STRING_WARN_ON_EQUAL_SIZE=Yes.
   void f(){
      assert( sizeof(int) == sizeof(long) );
      printf( "%d\n", 42L );
      printf( "%ld\n", 42 );
   }

A setting of Yes is useful for codebases intended to portable to multiple architectures. For example, the code above works correctly on a 32-bit Linux ABI but works incorrectly on a 64-bit Linux ABI. With a setting of No, CodeSonar would only issue a warning when the compiler is targeting the 64-bit Linux ABI. With a setting of Yes, CodeSonar would issue a warning regardless of which ABI the compiler is targeting for that particular analysis.

If a code base is only intended to run on one kind of hardware--ever--then set this to No.

Factory Setting
  • FORMAT_STRING_WARN_ON_EQUAL_SIZE = No
Tags

Inform the Java build/analysis about the runtime environment of the analyzed application.

Type { java1, java2, java3, java4, java5, java6, java7, java8, java9, java10, java11, java12, java13, java14, java15, java16, java17, java18, java19, java20, java21, java22, androidAPI1, androidAPI2, androidAPI3, androidAPI4, androidAPI5, androidAPI6, androidAPI7, androidAPI8, androidAPI9, androidAPI10, androidAPI11, androidAPI12, androidAPI13, androidAPI14, androidAPI15, androidAPI16, androidAPI17, androidAPI18, androidAPI19, androidAPI20, androidAPI21, androidAPI22, androidAPI23, androidAPI24, androidAPI25, androidAPI26, androidAPI27, androidAPI28 }
Behavior If a value is specified for JAVA_ANALYSIS_FRAMEWORK, CodeSonar will analyze the application with respect to the corresponding runtime environment. The affects the set of classes that will be treated as available in the runtime environment, the inheritance relationships of those classes, and the class semantics.

If no value is specified, CodeSonar will attempt to infer the appropriate runtime environment from the class versions of analyzed classes.

Languages Java
Factory Setting
  • JAVA_ANALYSIS_FRAMEWORK =
Tags
  • Governs the Build/Analysis

Specifies how the Java build/analysis will determine the application's entry points: the methods that can be invoked by the runtime environment and that should be considered starting points of the analysis.

Type { ALL_ENTRIES, ONLY_EXPLICIT_ENTRIES, ONLY_STANDARD_ENTRIES, LIBRARY, ALL_METHODS }
Behavior
  • ALL_ENTRIES : treat all public and protected methods and constructors as entry points.
  • ONLY_EXPLICIT_ENTRIES: treat methods and constructors as entry points if and only if they are annotated as @EntryPoint.
  • ONLY_STANDARD_ENTRIES : only consider default entry points like main methods, Swing event handlers, and Android event handlers.
  • LIBRARY : treat all public and protected methods and constructors as entry points, and assume that non-final classes might be redefined in the future.
  • ALL_METHODS : treat all public, protected and private methods and constructors as entry points.
Languages Java
Factory Setting
  • JAVA_ANALYSIS_ENTRY_POINTS_MODE = ALL_ENTRIES
Tags
  • Governs the Build/Analysis

Specifies whether or not the Java build/analysis will treat assertion statements as if they are executed.

Type { Yes, No }
Behavior
  • Yes : The analysis will treat assertion statements as if they are executed. Warnings can be reported in assertion code, and assertion side effects are considered by the analysis.
  • No : The analysis will proceed as if all assertions have been removed. Warnings will not be reported for any assertion code, and side effects from assertions will not be accounted for.
Languages Java
Factory Setting
  • JAVA_ANALYSIS_ENABLE_ASSERTIONS = No
Tags
  • Governs the Build/Analysis

Specifies a timeout (in seconds) for the overall Java build/analysis.

Type non-negative integer
Behavior
  • integer N : if the Java Build/Analysis hasn't finished after N seconds, it will halt with an error message. No analysis results are produced in this case.
Languages Java
Notes The factory setting of 10800 correponds to 3 hours.
Factory Setting
  • JAVA_ANALYSIS_TIMEOUT = 10800
Tags
  • Analysis Time Limits

Specifies whether or not the Java build/analysis will perform advanced checking for injection-related issues.

Type { Yes, No }
Behavior
  • Yes : Advanced checking for injection-related issues is performed. This requires more resources than the No setting, but provides results that account for the flow of tainted data within the program.
  • No : Only basic checking is performed for these warning classes. This has a lower resource cost than the Yes setting but may miss some vulnerabilities.
Languages Java
Notes Setting this to Yes will generally produce more false positives than setting to No.
Factory Setting
  • JAVA_ANALYSIS_ADVANCED_INJECTION = No
Tags

Specifies options to the JVM that will execute the Java build/analysis.

Type string
Behavior The whole value of this parameter will be prepended to the list of JVM arguments that is used to start the Java analysis JVM. To specify multiple options, separate them with a space.
Languages Java
Notes A list of the available JVM options is available in the Oracle Java command line documentation, in section "Standard Options for Java".
Factory Setting
  • JAVA_ANALYSIS_JVM_OPTIONS =
Tags
  • Governs the Build/Analysis

Customize the execution of the JVM that will execute the Java build/analysis launcher.

Type string
Behavior The whole value of this parameter will be prepended to the list of JVM arguments that is used to start the Java analysis launcher JVM. To specify multiple options, separate them with a space.
Notes A list of the available JVM options is available in the Oracle Java command line documentation, in section "Standard Options for Java".
Factory Setting
  • JAVA_LAUNCHER_JVM_OPTIONS =
Tags
  • Governs the Build/Analysis

In combination with JAVA_ANALYSIS_MEMORY_MANAGEMENT, specifies the maximum amount of memory that the Java build/analysis can use in megabytes (MiB).

Type <num>, where <num> is a non-negative integer.
Behavior The specified value is interpreted as an upper bound on memory.
  • When JAVA_ANALYSIS_MEMORY_MANAGEMENT=ADAPTIVE or JAVA_ANALYSIS_MEMORY_MANAGEMENT=SIMPLE, the specified value contributes to determining the memory limit specified when invoking the JVM for the Java build/analysis.
  • When JAVA_ANALYSIS_MEMORY_MANAGEMENT=NONE, the specified value has no effect.

See JAVA_ANALYSIS_MEMORY_MANAGEMENT for more information.

Factory Setting
  • JAVA_ANALYSIS_MAX_MEMORY = 16384
Tags
  • Analysis resource/effort limit

Specifies the maximum amount of memory that the Java build/analysis launcher can use in megabytes (MiB).

Type <num>, where <num> is a non-negative integer.
Behavior The specified value is interpreted as an upper bound on memory.
Languages Java
Factory Setting
  • JAVA_LAUNCHER_MEMORY = 1024
Tags
  • Analysis resource/effort limit

In combination with JAVA_ANALYSIS_MAX_MEMORY, specifies how the Java build/analysis will manage its memory limit.

Type { ADAPTIVE, NONE, SIMPLE }
Behavior
  • ADAPTIVE : The JVM that executes the analysis is passed argument -Xmx <val>, where <val> is the lower of the value specified for JAVA_ANALYSIS_MAX_MEMORY and the amount of memory currently available on the system.
  • NONE : No -Xmx option is passed to the JVM that executes the analysis. Memory management and garbage collection are completely handled by the Java runtime and the operating system. The value of JAVA_ANALYSIS_MAX_MEMORY is ignored.
  • SIMPLE: The JVM that executes the analysis is passed argument -Xmx <val>, where <val> is the value specified for JAVA_ANALYSIS_MAX_MEMORY.
Languages Java
Notes Setting this to ADAPTIVE usually leads to easier recovery in case of out of memory errors.
Factory Setting
  • JAVA_ANALYSIS_MEMORY_MANAGEMENT = ADAPTIVE
Tags
  • Analysis resource/effort limit

Specifies the number of CPUs that the JVM executing the Java analysis is allowed to use.

Type integer in the range 1..<cores>, where <cores> is the total number of cores on the analysis machine.
Behavior If JAVA_ANALYSIS_JVM_CONCURRENCY is set with JAVA_ANALYSIS_JVM_CONCURRENCY=<num>, the active processor count of the JVM executing the Java analysis will be set to <num>.

If JAVA_ANALYSIS_JVM_CONCURRENCY is not set, the number <num> of active processors to use is computed using the total number of cores available on the analysis machine and the settings of parameters ANALYSIS_SLAVES, MAX_ANALYSIS_SLAVES, and REQUEST_REMOTE_ANALYSIS_SLAVES, as follows.

  • if REQUEST_REMOTE_ANALYSIS_SLAVES=No and ANALYSIS_SLAVES=Auto, <num>=min(min(<cores>, 8), MAX_ANALYSIS_SLAVES)
  • otherwise, if REQUEST_REMOTE_ANALYSIS_SLAVES=No, <num>=min(ANALYSIS_SLAVES, MAX_ANALYSIS_SLAVES)
  • otherwise, <num>=min(min(<cores>, 4), MAX_ANALYSIS_SLAVES)
Languages Java
Notes A value between 4 and 8 is recommended.
Factory Setting
  • JAVA_ANALYSIS_JVM_CONCURRENCY=
Tags
  • Analysis resource/effort limit

Specifies whether or not the Java taint analysis should trust data that originates from database queries, rather than treating it as tainted.

Type { Yes, No }
Behavior
  • Yes : data originating from database queries will be not be treated as tainted, and cannot cause a taint-related warning to be issued.
  • No : data originating from database queries will be treated as tainted. If any such data reaches a taint sink without being cleansed of the taint by a corresponding taint sanitizer, a warning will be issued.
Languages Java
Notes Data is considered to come from a database query if it originates from a field or method return value annotated with @com.juliasoft.julia.checkers.flows.UntrustedDatabase. While this annotation can be manually placed by users of the analysis, CodeSonar automatically annotates some well-known library methods (see the Java taint source list).
Factory Setting
  • JAVA_ANALYSIS_TRUST_DATABASE = No
Tags

Specifies whether or not the Java taint analysis should trust data that originates from the specific device running the application, rather than treating it as tainted.

Type { Yes, No }
Behavior
  • Yes : data originating from the device will be not be treated as tainted, and cannot cause a taint-related warning to be issued.
  • No : data originating from the device will be treated as tainted. If any such data reaches a taint sink without being cleansed of the taint by a corresponding taint sanitizer, a warning will be issued.
Languages Java
Notes Data is considered to come from the device the application is running on if it originates from a field or method return value annotated with @com.juliasoft.julia.checkers.flows.UntrustedDevice. While this annotation can be manually placed by users of the analysis, CodeSonar automatically annotates some well-known library methods (see the Java taint source list).
Factory Setting
  • JAVA_ANALYSIS_TRUST_DEVICE = No
Tags

Specifies whether or not the Java taint analysis should trust data that originates from the environment or from system properties, rather than treating it as tainted.

Type { Yes, No }
Behavior
  • Yes : data originating from the environment or from system properties will be not be treated as tainted, and cannot cause a taint-related warning to be issued.
  • No : data originating from the environment or from system properties will be treated as tainted. If any such data reaches a taint sink without being cleansed of the taint by a corresponding taint sanitizer, a warning will be issued.
Languages Java
Notes Data is considered to come from the environment or from system properties if it originates from a field or method return value annotated with @com.juliasoft.julia.checkers.flows.UntrustedEnvironment. While this annotation can be manually placed by users of the analysis, CodeSonar automatically annotates some well-known library methods (see the Java taint source list).
Factory Setting
  • JAVA_ANALYSIS_TRUST_ENVIRONMENT = Yes
Tags

Specifies whether or not the Java taint analysis should trust data that originates from external streams or sockets, rather than treating it as tainted.

Type { Yes, No }
Behavior
  • Yes : data originating from external streams or sockets will be not be treated as tainted, and cannot cause a taint-related warning to be issued.
  • No : data originating from external streams or sockets will be treated as tainted. If any such data reaches a taint sink without being cleansed of the taint by a corresponding taint sanitizer, a warning will be issued.
Languages Java
Notes Data is considered to come from an external stream or socket if it originates from a field or method return value annotated with @com.juliasoft.julia.checkers.flows.UntrustedExternalStreams. While this annotation can be manually placed by users of the analysis, CodeSonar automatically annotates some well-known library methods (see the Java taint source list).
Factory Setting
  • JAVA_ANALYSIS_TRUST_EXTERNAL_STREAMS = Yes
Tags

Specifies whether or not the Java taint analysis should trust data that originates from web requests or console input, rather than treating it as tainted.

Type { Yes, No }
Behavior
  • Yes : data originating from web requests or console input will be not be treated as tainted, and cannot cause a taint-related warning to be issued.
  • No : data originating from web requests or console input will be treated as tainted. If any such data reaches a taint sink without being cleansed of the taint by a corresponding taint sanitizer, a warning will be issued.
Languages Java
Notes Data is considered to be user input if it originates from a field or method return value annotated with @com.juliasoft.julia.checkers.flows.UntrustedUserInput. While this annotation can be manually placed by users of the analysis, CodeSonar automatically annotates some well-known library methods (see the Java taint source list).
Factory Setting
  • JAVA_ANALYSIS_TRUST_USER_INPUT = No
Tags

Specifies whether or not the Java build/analysis will collapse bytecode instructions that create objects of the same type inside the same class.

Type { Yes, No }
Behavior
  • Yes : all instructions inside the same class X that create objects of the same type Y are treated as the same instruction. In particular, all instances of Y created inside X are considered to be the same object.
  • No : all object creation instructions are treated as distinct.
Notes The loss of object sensitivity caused by setting this to Yes can lead to both false positives and false negatives but speeds up the analysis and reduces memory cost.

For sufficiently large analyzed applications - those with more than 300k reachable bytecode instructions - the Java analysis will always behave as if this option is set to Yes.

Factory Setting
  • JAVA_ANALYSIS_MERGE_CREATION_POINTS = No
Tags

Specifies whether or not the Java build/analysis will track information about individual fields of each object.

Type { Yes, No }
Behavior
  • Yes : the Java analysis will track information about each field of each object.
  • No : for each object, the Java analysis will track one set of information covering all fields (that is, it treats the fields as interchangeable). In particular, if one field of an object O becomes tainted, the analysis will consider all fields of O to be tainted.
Languages Java
Notes Setting this to Yes will generally reduce the number of false positives, but uses more time and memory than setting to No.
Factory Setting
  • JAVA_ANALYSIS_FIELD_SENSITIVE = Yes
Tags

For Android checks that rely on manifest data, specifies whether or not at least one Android manifest must be submitted in order for the check to be performed.

Type { Yes, No }
Behavior
  • Yes : checks for the listed warning classes will only be performed if at least one Android manifest has been included with the files submitted for analysis.
  • No : checks for the listed warning classes will be performed even if no manifest has been submitted. Worst-case assumptions will be applied in situations where manifest data is required, typically resulting in a large number of false positives.
Languages Java
Factory Setting
  • JAVA_ANALYSIS_REQUIRE_ANDROID_MANIFEST = Yes
Tags

For warning classes related to field visibility, specifies the field visibility types that will be considered by the warning class checks.

Type { PUBLIC, PROTECTED, PACKAGE, PRIVATE }
Behavior Warning classes that reason about field visibility inspect fields with visibility equal to, or less restrictive than, the value of this parameter.
  • PUBLIC : checks for the listed warning classes will only consider fields with public visibility.
  • PROTECTED : checks for the listed warning classes will consider fields with public or protected visibility.
  • PACKAGE checks for the listed warning classes will consider fields with public, protected, or package (no modifier) visibility.
  • PRIVATE : checks for the listed warning classes will consider fields of all visibility types: public, protected, package (no modifier), and private.
Languages Java
Factory Setting
  • JAVA_ANALYSIS_FIELD_VISIBILITY = PROTECTED
Tags

For warning classes whose checks can involve additional supporting analyses, specifies whether or not those additional analyses should be skipped (generally in order to save time).

Type { Yes, No }
Behavior
  • Yes : checks for the listed warning classes will not incorporate additional supporting analyses such as reachability analysis and expression nullness checking. In situations where data from these additional analyses is required, worst-case assumptions will be applied.
  • No : checks for the listed warning classes will incorporate the additional supporting analyses.
Languages Java
Notes Setting this to Yes will speed up the analysis, but generally lead to more false positives.
Factory Setting
  • JAVA_ANALYSIS_FAST_DEEP_CHECK = No
Tags

Specifies whether or not a preliminary "class initialization analysis" will be performed before checks for those warning classes that may benefit from it.

Type { Yes, No }
Behavior
  • Yes : checks for the listed warning classes will be preceded by a "class initialization analysis" to determine the locations at which a class is initialized (and so its static initializer is called).
  • No : the Java analysis will treat all accesses to class objects as possible class initialization points. This is an overapproximation: some of these accesses may be unreachable, or may occur after the class has already been initialized.
Languages Java
Notes Setting this to Yes can reduce the number of false positives, but increases analysis time.
Factory Setting
  • JAVA_ANALYSIS_INITIALIZATION_CHECK = No
Tags

Specifies whether or not the analysis should treat all inputs received by the application as if they might be null.

Type { Yes, No }
Behavior
  • Yes : the analysis will account for the possibility of null values in unwritten fields, values returned by library methods, and parameters of methods selected as entry points.
  • No : the analysis will assume that such values are always non-null.
Notes A Yes setting represents the worst-case scenario for nullness issues. There will generally lead to a higher number of warnings than a No setting, possibly including false positives.
Factory Setting
  • JAVA_ANALYSIS_DEEP_NULLNESS_CONSERVATIVE_CHECK = No
Tags

Specifies how checks for concurrency warning classes should interpret @GuardedBy annotations.

Type { byValue, byName }
Behavior
  • byName : @GuardedBy annotations refer to the names of the annotated variables or fields.
  • byValue : @GuardedBy annotations refer to the values contained in the annotated variables or fields. Variables assigned these values must therefore also be guarded.
Languages Java
Notes For example, consider the following code.
   @GuardedBy(x)
   Object a; // a must be guarded by x
   Object b; // b doesn't have to be guarded
   // ...
   b = a;

If JAVA_ANALYSIS_CONCURRENCY_GUARDS_MODE=byName, this code fragment will not cause the analysis to infer any guard requirements for b.

If JAVA_ANALYSIS_CONCURRENCY_GUARDS_MODE=byValue, the analysis will infer that b must be guarded by x at all points after the assignment b=a.

Factory Setting
  • JAVA_ANALYSIS_CONCURRENCY_GUARDS_MODE = byName
Tags

When JAVA_ANALYSIS_CONCURRENCY_GUARDS_MODE=byValue, specifies whether or not the analysis will treat method calls on guarded variables as dereferences of those variables.

Type { Yes, No }
Behavior If JAVA_ANALYSIS_CONCURRENCY_GUARDS_MODE=byValue, behavior is as follows.
  • Yes : method calls Obj.meth() are considered to be dereferences of the method receiver Obj, and this information is used in computing inferred @GuardedBy annotations for Obj. Specifically, the analysis will not infer a @GuardedBy annotation for Obj unless it can infer the same annotation for meth().
  • No : method calls are not considered to be dereferences of the method receiver. This is the factory setting, since instance method calls only access the class tag of the value, which is constant in Java and cannot be involved in a data race.

If JAVA_ANALYSIS_CONCURRENCY_GUARDS_MODE=byName, the setting of this parameter has no effect.

Languages Java
Notes Setting this to Yes will generally lead to fewer inferred @GuardedBy annotations.
Factory Setting
  • JAVA_ANALYSIS_CONCURRENCY_CALLS = No
Tags

Specifies whether or not CodeSonar should perform stricter checking for certain Java warning classes.

Type { Yes, No }
Behavior
  • Yes : the analysis will perform stricter checking for the listed warning classes.
  • No : this additional checking will not be performed.
Languages Java
Notes Refer to the individual warning class documentation pages for information about the precise effects of this parameter on each class.

Setting this to Yes will generally lead to fewer false negative warnings, but more false positives and a longer analysis time.

The clone Subclass of Non-clonable (Java) and Inadequate Salt (Java) classes can only be enabled if this is set to Yes.

Factory Setting
  • JAVA_ANALYSIS_STRICT_MODE = No
Tags

Specifies whether or not CodeSonar should perform more pedantic checking for certain Java warning classes.

Type { Yes, No }
Behavior
  • Yes : the analysis will perform more pedantic checking for the listed warning classes.
  • No : this additional checking will not be performed.
Languages Java
Notes Refer to the individual warning class documentation pages for information about the precise effects of this parameter on each class.

Setting this to Yes will generally lead to fewer false negative warnings, but more false positives and a longer analysis time. There may be many more warnings than with a No setting.

The Inner Class Should be Static (Java) and Unsafe Base64 Encoding (Java) classes can only be enabled if this is set to Yes.

Factory Setting
  • JAVA_ANALYSIS_PEDANTIC_MODE = No
Tags

Inform the C# build/analysis about the runtime environment of the analyzed application.

Type { net10, net11, net20, net30, net35, net40, net45, net451, net452, net46, net461, net462, net47, net471, net472, net48, netcoreapp1.0, netcoreapp1.1, netcoreapp2.0, netcoreapp2.1, netcoreapp2.2, netcoreapp3.0, netcoreapp3.1, net5.0, net6.0, net7.0, net8.0 }
Behavior If a value is specified for CSHARP_ANALYSIS_FRAMEWORK, CodeSonar will analyze the application with respect to the corresponding runtime environment. The affects the set of classes that will be treated as available in the runtime environment, the inheritance relationships of those classes, and the class semantics.

If no value is specified, CodeSonar will attempt to infer the appropriate runtime environment from the class versions of analyzed classes.

Languages C#
Factory Setting
  • CSHARP_ANALYSIS_FRAMEWORK =
Tags
  • Governs the Build/Analysis

Specifies how the C# build/analysis will determine the application's entry points: the methods that can be invoked by the runtime environment and that should be considered starting points of the analysis.

Type { ALL_ENTRIES, ONLY_EXPLICIT_ENTRIES, ONLY_STANDARD_ENTRIES, LIBRARY, ALL_METHODS }
Behavior
  • ALL_ENTRIES : treat all public and protected methods and constructors as entry points.
  • ONLY_EXPLICIT_ENTRIES: treat methods and constructors as entry points if and only if they are annotated as @EntryPoint.
  • ONLY_STANDARD_ENTRIES : only consider default entry points like main methods, Swing event handlers, and Android event handlers.
  • LIBRARY : treat all public and protected methods and constructors as entry points, and assume that non-final classes might be redefined in the future.
  • ALL_METHODS : treat all public, protected and private methods and constructors as entry points.
Languages C#
Factory Setting
  • CSHARP_ANALYSIS_ENTRY_POINTS_MODE = ALL_ENTRIES
Tags
  • Governs the Build/Analysis

Specifies whether or not the C# build/analysis will treat assertion statements as if they are executed.

Type { Yes, No }
Behavior
  • Yes : The analysis will treat assertion statements as if they are executed. Warnings can be reported in assertion code, and assertion side effects are considered by the analysis.
  • No : The analysis will proceed as if all assertions have been removed. Warnings will not be reported for any assertion code, and side effects from assertions will not be accounted for.
Languages C#
Factory Setting
  • CSHARP_ANALYSIS_ENABLE_ASSERTIONS = No
Tags
  • Governs the Build/Analysis

Specifies a timeout (in seconds) for the overall C# build/analysis.

Type non-negative integer
Behavior
  • integer N : if the C# Build/Analysis hasn't finished after N seconds, it will halt with an error message. No analysis results are produced in this case.
Notes The factory setting of 10800 correponds to 3 hours.
Factory Setting
  • CSHARP_ANALYSIS_TIMEOUT = 10800
Tags
  • Analysis Time Limits

Specifies a timeout (in seconds) for the preprocessing phase of the C# build/analysis.

Type non-negative integer
Behavior
  • integer N : if the C# preprocessing hasn't finished after N seconds, it will halt with an error message. No analysis results are produced in this case.
Notes The factory setting of 600 correponds to 10 minutes.
Factory Setting
  • CSHARP_ANALYSIS_PREPROCESSING_TIMEOUT = 600
Tags
  • Analysis Time Limits

Specifies whether or not the C# build/analysis will perform advanced checking for injection-related issues.

Type { Yes, No }
Behavior
  • Yes : Advanced checking for injection-related issues is performed. This requires more resources than the No setting, but provides results that account for the flow of tainted data within the program.
  • No : Only basic checking is performed for these warning classes. This has a lower resource cost than the Yes setting but may miss some vulnerabilities.
Notes Setting this to Yes will generally produce more false positives than setting to No.
Factory Setting
  • CSHARP_ANALYSIS_ADVANCED_INJECTION = No
Tags

Specifies options to the JVM that will execute the C# build/analysis.

Type string
Behavior The whole value of this parameter will be prepended to the list of JVM arguments that is used to start the C# analysis JVM. To specify multiple options, separate them with a space.
Languages C#
Notes A list of the available JVM options is available in the Oracle Java command line documentation, in section "Standard Options for Java".
Factory Setting
  • CSHARP_ANALYSIS_JVM_OPTIONS =
Tags
  • Governs the Build/Analysis

Customize the execution of the JVM that will execute the C# build/analysis launcher.

Type string
Behavior The whole value of this parameter will be prepended to the list of JVM arguments that is used to start the C# analysis launcher JVM. To specify multiple options, separate them with a space.
Languages C#
Notes A list of the available JVM options is available in the Oracle Java command line documentation, in section "Standard Options for Java".
Factory Setting
  • CSHARP_LAUNCHER_JVM_OPTIONS =
Tags
  • Governs the Build/Analysis

In combination with CSHARP_ANALYSIS_MEMORY_MANAGEMENT, specifies the maximum amount of memory that the C# build/analysis can use in megabytes (MiB).

Type <num>, where <num> is a non-negative integer.
Behavior The specified value is interpreted as an upper bound on memory.
  • When CSHARP_ANALYSIS_MEMORY_MANAGEMENT=ADAPTIVE or CSHARP_ANALYSIS_MEMORY_MANAGEMENT=SIMPLE, the specified value contributes to determining the memory limit specified when invoking the JVM for the C# build/analysis.
  • When CSHARP_ANALYSIS_MEMORY_MANAGEMENT=NONE, the specified value has no effect.

See CSHARP_ANALYSIS_MEMORY_MANAGEMENT for more information.

Languages C#
Factory Setting
  • CSHARP_ANALYSIS_MAX_MEMORY = 16384
Tags
  • Analysis resource/effort limit

Specifies the maximum amount of memory that the C# build/analysis launcher can use in megabytes (MiB).

Type <num>, where <num> is a non-negative integer.
Behavior The specified value is interpreted as an upper bound on memory.
Languages C#
Factory Setting
  • CSHARP_LAUNCHER_MEMORY = 1024
Tags
  • Analysis resource/effort limit

In combination with CSHARP_ANALYSIS_MAX_MEMORY, specifies how the C# build/analysis will manage its memory limit.

Type { ADAPTIVE, NONE, SIMPLE }
Behavior
  • ADAPTIVE : The JVM that executes the analysis is passed argument -Xmx <val>, where <val> is the lower of the value specified for CSHARP_ANALYSIS_MAX_MEMORY and the amount of memory currently available on the system.
  • NONE : No -Xmx option is passed to the JVM that executes the analysis. Memory management and garbage collection are completely handled by the Java runtime and the operating system. The value of CSHARP_ANALYSIS_MAX_MEMORY is ignored.
  • SIMPLE: The JVM that executes the analysis is passed argument -Xmx <val>, where <val> is the value specified for CSHARP_ANALYSIS_MAX_MEMORY.
Languages C#
Notes Setting this to ADAPTIVE usually leads to easier recovery in case of out of memory errors.
Factory Setting
  • CSHARP_ANALYSIS_MEMORY_MANAGEMENT = ADAPTIVE
Tags
  • Analysis resource/effort limit

Specifies the number of CPUs that the JVM executing the C# analysis is allowed to use.

Type integer in the range 1..<cores>, where <cores> is the total number of cores on the analysis machine.
Behavior If CSHARP_ANALYSIS_JVM_CONCURRENCY is set with CSHARP_ANALYSIS_JVM_CONCURRENCY=<num>, the active processor count of the JVM executing the C# analysis will be set to <num>.

If CSHARP_ANALYSIS_JVM_CONCURRENCY is not set, the number <num> of active processors to use is computed using the total number of cores available on the analysis machine and the settings of parameters ANALYSIS_SLAVES, MAX_ANALYSIS_SLAVES, and REQUEST_REMOTE_ANALYSIS_SLAVES, as follows.

  • if REQUEST_REMOTE_ANALYSIS_SLAVES=No and ANALYSIS_SLAVES=Auto, <num>=min(min(<cores>, 8), MAX_ANALYSIS_SLAVES)
  • otherwise, if REQUEST_REMOTE_ANALYSIS_SLAVES=No, <num>=min(ANALYSIS_SLAVES, MAX_ANALYSIS_SLAVES)
  • otherwise, <num>=min(min(<cores>, 4), MAX_ANALYSIS_SLAVES)
Notes A value between 4 and 8 is recommended.
Factory Setting
  • CSHARP_ANALYSIS_JVM_CONCURRENCY=
Tags
  • Analysis resource/effort limit

Specifies whether or not the C# taint analysis should trust data that originates from database queries, rather than treating it as tainted.

Type { Yes, No }
Behavior
  • Yes : data originating from database queries will be not be treated as tainted, and cannot cause a taint-related warning to be issued.
  • No : data originating from database queries will be treated as tainted. If any such data reaches a taint sink without being cleansed of the taint by a corresponding taint sanitizer, a warning will be issued.
Languages C#
Notes Data is considered to come from a database query if it originates from a field or method return value with the [com.juliasoft.julia.checkers.flows.UntrustedDatabase] attribute. While this attribute can be manually applied by users of the analysis, CodeSonar automatically applies it to some well-known library methods (see the C# taint source list).
Factory Setting
  • CSHARP_ANALYSIS_TRUST_DATABASE = No
Tags

Specifies whether or not the C# taint analysis should trust data that originates from the specific device running the application, rather than treating it as tainted.

Type { Yes, No }
Behavior
  • Yes : data originating from the device will be not be treated as tainted, and cannot cause a taint-related warning to be issued.
  • No : data originating from the device will be treated as tainted. If any such data reaches a taint sink without being cleansed of the taint by a corresponding taint sanitizer, a warning will be issued.
Languages C#
Notes Data is considered to come from the device the application is running on if it originates from a field or method return value with the [com.juliasoft.julia.checkers.flows.UntrustedDevice] attribute. While this attribute can be manually applied by users of the analysis, CodeSonar automatically applies it to some well-known library methods (see the C# taint source list).
Factory Setting
  • CSHARP_ANALYSIS_TRUST_DEVICE = No
Tags

Specifies whether or not the C# taint analysis should trust data that originates from the environment or from system properties, rather than treating it as tainted.

Type { Yes, No }
Behavior
  • Yes : data originating from the environment or from system properties will be not be treated as tainted, and cannot cause a taint-related warning to be issued.
  • No : data originating from the environment or from system properties will be treated as tainted. If any such data reaches a taint sink without being cleansed of the taint by a corresponding taint sanitizer, a warning will be issued.
Languages C#
Notes Data is considered to come from the environment or from system properties if it originates from a field or method return value with the [com.juliasoft.julia.checkers.flows.UntrustedEnvironment] attribute. While this attribute can be manually applied by users of the analysis, CodeSonar automatically applies it to some well-known library methods (see the C# taint source list).
Factory Setting
  • CSHARP_ANALYSIS_TRUST_ENVIRONMENT = Yes
Tags

Specifies whether or not the C# taint analysis should trust data that originates from external streams or sockets, rather than treating it as tainted.

Type { Yes, No }
Behavior
  • Yes : data originating from external streams or sockets will be not be treated as tainted, and cannot cause a taint-related warning to be issued.
  • No : data originating from external streams or sockets will be treated as tainted. If any such data reaches a taint sink without being cleansed of the taint by a corresponding taint sanitizer, a warning will be issued.
Languages C#
Notes Data is considered to come from an external stream or socket if it originates from a field or method return value with the [com.juliasoft.julia.checkers.flows.UntrustedExternalStreams] attribute. While this attribute can be manually applied by users of the analysis, CodeSonar automatically applies it to some well-known library methods (see the C# taint source list).
Factory Setting
  • CSHARP_ANALYSIS_TRUST_EXTERNAL_STREAMS = Yes

Specifies whether or not the C# taint analysis should trust data that originates from web requests or console input, rather than treating it as tainted.

Type { Yes, No }
Behavior
  • Yes : data originating from web requests or console input will be not be treated as tainted, and cannot cause a taint-related warning to be issued.
  • No : data originating from web requests or console input will be treated as tainted. If any such data reaches a taint sink without being cleansed of the taint by a corresponding taint sanitizer, a warning will be issued.
Languages C#
Notes Data is considered to be user input if it originates from a field or method return value with the [com.juliasoft.julia.checkers.flows.UntrustedUserInput] attribute. While this attribute can be manually applied by users of the analysis, CodeSonar automatically applies it to some well-known library methods (see the C# taint source list).
Factory Setting
  • CSHARP_ANALYSIS_TRUST_USER_INPUT = No
Tags

Specifies whether or not the C# build/analysis will collapse bytecode instructions that create objects of the same type inside the same class.

Type { Yes, No }
Behavior
  • Yes : all instructions inside the same class X that create objects of the same type Y are treated as the same instruction. In particular, all instances of Y created inside X are considered to be the same object.
  • No : all object creation instructions are treated as distinct.
Languages C#
Notes The loss of object sensitivity caused by setting this to Yes can lead to both false positives and false negatives but speeds up the analysis and reduces memory cost.

For sufficiently large analyzed applications - those with more than 300k reachable bytecode instructions - the C# analysis will always behave as if this option is set to Yes.

Factory Setting
  • CSHARP_ANALYSIS_MERGE_CREATION_POINTS = No
Tags

Specifies whether or not the C# build/analysis will track information about individual fields of each object.

Type { Yes, No }
Behavior
  • Yes : the C# analysis will track information about each field of each object.
  • No : for each object, the C# analysis will track one set of information covering all fields (that is, it treats the fields as interchangeable). In particular, if one field of an object O becomes tainted, the analysis will consider all fields of O to be tainted.
Languages C#
Notes Setting this to Yes will generally reduce the number of false positives, but uses more time and memory than setting to No.
Factory Setting
  • CSHARP_ANALYSIS_FIELD_SENSITIVE = Yes
Tags

For warning classes related to field visibility, specifies the field visibility types that will be considered by the warning class checks.

Type { PUBLIC, PROTECTED, PACKAGE, PRIVATE }
Behavior Warning classes that reason about field visibility inspect fields with visibility equal to, or less restrictive than, the value of this parameter.
  • PUBLIC : checks for the listed warning classes will only consider fields with public visibility.
  • PROTECTED : checks for the listed warning classes will consider fields with public or protected visibility.
  • PACKAGE checks for the listed warning classes will consider fields with public, protected, or package (no modifier) visibility.
  • PRIVATE : checks for the listed warning classes will consider fields of all visibility types: public, protected, package (no modifier), and private.
Languages C#
Factory Setting
  • CSHARP_ANALYSIS_FIELD_VISIBILITY = PROTECTED
Tags

For warning classes whose checks can involve additional supporting analyses, specifies whether or not those additional analyses should be skipped (generally in order to save time).

Type { Yes, No }
Behavior
  • Yes : checks for the listed warning classes will not incorporate additional supporting analyses such as reachability analysis and expression nullness checking. In situations where data from these additional analyses is required, worst-case assumptions will be applied.
  • No : checks for the listed warning classes will incorporate the additional supporting analyses.
Languages C#
Notes Setting this to Yes will speed up the analysis, but generally lead to more false positives.
Factory Setting
  • CSHARP_ANALYSIS_FAST_DEEP_CHECK = No
Tags

Specifies whether or not a preliminary "class initialization analysis" will be performed before checks for those warning classes that may benefit from it.

Type { Yes, No }
Behavior
  • Yes : checks for the listed warning classes will be preceded by a "class initialization analysis" to determine the locations at which a class is initialized (and so its static initializer is called).
  • No : the C# analysis will treat all accesses to class objects as possible class initialization points. This is an overapproximation: some of these accesses may be unreachable, or may occur after the class has already been initialized.
Languages C#
Notes Setting this to Yes can reduce the number of false positives, but increases analysis time.
Factory Setting
  • CSHARP_ANALYSIS_INITIALIZATION_CHECK = No
Tags

Specifies whether or not the analysis should treat all inputs received by the application as if they might be null.

Type { Yes, No }
Behavior
  • Yes : the analysis will account for the possibility of null values in unwritten fields, values returned by library methods, and parameters of methods selected as entry points.
  • No : the analysis will assume that such values are always non-null.
Languages C#
Notes A Yes setting represents the worst-case scenario for nullness issues. There will generally lead to a higher number of warnings than a No setting, possibly including false positives.
Factory Setting
  • CSHARP_ANALYSIS_DEEP_NULLNESS_CONSERVATIVE_CHECK = No
Tags

Specifies how checks for concurrency warning classes should interpret [GuardedBy] attributes.

Type { byValue, byName }
Behavior For example, consider the following code.
   [GuardedBy(x)]
   Object a; // a must be guarded by x
   Object b; // b doesn't have to be guarded
   // ...
   b = a;

If CSHARP_ANALYSIS_CONCURRENCY_GUARDS_MODE=byName, this code fragment will not cause the analysis to infer any guard requirements for b.

If CSHARP_ANALYSIS_CONCURRENCY_GUARDS_MODE=byValue, the analysis will infer that b must be guarded by x at all points after the assignment b=a.

Languages C#
Factory Setting
  • CSHARP_ANALYSIS_CONCURRENCY_GUARDS_MODE = byName
Tags

When CSHARP_ANALYSIS_CONCURRENCY_GUARDS_MODE=byValue, specifies whether or not the analysis will treat method calls on guarded variables as dereferences of those variables.

Type { Yes, No }
Behavior If CSHARP_ANALYSIS_CONCURRENCY_GUARDS_MODE=byValue, behavior is as follows.
  • Yes : method calls Obj.meth() are considered to be dereferences of the method receiver Obj, and this information is used in computing inferred [GuardedBy] attributes for Obj. Specifically, the analysis will not infer a [GuardedBy] attribute for Obj unless it can infer the same attribute for meth().
  • No : method calls are not considered to be dereferences of the method receiver. This is the factory setting, since instance method calls only access the class tag of the value, which is constant in C# and cannot be involved in a data race.

If CSHARP_ANALYSIS_CONCURRENCY_GUARDS_MODE=byName, the setting of this parameter has no effect.

Languages C#
Notes Setting this to Yes will generally lead to fewer inferred [GuardedBy] attributes.
Factory Setting
  • CSHARP_ANALYSIS_CONCURRENCY_CALLS = No
Tags

Specifies whether or not CodeSonar should perform stricter checking for certain C# warning classes.

Type { Yes, No }
Behavior
  • Yes : the analysis will perform stricter checking for the listed warning classes.
  • No : this additional checking will not be performed.
Languages C#
Notes Refer to the individual warning class documentation pages for information about the precise effects of this parameter on each class.

Setting this to Yes will generally lead to fewer false negative warnings, but more false positives and a longer analysis time.

The clone Subclass of Non-clonable (C#) and Inadequate Salt (C#) classes can only be enabled if this is set to Yes.

Factory Setting
  • CSHARP_ANALYSIS_STRICT_MODE = No
Tags

Specifies whether or not CodeSonar should perform more pedantic checking for certain C# warning classes.

Type { Yes, No }
Behavior
  • Yes : the analysis will perform more pedantic checking for the listed warning classes.
  • No : this additional checking will not be performed.
Languages C#
Notes Refer to the individual warning class documentation pages for information about the precise effects of this parameter on each class.

Setting this to Yes will generally lead to fewer false negative warnings, but more false positives and a longer analysis time. There may be many more warnings than with a No setting.

The Unsafe Base64 Encoding (C#) class can only be enabled if this is set to Yes.

Factory Setting
  • CSHARP_ANALYSIS_PEDANTIC_MODE = No
Tags

Use the IDENTIFIER_NAMING_* family of parameters to define naming rules that identifiers of a particular ID_KIND must not violate. If a naming rule is violated, a Naming Style Violation warning will be issued.

<ID_KIND> One of: { ABSTRACT_CLASS, CLASS, CLASS_CONSTANT, CLASS_MEMBER, CLASS_METHOD, CONSTANT, CONSTANT_MEMBER, CONSTANT_PARAMETER, CONSTANT_POINTER_PARAMETER, CONSTEXPR_FUNCTION, CONSTEXPR_METHOD, CONSTEXPR_VARIABLE, ENUM, ENUM_CONSTANT, FUNCTION, GLOBAL_CONSTANT, GLOBAL_CONSTANT_POINTER, GLOBAL_FUNCTION, GLOBAL_POINTER, GLOBAL_VARIABLE, INLINE_NAMESPACE, LOCAL_CONSTANT, LOCAL_CONSTANT_POINTER, LOCAL_POINTER, LOCAL_VARIABLE, MACRO_DEFINITION, MEMBER, METHOD, NAMESPACE, PARAMETER, PARAMETER_PACK, POINTER_PARAMETER, PRIVATE_MEMBER, PRIVATE_METHOD, PROTECTED_MEMBER, PROTECTED_METHOD, PUBLIC_MEMBER, PUBLIC_METHOD, STATIC_CONSTANT, STATIC_VARIABLE, STRUCT, TEMPLATE_PARAMETER, TEMPLATE_TEMPLATE_PARAMETER, TYPEDEF, TYPE_ALIAS, TYPE_TEMPLATE_PARAMETER, UNION, VALUE_TEMPLATE_PARAMETER, VARIABLE, VIRTUAL_METHOD }
Type
  • IDENTIFIER_NAMING_<ID_KIND>_PREFIX: string
  • IDENTIFIER_NAMING_<ID_KIND>_SUFFIX: string
  • IDENTIFIER_NAMING_<ID_KIND>_CASE: { aNy_CasE, lower_case, UPPER_CASE, camelBack, CamelCase, Camel_Snake_Case, camel_Snake_Back }
  • IDENTIFIER_NAMING_<ID_KIND>_REGEX: Boost 'POSIX Extended Regular Expression'
Behavior These parameters are used to specify naming rules that identifiers of a particular kind must not violate. If an identifier is found to be in violation of any of the naming rules specified for that kind, a warning will be issued.
  • IDENTIFIER_NAMING_<ID_KIND>_PREFIX is a string. If defined, all identifiers of the selected kind must begin with the prefix; otherwise, a warning will be issued. Note that if an identifier matches a prefix rule, the matched portion of the identifier will be exempt from consideration of any suffix or case rule for that identifier kind.
  • IDENTIFIER_NAMING_<ID_KIND>_SUFFIX is a string. If defined, all identifiers of the selected kind must end with the suffix; otherwise, a warning will be issued. Note that if an identifier matches a suffix rule, the matched portion of the identifier will be exempt from consideration of any case rule for that identifier kind.
  • IDENTIFIER_NAMING_<ID_KIND>_CASE is one of the following strings: { aNy_CasE, lower_case, UPPER_CASE, camelBack, CamelCase, Camel_Snake_Case, camel_Snake_Back }. Each string is a mnemonic for the following regular expressions:
      aNy_CasE = ^.*$
      lower_case = ^[a-z][a-z0-9]*(_+[a-z0-9]+)*
      UPPER_CASE = ^[A-Z][A-Z0-9]*(_+[A-Z0-9]+)*
      camelBack = ^[a-z][a-zA-Z0-9]*$
      CamelCase = ^[A-Z][a-zA-Z0-9]*$
      Camel_Snake_Case = ^[A-Z][a-z0-9]*(_[A-Z][a-z0-9]*)*
      camel_Snake_Back = ^[a-z][a-z0-9]*(_[A-Z][a-z0-9]*)*

If defined, all identifiers of the selected kind must match the case rule; otherwise a warning will be issued.

  • IDENTIFIER_NAMING_<ID_KIND>_REGEX is a regular expression. If defined, all identifiers of the selected kind must match at least one of the provided regular expressions; otherwise, a warning will be issued. Note that multiple regex rules may be specified for a given identifier kind using the += operator. The set of regular expressions specified for a given kind are concatenated together into a single alternation of the form ( regex1 | regex2 | ... | regexn), which each identifier of the selected kind is matched against. Note that regex matching employs boolean OR logic, not boolean AND logic. In order for a match to occur, the regular expression must match the whole identifier starting from the first character and exhausting the whole string. For example, the regular expression [a-z].* will match the identifier aFunc but not the identifier _aFunc, as the latter matches only the substring aFunc but not the leading underscore.
Languages C/C++
Notes Use the += operator to define a regex rule. Use the = operator for all other rules.

STRUCT and CLASS identifier kinds are somewhat interchangeable; STRUCT rules are applied to CLASS identifiers in the absence of CLASS rules, and vice versa.

Prefix, suffix, and case rules are matched greedily in that order. For example, if an identifier matches a prefix rule, the matched portion of the identifier will be removed from the identifier before proceeding to match any suffix or case rule. Regex rules, however, are matched independently of any prefix, suffix, or case rules. For example, if a prefix rule and a regex rule have been defined for a given identifier kind, the matching of the prefix rule will have no impact on the matching of the regex rule and vice versa.

Depending on how a regex is specified and the identifier string it is being matched against, a Miscellaneous Error may be issued to the hub if the underlying call to boost::regex_match() throws an exception due to the complexity of matching the regular expression exceeding predefined bounds. If this occurs, refactor the regular expression to make each choice made by the state machine unambiguous thereby removing the possibility of any exponential backtracking during the matching operation.

Examples:

     IDENTIFIER_NAMING_GLOBAL_FUNCTION_REGEX += .*func.*
     IDENTIFIER_NAMING_GLOBAL_FUNCTION_PREFIX = F_
     IDENTIFIER_NAMING_GLOBAL_FUNCTION_SUFFIX = _F
     IDENTIFIER_NAMING_GLOBAL_FUNCTION_CASE = camel_Snake_Back
     IDENTIFIER_NAMING_GLOBAL_FUNCTION_REGEX += [^0-9]*
     IDENTIFIER_NAMING_VARIABLE_PREFIX = G_
     IDENTIFIER_NAMING_VARIABLE_SUFFIX = G_
     IDENTIFIER_NAMING_STRUCT_REGEX = ^[a-z]
     IDENTIFIER_NAMING_STRUCT_REGEX = [A-Z]$
     IDENTIFIER_NAMING_ENUM_CASE = UPPER_CASE

defines naming rules for GLOBAL_FUNCTION, VARIABLE, STRUCT, and ENUM identifiers.

     void F_myfunc_Foo_F(void); /* Matches: Although the case rule camel_Snake_Back is defined,
                                   which includes the requirement that the identifier must start
                                   with a lowercase letter, the prefix is matched first, followed
                                   by the suffix, and these matched portions of the identifier
                                   are removed before matching against the case rule. The remaining
                                   portion of the identifier, myfunc_Foo, matches the case rule. */
     void F__myfunc_Foo_F(void); /* 'Invalid naming style for global function
                                    F__myfunc_Foo_F; case does not match
                                    camel_Snake_Back.' After matching the prefix F_,
                                    the remaining unmatched portion of the identifier,
                                    _myfunc_Foo_F, is matched against the case and suffix
                                    rules. _myfunc_Foo_F does not match the case rule
                                    camel_Snake_Back because it does not start with a
                                    lowercase letter. */
     void F_func1_F(void); /* Matches: Although this violates the second regex rule by containing
                              a digit, it matches at least one of the other regex rules, in this
                              case the first one, so no warning is issued. */
     int G_myintG_ = 0; /* Matches */
     int G_ = 1; /* 'Invalid naming style for variable G_; suffix does not match G_.'
                    After matching the prefix G_, the remaining unmatched portion of the identifier
                    is the empty string, which does not match the suffix rule. */
     class MyClass {
         private:
         int foo;
         int bar;
     }; /* 'Invalid naming style for struct MyClass; does not match the regular expression [A-Z]$.'
           Note two things:
           1). Although MyClass is a class identifier, the struct rules are applied to it in the
               absence of class rules.
           2). The first regex rule for structs was overwritten by the second rule;
               the second rule was specified using = instead of +=. */
     enum _DAYS_OF_THE_WEEK { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY};
     /* 'Invalid naming style for enum _DAYS_OF_THE_WEEK; case does not match UPPER_CASE.'
      * Although all letters are uppercase, UPPER_CASE has the additional requirement that
      * the identifier must start with an uppercase character, not an underscore.
      */
Tags

Specifies whether Object Slicing warnings should be issued only in the case where the derived class has additional data members not found in the converted-to base class.

Type { Yes, No }
Behavior
  • Yes : Warning is not issued if derived class doesn't have additional data members.
  • No : Warning is issued even when derived class doesn't have additional data members.
Languages C++
Factory Setting
  • OBJSLICE_WARN_NEW_MEMBER_ONLY = Yes
Tags

Specifies certain functions by name that should always be expanded when CALL_SITE_EXPANSIONS is not None.

Type string
Behavior This is the analysis' version of inlining a function. During refinement of a pathy warning, CodeSonar will always expand functions that have one of these names. In some cases, this can help CodeSonar rule out potential false positives. In other cases, it will cause blue "[+]" icons to appear in the margin of warning reports adjacent to calls to these named functions. Full verbose names are required; see the BAD_FUNCTION_REGEX documentation for information about recovering and using verbose names.
Languages C/C++
Tags
  • Analysis resource/effort limit

Specifies the set of functions that are guaranteed to set errno when they encounter an error condition.

Type string
Behavior Functions that are in this set are expected to set errno when they encounter an error.
  • A Missing Test of Error Code warning is issued (if enabled) when a call to one of these functions is succeeded by a test of errno against zero.
  • An Inappropriate Test of Error Code warning is issued (if enabled) when the value of errno is tested and the last function call was NOT to one of these functions.
Languages C/C++
Factory Settings
  • ERRNO_SETTING_FUNCTIONS += ftell
  • ERRNO_SETTING_FUNCTIONS += fgetpos
  • ERRNO_SETTING_FUNCTIONS += fsetpos
  • ERRNO_SETTING_FUNCTIONS += fgetwc
  • ERRNO_SETTING_FUNCTIONS += fputwc
  • ERRNO_SETTING_FUNCTIONS += strtoimax
  • ERRNO_SETTING_FUNCTIONS += strtoumax
  • ERRNO_SETTING_FUNCTIONS += strtol
  • ERRNO_SETTING_FUNCTIONS += strtoul
  • ERRNO_SETTING_FUNCTIONS += strtoll
  • ERRNO_SETTING_FUNCTIONS += strtoull
  • ERRNO_SETTING_FUNCTIONS += strtof
  • ERRNO_SETTING_FUNCTIONS += strtod
  • ERRNO_SETTING_FUNCTIONS += strtold
  • ERRNO_SETTING_FUNCTIONS += wcstoimax
  • ERRNO_SETTING_FUNCTIONS += wcstoumax
  • ERRNO_SETTING_FUNCTIONS += wcstol
  • ERRNO_SETTING_FUNCTIONS += wcstoul
  • ERRNO_SETTING_FUNCTIONS += wcstoll
  • ERRNO_SETTING_FUNCTIONS += wcstoull
  • ERRNO_SETTING_FUNCTIONS += wcstof
  • ERRNO_SETTING_FUNCTIONS += wcstod
  • ERRNO_SETTING_FUNCTIONS += wcstold
  • ERRNO_SETTING_FUNCTIONS += wcrtomb
  • ERRNO_SETTING_FUNCTIONS += wcsrtombs
  • ERRNO_SETTING_FUNCTIONS += mbrtowc
Tags

Specifies the size limit for a socket's listen queue.

Type integer
Behavior The size of a socket's listen queue is set to this value. If this value is negative, the listen queue size is zero. If this value exceeds the system's SOMAXCONN value, the message queue size is SOMAXCONN.
Notes If this value is not set, the message queue will be the smaller of 65535 or the system's SOMAXCONN value.

This value is passed to the operating system's listen function when creating server sockets for parallel parsing and analysis. See related configuration options ANALYSIS_SLAVES, DAEMON_SLAVES.

Factory Setting
  • MAX_SOCKET_LISTEN_BACKLOG = 65535

The threshold below which the cases in a switch statement are too sparse to trigger a switch With Non-enum Expression warning.

Type integer
Behavior If case label density in a switch statement is below this threshold, a switch With Non-enum Expression warning will not be issued for that switch statement even if its controlling expression does not have enumeration type.

Let L be the set of all case labels in the switch statement, excluding default, ranges, and character constants.

Then case label density is:

  100 * cardinality(L) / (max(L) - min(L) + 1)
Notes See also SWITCH_LABEL_DENSITY_THRESHOLD.

See the switch With Non-enum Expression documentation for information on enabling this warning class.

Factory Setting
  • SWITCH_LABEL_DENSITY_THRESHOLD = 80
Tags

The threshold below which a switch statement has too few cases to trigger switch With Non-enum Expression warning.

Type integer
Behavior If a switch statement has fewer than this many case labels, a switch With Non-enum Expression warning will not be issued for that switch statement even if its controlling expression does not have enumeration type.
Notes Case labels of the following kinds are not included in the count for SWITCH_LABEL_CARDINALITY_THRESHOLD.
  • default
  • ranges
  • character constants

See also SWITCH_LABEL_DENSITY_THRESHOLD.

See the switch With Non-enum Expression documentation for information on enabling this warning class.

Factory Setting
  • SWITCH_LABEL_CARDINALITY_THRESHOLD = 3
Tags

Specifies a comment size threshold for reporting Commented-out Code warnings.

Type positive integer
Behavior If a comment contains fewer than this many characters (excluding characters deemed to be part of comment syntax), then that comment is not included in checks for the Commented-out Code warning class.

More information on comment character counts is provided in the documentation for COMMENTED_OUT_CODE_MIN_RATIO / COMMENTED_OUT_CODE_MAX_RATIO .

Notes Comments that are on contiguous lines are treated as a single comment.

See also COMMENTED_OUT_CODE_MIN_RATIO, COMMENTED_OUT_CODE_MAX_RATIO.

Factory Setting
  • COMMENTED_OUT_CODE_SIZE_THRESHOLD = 18
Tags

Specify upper and lower bounds on the "operator"/"non-operator" character ratio that will be treated as indicating the presence of code for Commented-out Code checks.

Type real number greater than 0
Behavior A Commented-out Code warning will only be issued for a comment C if
  COMMENTED_OUT_CODE_MIN_RATIO < Cratio < COMMENTED_OUT_CODE_MAX_RATIO

where:

  • OpC is the number of operator characters in C.
  • NopC is the number of non-operator characters in C.
  • Cratio = OpC / NopC
Notes Comment character counts are performed as follows.
  • Certain characters are deemed to be part of the comment syntax. These include /* , */ , and // , along with * characters at the beginning of a line. They are considered neither "operator characters" nor "non-operator characters".
  • "operator characters" are the non-alphanumeric characters that appear in C and C++ tokens, minus those that are likely to appear as punctuation characters in regular prose. Contiguous sequences of operator characters are treated as a single operator character. Characters deemed to be part of the comment syntax are not included in the count of operator characters.
  • "non-operator characters" are all non-whitespace characters that are neither "operator characters" nor part of the comment syntax. The count of non-operator characters starts with a value of 1.

Comments that are on contiguous lines are treated as a single comment.

Increasing COMMENTED_OUT_CODE_MAX_RATIO increases the risk of reporting false positives for comments that are ASCII art.

Decreasing COMMENTED_OUT_CODE_MIN_RATIO increases the risk of false positives for small comments that contain mostly prose.

See also COMMENTED_OUT_CODE_SIZE_THRESHOLD.

Factory Settings
  • COMMENTED_OUT_CODE_MIN_RATIO = 0.19
  • COMMENTED_OUT_CODE_MAX_RATIO = 4.0
Tags