Skip to main content
assistive.skiplink.to.breadcrumbs
assistive.skiplink.to.header.menu
assistive.skiplink.to.action.menu
assistive.skiplink.to.quick.search
Log in
Confluence
Spaces
Hit enter to search
Help
Online Help
Keyboard Shortcuts
Feed Builder
What’s new
Available Gadgets
About Confluence
Log in
SEI CERT C Coding Standard
Pages
Boards
Space shortcuts
Dashboard
Secure Coding Home
Android
C
C++
Java
Perl
Page tree
Browse pages
Configure
Space tools
View Page
A
t
tachments (0)
Page History
Page Information
View in Hierarchy
View Source
Export to PDF
Export to Word
Pages
…
SEI CERT C Coding Standard
4 Back Matter
EE. Analyzers
RuleChecker
Page Information
Title:
RuleChecker
Author:
Joerg Herter
Sep 04, 2017
Last Changed by:
David Svoboda
Sep 27, 2023
Tiny Link:
(useful for email)
https://wiki.sei.cmu.edu/confluence/x/LtcxBQ
Export As:
Word
·
PDF
Incoming Links
SEI CERT C Coding Standard (112)
Page:
EXP32-C. Do not access a volatile object through a nonvolatile reference
Page:
EXP36-C. Do not cast pointers into more strictly aligned pointer types
Page:
DCL18-C. Do not begin integer constants with 0 when specifying a decimal value
Page:
EXP13-C. Treat relational and equality operators as if they were nonassociative
Page:
EXP10-C. Do not depend on the order of evaluation of subexpressions or the order in which side effects take place
Page:
MSC33-C. Do not pass invalid data to the asctime() function
Page:
MSC41-C. Never hard code sensitive information
Page:
INT36-C. Converting a pointer to integer or integer to pointer
Page:
MEM33-C. Allocate and copy structures containing a flexible array member dynamically
Page:
ERR06-C. Understand the termination behavior of assert() and abort()
Page:
EXP46-C. Do not use a bitwise operator with a Boolean-like operand
Page:
EXP33-C. Do not read uninitialized memory
Page:
EXP35-C. Do not modify objects with temporary lifetime
Page:
STR30-C. Do not attempt to modify string literals
Page:
ARR30-C. Do not form or use out-of-bounds pointers or array subscripts
Page:
POS54-C. Detect and handle POSIX library errors
Page:
DCL23-C. Guarantee that mutually visible identifiers are unique
Page:
CON40-C. Do not refer to an atomic variable twice in an expression
Page:
STR09-C. Don't assume numeric values for expressions with type plain character
Page:
CON37-C. Do not call signal() in a multithreaded program
Page:
EXP16-C. Do not compare function pointers to constant values
Page:
MSC38-C. Do not treat a predefined identifier as an object if it might only be implemented as a macro
Page:
PRE31-C. Avoid side effects in arguments to unsafe macros
Page:
STR34-C. Cast characters to unsigned char before converting to larger integer sizes
Page:
STR10-C. Do not concatenate different type of string literals
Page:
STR05-C. Use pointers to const when referring to string literals
Page:
POS47-C. Do not use threads that can be canceled asynchronously
Page:
DCL13-C. Declare function parameters that are pointers to values not changed by the function as const
Page:
DCL36-C. Do not declare an identifier with conflicting linkage classifications
Page:
SIG31-C. Do not access shared objects in signal handlers
Page:
MEM02-C. Immediately cast the result of a memory allocation function call into a pointer to the allocated type
Page:
EXP30-C. Do not depend on the order of evaluation for side effects
Page:
FIO41-C. Do not call getc(), putc(), getwc(), or putwc() with a stream argument that has side effects
Page:
FLP30-C. Do not use floating-point variables as loop counters
Page:
MEM35-C. Allocate sufficient memory for an object
Page:
INT12-C. Do not make assumptions about the type of a plain int bit-field when used in an expression
Page:
EXP43-C. Avoid undefined behavior when using restrict-qualified pointers
Page:
PRE06-C. Enclose header files in an include guard
Page:
ARR37-C. Do not add or subtract an integer to a pointer to a non-array object
Page:
EXP15-C. Do not place a semicolon on the same line as an if, for, or while statement
Page:
EXP19-C. Use braces for the body of an if, for, or while statement
Page:
FLP32-C. Prevent or detect domain and range errors in math functions
Page:
PRE07-C. Avoid using repeated question marks
Page:
EXP09-C. Use sizeof to determine the size of a type or variable
Page:
PRE01-C. Use parentheses within macros around parameter names
Page:
ARR36-C. Do not subtract or compare two pointers that do not refer to the same array
Page:
MSC07-C. Detect and remove dead code
Page:
DCL19-C. Minimize the scope of variables and functions
Page:
ERR32-C. Do not rely on indeterminate values of errno
Page:
FIO38-C. Do not copy a FILE object
Page:
ARR01-C. Do not apply the sizeof operator to a pointer when taking the size of an array
Page:
DCL41-C. Do not declare variables inside a switch statement before the first case label
Page:
EXP05-C. Do not cast away a const qualification
Page:
INT09-C. Ensure enumeration constants map to unique values
Page:
FLP37-C. Do not use object representations to compare floating-point values
Page:
DCL39-C. Avoid information leakage when passing a structure across a trust boundary
Page:
EXP40-C. Do not modify constant objects
Page:
EXP02-C. Be aware of the short-circuit behavior of the logical AND and OR operators
Page:
PRE12-C. Do not define unsafe macros
Page:
INT07-C. Use only explicitly signed or unsigned char type for numeric values
Page:
DCL40-C. Do not create incompatible declarations of the same function or object
Page:
ERR33-C. Detect and handle standard library errors
Page:
MEM34-C. Only free memory allocated dynamically
Page:
MSC04-C. Use comments consistently and in a readable fashion
Page:
WIN01-C. Do not forcibly terminate execution
Page:
PRE30-C. Do not create a universal character name through concatenation
Page:
EXP12-C. Do not ignore values returned by functions
Page:
DCL07-C. Include the appropriate type information in function declarators
Page:
INT16-C. Do not make assumptions about representation of signed integers
Page:
PRE00-C. Prefer inline or static functions to function-like macros
Page:
INT34-C. Do not shift an expression by a negative number of bits or by greater than or equal to the number of bits that exist in the operand
Page:
ENV33-C. Do not call system()
Page:
MSC37-C. Ensure that control never reaches the end of a non-void function
Page:
FIO34-C. Distinguish between characters read from a file and EOF or WEOF
Page:
ENV32-C. All exit handlers must return normally
Page:
EXP44-C. Do not rely on side effects in operands to sizeof, _Alignof, or _Generic
Page:
INT13-C. Use bitwise operators only on unsigned operands
Page:
EXP45-C. Do not perform assignments in selection statements
Page:
API04-C. Provide a consistent and usable error-checking mechanism
Page:
PRE11-C. Do not conclude macro definitions with a semicolon
Page:
DCL01-C. Do not reuse variable names in subscopes
Page:
INT31-C. Ensure that integer conversions do not result in lost or misinterpreted data
Page:
PRE32-C. Do not use preprocessor directives in invocations of function-like macros
Page:
DCL37-C. Do not declare or define a reserved identifier
Page:
SIG34-C. Do not call signal() from within interruptible signal handlers
Page:
DCL20-C. Explicitly specify void when a function accepts no arguments
Page:
MSC40-C. Do not violate constraints
Page:
DCL05-C. Use typedefs of non-pointer types only
Page:
MSC24-C. Do not use deprecated or obsolescent functions
Page:
MSC30-C. Do not use the rand() function for generating pseudorandom numbers
Page:
DCL00-C. Const-qualify immutable objects
Page:
STR04-C. Use plain char for characters in the basic character set
Page:
DCL15-C. Declare file-scope objects or functions that do not need external linkage as static
Page:
MSC12-C. Detect and remove code that has no effect or is never executed
Page:
ARR02-C. Explicitly specify array bounds, even if implicitly defined by an initializer
Page:
STR38-C. Do not confuse narrow and wide character strings and functions
Page:
STR37-C. Arguments to character-handling functions must be representable as an unsigned char
Page:
EXP42-C. Do not compare padding data
Page:
MSC09-C. Character encoding: Use subset of ASCII for safety
Page:
SIG30-C. Call only asynchronous-safe functions within signal handlers
Page:
ARR39-C. Do not add or subtract a scaled integer to a pointer
Page:
FLP02-C. Avoid using floating-point numbers when precise computation is needed
Page:
ENV30-C. Do not modify the object referenced by the return value of certain functions
Page:
MSC01-C. Strive for logical completeness
Page:
MSC20-C. Do not use a switch statement to transfer control into a complex block
Page:
ERR07-C. Prefer functions that support error checking over equivalent functions that don't
Page:
EXP37-C. Call functions with the correct number and type of arguments
Page:
MSC17-C. Finish every set of statements associated with a case label with a break statement
Page:
DCL16-C. Use "L," not "l," to indicate a long value
Page:
DCL31-C. Declare identifiers before using them
Page:
DCL30-C. Declare objects with appropriate storage durations
Page:
STR00-C. Represent characters using an appropriate type
Hierarchy
Parent Page
Page:
EE. Analyzers
Labels
Global Labels (1)
analyzer
Recent Changes
Time
Editor
Sep 27, 2023 08:26
David Svoboda
View Changes
Jul 13, 2023 13:28
David Svoboda
View Changes
Jun 06, 2023 12:24
David Svoboda
View Changes
Apr 19, 2023 14:01
David Svoboda
View Changes
Apr 06, 2023 07:59
David Svoboda
View Page History
Outgoing Links
External Links (102)
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
https://wiki.sei.cmu.edu/confluence/pages/viewpage.action?p…
SEI CERT C Coding Standard (1)
Page:
RuleChecker_V
Overview
Content Tools
{"serverDuration": 176, "requestCorrelationId": "fe14736ca8aeb405"}