Cのスキャンルール
Contrast Scanでは、Cに対して以下のルールをサポートしています。
深刻度 | エンジンルールID | Contrastルール | 説明 |
---|---|---|---|
重大 | OPT.C.AvoidCompDiffTypes | Avoid Comp Diff Types | AvoidCompDiffTypes:基本型が異なる変数の比較禁止 |
重大 | OPT.C.CERTC.ARR38 | Adding or subtracting an integer to a pointer if resulting value does not refer to a valid array element | ARR38:結果の値が有効な配列要素を参照していない場合の配列ポインタの加算または減算の禁止 |
重大 | OPT.C.CERTC.EXP34 | NULL Pointer Dereference | EXP34:NULLポインタの参照禁止 |
重大 | OPT.C.CERTC.MEM30 | Do not access freed memory | MEM30:解放されたメモリにアクセスしない(解放後の使用) |
重大 | OPT.C.CERTC.MEM34 | Freeing Memory not on the Heap | MEM34:ヒープ上にないメモリの解放の禁止 |
重大 | OPT.C.CERTC.PRE09 | Do not replace secure functions with less secure functions | PRE09:関数のセキュアの低い関数への置き換え禁止 |
重大 | OPT.C.CERTC.SIG30 | Signal Handler Use of a Non-reentrant Function | SIG30:シグナルハンドラでの再入可能でない関数の使用 |
重大 | OPT.C.CERTC.SIG32 | Signal Handler Use of a Non-reentrant Function | SIG32:シグナルハンドラでの再入可能でない関数の使用 |
重大 | OPT.C.CERTC.STR31 | Guarantee that storage for strings has sufficient space | STR31:文字列用の保存領域に文字データとnull終端文字の十分なスペースの確保 |
重大 | OPT.C.CERTC.STR33 | Size wide character strings correctly | STR33:ワイド文字の文字列のサイズを正しく指定 |
重大 | OPT.C.CERTC.STR35 | Do not copy data from an unbounded source to a fixed-length array | STR35:長さに制限のないデータの固定長配列へのコピーの禁止 |
重大 | OPT.C.CheckReturnInPublicFunctions | Check Return In Public Functions | CheckReturnInPublicFunctions:関数はローカル変数のポインタや参照の返却の禁止 |
重大 | OPT.C.MISRAC.NumberArgsInCallsMustMatchFormalParams | Number Args In Calls Must Match Formal Params | NumberArgsInCallsMustMatchFormalParams:MISRA 16.6:関数に渡される仮引数と実際のパラメーターの数の一致が必要 |
重大 | OPT.C.SEC.AnonymousLdapBind | Anonymous Ldap Bind | AnonymousLdapBind:アクセス制御 - 匿名LDAPバインドの検出 |
重大 | OPT.C.SEC.PathTraversal | Path Traversal | PathTraversal:リソースへのパス名で構成される、無害化されていないユーザ制御の入力の回避 |
重大 | OPT.C.SEC.StaticDatabaseConnection | Static Database Connection | StaticDatabaseConnection:静的なデータベース接続/セッション |
重大 | OPT.C.SEC.UnsafeChroot | Unsafe Chroot | UnsafeChroot:安全でないchrootの呼び出し |
重大 | OPT.C.CERTC.FIO30 | Exclude unsanitized input | FIO30:サニタイズされていないユーザー入力をフォーマット文字列から除外 |
重大 | OPT.C.CERTC.STR02 | Sanitize data passed to sensitive subsystems | STR02:機密性の高いサブシステムに渡されるデータのサニタイズ |
重大 | OPT.C.SEC.ConnectionStringParameterPollution | Connection String Parameter Pollution | ConnectionStringParameterPollution::信頼できない入力で汚染された接続文字列 |
重大 | OPT.C.SEC.DoSRegexp | DoS Regexp | DoSRegexp:悪意のある正規表現によるDos攻撃の防止(正規表現インジェクション) |
重大 | OPT.C.SEC.LdapInjection | Ldap Injection | LdapInjection:LDAP検索フィルタにおける無害化されていないユーザ制御入力の回避 |
重大 | OPT.C.SEC.NoSQLInjection | No SQL Injection | NoSQLInjection:データクエリロジックにおける特殊要素の不適切な無害化(NoSQLインジェクション) |
重大 | OPT.C.SEC.ProcessControl | Process Control | ProcessControl::信頼できないソースからの実行可能ファイルまたはライブラリのロードの禁止 |
重大 | OPT.C.SEC.SqlInjection | SQL Injection | SqlInjection:SQLコマンドで使用する特殊要素の不適切な無害化(SQLインジェクション) |
重大 | OPT.C.SEC.XmlEntityInjection | Xml Entity Injection | XmlEntityInjection:XMLエンティティインジェクション |
重大 | OPT.C.SEC.HardcodedCryptoKey | Hardcoded Crypto Key | HardcodedCryptoKey:ハードコードされた暗号鍵 |
高 | OPT.C.AvoidSignalManagmentFunctions | Avoid Signal Managment Functions | AvoidSignalManagmentFunctions:シグナル管理関数の使用の回避 |
高 | OPT.C.AvoidStructures | Avoid Structures | AvoidStructures: 特定の種類の集約オブジェクト(struct、union、VARIANT)の使用の回避 |
高 | OPT.C.CERTC.ARR01 | Do not apply the sizeof operator to a pointer when taking the size of an array | ARR01:配列のサイズを取得する際のポインタに対するsizeof演算子の使用禁止 |
高 | OPT.C.CERTC.ARR33 | Guarantee that copies are made into storage of sufficient size | ARR33:コピーが十分なサイズのストレージに作成されることの保証 |
高 | OPT.C.CERTC.ENV01 | Assumptions about the size of an environment variable | ENV01:環境変数のサイズを仮定することは禁止 |
高 | OPT.C.CERTC.ENV32 | Terminating Atexit handler by returning | ENV32:「atexit」で登録したハンドラ関数は必ず「return」が必要 |
高 | OPT.C.CERTC.EXP01 | Use of sizeof() on a Pointer Type | EXP01:ポインタ型での「sizeof()」の使用の禁止 |
高 | OPT.C.CERTC.EXP33 | Use of Uninitialized Variable | EXP33:初期化されていない変数の読み取りの禁止 |
高 | OPT.C.CERTC.FIO01 | Functions using file names for identification | FIO01:ファイル名を識別に使用する関数の使用に注意 |
高 | OPT.C.CERTC.FIO36 | Do not assume a new-line character is read when using fgets() | FIO36:「fgets()」の使用時に改行文字が読み込まれたと仮定することは禁止 |
高 | OPT.C.CERTC.FIO37 | Do not assume character data has been read | FIO37:文字データの読み取り成功時に空でない文字列を返すという想定の禁止 |
高 | OPT.C.CERTC.INT34 | Check number of bits in shift operations | INT34:負のビット数または左オペランドに存在するビット数より多いビットのシフト演算の禁止 |
高 | OPT.C.CERTC.MEM00 | Allocate and free memory in the same module | MEM00:メモリの割り当てと解放は、同じ翻訳単位内の同一抽象レベルで行うことが必要 |
高 | OPT.C.CERTC.MEM31 | Only Free allocated memory once | MEM31:動的に割り当てられたメモリの解放は一度だけに限る(解放の重複) |
高 | OPT.C.CERTC.MEM32 | Detect and handle memory allocation errors | MEM32:メモリ割り当て時のエラーの検出と処理が必要 |
高 | OPT.C.CERTC.POS35 | Race condition with link following | POS35:シンボリックリンクの存在をチェックする際の競合状態の回避 |
高 | OPT.C.CERTC.POS36 | Observe correct revocation order while relinquishing privileges | POS36:権限を廃棄する場合は正しい失効順序が必要 |
高 | OPT.C.CERTC.POS37 | Improper Check for Dropped Privileges | POS37:権限の破棄での結果の確認 |
高 | OPT.C.CERTC.PRE02 | Macro replacement lists should be parenthesized | PRE02:マクロ置換リストは括弧で囲む事が必要 |
高 | OPT.C.CERTC.SIG02 | Avoid using signals to implement normal functionality | SIG02:標準的な機能を実装する際はシグナルの使用の回避 |
高 | OPT.C.CERTC.STR06 | Ensure strtok() leaves the parse string unchanged | STR06:「strtok()」が分割対象文字列を変更しないと想定することの禁止 |
高 | OPT.C.CERTC.STR07 | Use TR 24731 for remediation of existing string manipulation | STR07:既存の文字列操作コードの修正に「ISO/IEC TR 24731」関数の使用 |
高 | OPT.C.CERTC.STR32 | Null-terminate byte strings as required | STR32:必要に応じた文字列のNull終端が必要 |
高 | OPT.C.CERTC.STR36 | Do not specify the bound of a character array initialized with a string literal | STR36:文字列リテラルで初期化された文字配列の変更の禁止 |
高 | OPT.C.CorrectUseMemoryLeaks | Correct Use Memory Leaks | CorrectUseMemoryLeaks:割り当てられたメモリは同じスコープ内で解放が必要 |
高 | OPT.C.DontUseMemoryFunction | Dont Use Memory Function | DontUseMemoryFunction:malloc、calloc、realloc、freeの使用禁止 |
高 | OPT.C.GlobalVarNotUsedLocally | Global Var Not Used Locally | GlobalVarNotUsedLocally:ローカルで使用されていないグローバル変数 |
高 | OPT.C.ImplicitTypeConversion | Implicit Type Conversion | ImplicitTypeConversion:暗黙の型変換を引き起こす関数呼び出しの回避 |
高 | OPT.C.LocalVarsWithGlobalNames | Local Vars With Global Names | LocalVarsWithGlobalNames:グローバル変数とローカル変数における同じ名前の回避 |
高 | OPT.C.MISRAC.AvoidFileScopeWhenAccessedFromSingleFunction | Avoid File Scope When Accessed From Single Function | AvoidFileScopeWhenAccessedFromSingleFunction:MISRA 8.7:オブジェクトが単一の関数からのみアクセスされる場合、ブロックスコープで定義することが必要 |
高 | OPT.C.MISRAC.AvoidRecursiveFunctions | Avoid Recursive Functions | AvoidRecursiveFunctions:MISRA 16.2:関数は直接的にも間接的にも自分自身の呼び出しを禁止 |
高 | OPT.C.MISRAC.DoNotCheckFloatEqualNotEqual | Do Not Check Float Equal Not Equal | DoNotCheckFloatEqualNotEqual:MISRA 13.3:浮動小数点型は等号または不等号での判定は禁止 |
高 | OPT.C.MISRAC.DoNotUseDynamicHeapAllocation | Do Not Use Dynamic Heap Allocation | DoNotUseDynamicHeapAllocation:MISRA 20.4:動的ヒープ割り当ての使用禁止 |
高 | OPT.C.MISRAC.DoNotUseReservedNameAsIdentifier | Do Not Use Reserved Name As Identifier | DoNotUseReservedNameAsIdentifier:MISRA 20.2:標準ライブラリのマクロ、オブジェクト、関数の名前の再利用は禁止 |
高 | OPT.C.MISRAC.DoNotUseReservedNameAsMacroName | Do Not Use Reserved Name As Macro Name | DoNotUseReservedNameAsMacroName:MISRA 20.1:標準ライブラリの予約済み識別子、マクロ、関数の定義、再定義、未定義は禁止 |
高 | OPT.C.MISRAC.DoNotUseSetjmpLongjmp | Do Not Use Setjmp Longjmp | DoNotUseSetjmpLongjmp:MISRA 20.7:「setjmp」マクロおよび 「longjmp」関数の使用禁止 |
高 | OPT.C.MISRAC.DoNotUseSignalHandlingFunctions | Do Not Use Signal Handling Functions | DoNotUseSignalHandlingFunctions:MISRA 20.8:「signal.h」のシグナル処理機能の使用禁止 |
高 | OPT.C.MISRAC.DoNotUseStdioFunctions | Do Not Use Stdio Functions | DoNotUseStdioFunctions:MISRA 20.9:入出力ライブラリ「stdio.h」を本番環境のコードでの使用禁止 |
高 | OPT.C.MISRAC.DoNotUseTimeFunctions | Do Not Use Time Functions | DoNotUseTimeFunctions:MISRA 20.12:ライブラリ「time.h」の時間処理関数の使用禁止 |
高 | OPT.C.MISRAC.EncloseInParanthesesMacroArgs | Enclose In Parantheses Macro Args | EncloseInParanthesesMac:MISRA 19.10:関数のようなマクロの定義では各パラメータを括弧で囲むことが必要 |
高 | OPT.C.MISRAC.ExplicitTypeForVarsFunctions | Explicit Type For Vars Functions | ExplicitTypeForVarsFunctions:MISRA 8.2:オブジェクトまたは関数の宣言または定義には、常にその型の明示が必要 |
高 | OPT.C.MISRAC.FunctionMacroInvokedWithAllArguments | Function Macro Invoked With All Arguments | FunctionMacroInvokedWithAllArguments:MISRA 19.8:関数のようなマクロの呼び出しには、すべての引数が必要 |
高 | OPT.C.MISRAC.IdentifiersMustNotExceed31Chars | Identifiers Must Not Exceed31 Chars | IdentifiersMustNotExceed31Chars:MISRA 5.1:識別子(内部および外部)は31文字を超えてはならない |
高 | OPT.C.MISRAC.InitialiseAutoVariablesBeforeUse | Initialise Auto Variables Before Use | InitialiseAutoVariablesBeforeUse:MISRA 9.1:すべてのauto変数は使用する前に値を割り当てる必要 |
高 | OPT.C.MISRAC.InitializationForArrayStructsMustMatchLayout | Initialization For Array Structs Must Match Layout | InitializationForArrayStructsMustMatchLayout:MISRA 9.2:中括弧により配列と構造体のゼロでない初期化および構造の一致が必要 |
高 | OPT.C.MISRAC.ProperBitFieldStruct | Proper Bit Field Struct | ProperBitFieldStruct:MISRA 3.5:構造体内のビットフィールドはint型を使用し、非ビットフィールドとの混在は禁止 |
高 | OPT.C.MISRAC.SingleDefinitionForExternalLinkageIdentifiers | Single Definition For External Linkage Identifiers | SingleDefinitionForExternalLinkageIdentifiers:MISRA 8.9:外部リンクを持つ識別子は正しい一つの定義が必要 |
高 | OPT.C.MultipleInclusionPreventionGuard | Multiple Inclusion Prevention Guard | MultipleInclusionPreventionGuard:ヘッダでの重複したインクルードの保護 |
高 | OPT.C.NoSpecifyUnixNamesInInclude | No Specify Unix Names In Include | NoSpecifyUnixNamesInInclude:「#include」ディレクティブでの絶対パスの禁止 |
高 | OPT.C.NonGotoStatement | Non Goto Statement | NonGotoStatement:goto文の使用禁止 |
高 | OPT.C.RemoveUnusedMethods | Remove Unused Methods | RemoveUnusedMethods:未使用の関数の削除 |
高 | OPT.C.UnspecifiedParameters | Unspecified Parameters | UnspecifiedParameters: 関数での可変引数(可変数のパラメータ)の回避 |
高 | OPT.C.PORT.HardcodedAbsolutePath | Hardcoded Absolute Path | HardcodedAbsolutePath:絶対パスのハードコード禁止 |
高 | OPT.C.CERTC.ENV04 | Calling system() if you do not need a command processor | ENV04:コマンドプロセッサが不要な場合は「system()」の使用禁止 |
高 | OPT.C.CERTC.FIO34 | Use int to capture the return value of character I/O functions | FIO34:文字I/O関数の戻り値の判定には「int」の使用 |
高 | OPT.C.CERTC.FIO43 | Temporary File created with Incorrect Permissions | FIO43:不正なアクセス権限のディレクトリでの一時ファイルの作成 |
高 | OPT.C.MISRAC.AvoidVarargFunctions | Avoid Vararg Functions | AvoidVarargFunctions:MISRA 16.1:引数の数が可変の関数の定義の禁止 |
高 | OPT.C.SEC.ResourceInjection | Resource Injection | ResourceInjection:リソース識別子の不適切な制御(リソースインジェクション) |
高 | OPT.C.SEC.HardcodedSalt | Hardcoded Salt | HardcodedSalt:ハードコードされたソルトの使用 |
高 | OPT.C.SEC.InsufficientKeySize | Insufficient Key Size | InsufficientKeySize:脆弱な暗号方式・鍵長の検出 |
高 | OPT.C.SEC.WeakCryptographicHash | Weak Cryptographic Hash | WeakCryptographicHash:脆弱な暗号化ハッシュ |
高 | OPT.C.SEC.WeakEncryption | Weak Encryption | WeakEncryption:脆弱な共通鍵暗号アルゴリズム |
情報 | OPT.C.AvoidBracesSameLine | Avoid Braces Same Line | AvoidBracesSameLine:中括弧「{}」は別の行に記述 |
情報 | OPT.C.AvoidNumericValues | Avoid Numeric Values | AvoidNumericValues:コード内の数値定数の回避 |
情報 | OPT.C.AvoidQuestionMark | Avoid Question Mark | AvoidQuestionMark::「?:」(三項演算子)の使用の回避 |
情報 | OPT.C.BreakInLoops | Break In Loops | BreakInLoops:ループ内でのbreak文の使用回避 |
情報 | OPT.C.ClassNamingConvention | Class Naming Convention | ClassNamingConvention:struct、union、class、namespaceの名前は命名規則に従うことが必要 |
情報 | OPT.C.ConstantNamingConvention | Constant Naming Convention | ConstantNamingConvention:グローバル定数の命名規則 |
情報 | OPT.C.DataMemberNamingConvention | Data Member Naming Convention | DataMemberNamingConvention:データメンバーの命名規則 |
情報 | OPT.C.ForbiddenFunctions | Forbidden Functions | ForbiddenFunctions:推奨されない関数の使用の回避 |
情報 | OPT.C.MISRAC.AtMostOneBreakInLoop | At Most One Break In Loop | AtMostOneBreakInLoop:MISRA 14.6:すべての反復文にはループの終了に使用されるbreak文は1つ以内 |
情報 | OPT.C.MISRAC.AvoidTrigraphs | Avoid Trigraphs | AvoidTrigraphs:MISRA 4.2:3文字表記の使用禁止 |
情報 | OPT.C.MISRAC.DoNotCommentOutSourceCode | Do Not Comment Out Source Code | DoNotCommentOutSourceCode:MISRA 2.4:コードの一部のコメントアウトの禁止 |
情報 | OPT.C.MISRAC.ExplicitCheckAgainstZero | Explicit Check Against Zero | ExplicitCheckAgainstZero:MISRA 13.2:オペランドが実質的にブール値でない限り、ゼロに対する値の明示的な判定が必要 |
情報 | OPT.C.MISRAC.IncludeNotAfterStatements | Include Not After Statements | IncludeNotAfterStatements:MISRA 19.1:「#include」ディレクティブは、他のプリプロセッサディレクティブやコメントによってのみファイル内で先行することが必要 |
情報 | OPT.C.MacrosNamingConvention | Macros Naming Convention | MacrosNamingConvention:マクロの命名規則 |
情報 | OPT.C.MaximunLineSize | Maximun Line Size | MaximunLineSize:MaxLineSize:長すぎるコード行の禁止 |
情報 | OPT.C.MethodNamingConvention | Method Naming Convention | MethodNamingConvention:関数、クラスメソッドの命名規則 |
情報 | OPT.C.MethodsCommentCodeRatio | Methods Comment Code Ratio | MethodsCommentCodeRatio:コメント行の比率が低い関数の回避 |
情報 | OPT.C.ParenthesizedFunctions | Parenthesized Functions | ParenthesizedFunctions: 「sizeof」は括弧を付けて「return」に記述 |
情報 | OPT.C.SpaceIndentation | Space Indentation | SpaceIndentation:演算子の前後はスペースを入れる |
情報 | OPT.C.TypedefNamingConvention | Typedef Naming Convention | TypedefNamingConvention:「typedef」で宣言された型の名前は命名規則に従うことが必要 |
情報 | OPT.C.UseBlocks | Use Blocks | UseBlocks:条件文や反復文はブロックで使う |
低 | OPT.C.AvoidManyParametersFunction | Avoid Many Parameters Function | AvoidManyParametersFunction:パラメータが多すぎる関数の回避 |
低 | OPT.C.AvoidOneCaseSwitch | Avoid One Case Switch | AvoidOneCaseSwitch:case句の数が少ないswitch文の回避 |
低 | OPT.C.CERTC.ARR31 | Use consistent array notation across all source files | ARR31:すべてのソースファイルで一貫した配列表記の使用 |
低 | OPT.C.CERTC.INT13 | Use bitwise operators only on unsigned operands | INT13:符号なしオペランドにのみビット演算子の使用 |
低 | OPT.C.CERTC.POS33 | Do not use vfork() | POS33:「vfork()」の使用禁止 |
低 | OPT.C.CERTC.PRE00 | Prefer inline or static functions to function-like macros | PRE00:関数形式のようなマクロよりもインライン関数やスタティック関数を優先 |
低 | OPT.C.CheckNamesDefinitionAndDeclaration | Check Names Definition And Declaration | CheckNamesDefinitionAndDeclaration:関数定義と宣言における正式なパラメータ名の使用 |
低 | OPT.C.ClassCommentCodeRatio | Class Comment Code Ratio | ClassCommentCodeRatio:コメントに対するコードの比率が低いクラス、構造体、ユニオンの回避 |
低 | OPT.C.DontComparePointerToNull | Dont Compare Pointer To Null | DontComparePointerToNull:ポインタとNULLの比較禁止 |
低 | OPT.C.DontComparePointerToZero | Dont Compare Pointer To Zero | DontComparePointerToZero:ポインタとゼロの比較禁止 |
低 | OPT.C.IncludingHeaderFile | Including Header File | IncludingHeaderFile:同じ名前のヘッダーファイルを含まない実装の回避 |
低 | OPT.C.InitializationInsteadAssignment | Initialization Instead Assignment | InitializationInsteadAssignment:常に代入の代わりに初期化の使用 |
低 | OPT.C.MISRAC.AvoidSingleLineComments | Avoid Single Line Comments | AvoidSingleLineComments:MISRA 2.2:C99/C++に単一行のコメント「//...」は使用禁止 |
低 | OPT.C.MISRAC.AvoidUnreachableCode | Avoid Unreachable Code | AvoidUnreachableCode:MISRA 14.1:到達不能コードの存在禁止 |
低 | OPT.C.MISRAC.CaseWithBreak | Case With Break | CaseWithBreak:MISRA 15.2:switchブロックの空でないすべてのcase句は無条件のbreak文が必要 |
低 | OPT.C.MISRAC.CommentShouldNotContainOpenCommentChars | Comment Should Not Contain Open Comment Chars | CommentShouldNotContainOpenCommentChars:MISRA 2.3:コメントには文字列「/*」が含むことは禁止 |
低 | OPT.C.MISRAC.DeclareConstPointerParamIfUnchangedValue | Declare Const Pointer Param If Unchanged Value | DeclareConstPointerParamIfUnchangedValue:MISRA 16.7:関数内の参照パラメータはアドレス指定のオブジェクトを変更するための使用でなければ、「const」として宣言が必要 |
低 | OPT.C.MISRAC.DoNotDefUndefMacrosInBlocks | Do Not Def Undef Macros In Blocks | DoNotDefUndefMacrosInBlock:MISRA 19.5:ブロック内でマクロの定義は禁止 |
低 | OPT.C.MISRAC.DoNotUseAtofAtoiAtol | Do Not Use Atof Atoi Atol | DoNotUseAtofAtoiAtol:MISRA 20.10:「stdlib.h」のライブラリ関数 atof、atoi、atolの使用禁止 |
低 | OPT.C.MISRAC.ExplicitSizeInExternArrays | Explicit Size In Extern Arrays | ExplicitSizeInExternArrays:MISRA 8.12:配列が外部リンクで宣言される場合、そのサイズは明示的に記述されるか初期化によって暗黙的に定義が必要 |
低 | OPT.C.MISRAC.FunctionPointerCasts | Function Pointer Casts | FunctionPointerCasts:MISRA 11.1:関数へのポインタと整数型以外の型との間での変換は禁止 |
低 | OPT.C.MISRAC.IfElseIfMustEndWithElse | If Else If Must End With Else | IfElseIfMustEndWithElse:MISRA 14.10:すべての「if...else if」構文はelse句での終了が必要 |
低 | OPT.C.MISRAC.IfElseStatementsMustUseBraces | If Else Statements Must Use Braces | IfElseStatementsMustUseBraces:MISRA 14.9:「if-else」ステートメントでは中括弧の使用が必要 |
低 | OPT.C.MISRAC.LogicalExpressionWithPrimaryExpressionOperands | Logical Expression With Primary Expression Operands | LogicalExpressionWithPrimaryExpressionOperands:MISRA 12.5:論理「&&」または「||」のオペランドは一次式であることが必要 |
低 | OPT.C.MISRAC.LoopsShouldUseBraces | Loops Should Use Braces | LoopsShouldUseBraces:MISRA 14.8:ループは中括弧で本体を区切ることが必要 |
低 | OPT.C.MISRAC.MaxTwoPointerIndirections | Max Two Pointer Indirections | MaxTwoPointerIndirections:MISRA 17.5:オブジェクトの宣言でポインタ参照は2レベル以下であることが必要 |
低 | OPT.C.MISRAC.NoPointerArithmeticExceptArrayIndex | No Pointer Arithmetic Except Array Index | NoPointerArithmeticExceptArrayIndex:MISRA 17.4:配列のインデックス作成はポインタ演算の唯一の許可された形式であることが必要 |
低 | OPT.C.MISRAC.NoSideEffectsInRightOperandOfLogicalOp | No Side Effects In Right Operand Of Logical Op | NoSideEffectsInRightOperandOfLogicalOp:MISRA 12.4:論理演算子「&&」または「||」の右辺に副作用を含む式は禁止 |
低 | OPT.C.MISRAC.SwitchMustHaveBraces | Switch Must Have Braces | SwitchMustHaveBraces:MISRA 14.8:Switch文は中括弧の使用が必要 |
低 | OPT.C.MISRAC.UseStaticForInternalLinkageIdentifiers | Use Static For Internal Linkage Identifiers | UseStaticForInternalLinkageIdentifiers:MISRA 8.11:内部リンケージを持つオブジェクトと関数の定義/宣言には静的なストレージ指定が必要 |
低 | OPT.C.OneStatementPerLine | One Statement Per Line | OneStatementPerLine:1行には1つのステートメント |
低 | OPT.C.OnlyOneReturn | Only One Return | OnlyOneReturn:1つの関数にreturn文は1つ |
低 | OPT.C.SpecifyReturnType | Specify Return Type | SpecifyReturnType:関数の戻り値の型は明示的な指定が必要 |
低 | OPT.C.VariablesNeverUsed | Variables Never Used | VariablesNeverUsed:使用されないローカル変数 |
中 | OPT.C.AvoidGlobalVars | Avoid Global Vars | AvoidGlobalVars:グローバル変数の使用回避 |
中 | OPT.C.AvoidLargeMethods | Avoid Large Methods | AvoidLargeMethods:コード行数が多すぎる関数やメソッドの回避 |
中 | OPT.C.AvoidVolatileVars | Avoid Volatile Vars | AvoidVolatileVars:volatile変数の使用禁止 |
中 | OPT.C.CERTC.ARR30 | Do not form or use out-of-bounds pointers or array subscripts on arrays | ARR30:配列の境界外へのポインタや配列添字の作成や使用の禁止 |
中 | OPT.C.CERTC.ARR35 | Allowing loops to iterate beyond the end of an array | ARR35:ループ処理で配列の終端を超えた反復の禁止 |
中 | OPT.C.CERTC.ARR35_bis | Allowing loops to iterate beyond the end of an array | ARR35:ループ処理で配列の終端を超えた反復の禁止 |
中 | OPT.C.CERTC.FIO33 | Detect and handle input/output errors | FIO33:未定義の入出力エラーの検出と処理 |
中 | OPT.C.CERTC.INT35 | Evaluate integer expressions | INT35:整数式はより大きい精度で評価した後に、それと同じ精度との比較または代入が必要 |
中 | OPT.C.CERTC.MEM08 | Use realloc() to resize dynamically allocated arrays | MEM08:「realloc()」は動的に割り当てられた配列のサイズ変更にのみ使用 |
中 | OPT.C.CERTC.MEM35 | Incorrect Calculation of Buffer Size | MEM35:バッファサイズの間違った計算 |
中 | OPT.C.CERTC.POS30 | Use the readlink() function properly | POS30:「readlink()」の関数の適切な使用 |
中 | OPT.C.CERTC.PRE01 | Use parentheses within macros around parameter names | PRE01:マクロ内の引数名は括弧で囲む |
中 | OPT.C.CERTC.PRE10 | Wrap multistatement macros in a do-while loop | PRE10:複数の文からなるマクロは「do-while」のループで包む |
中 | OPT.C.DontConvertConstToNonConst | Dont Convert Const To Non Const | DontConvertConstToNonConst:「const」の「non-const」への変換は禁止 |
中 | OPT.C.IncludeHeadersOnly | Include Headers Only | IncludeHeadersOnly:ヘッダファイルでないファイルの「#include」での使用の回避 |
中 | OPT.C.MISRAC.AllMacroIdentifiersDefinedBeforeUse | All Macro Identifiers Defined Before Use | AllMacroIdentifiersDefinedBeforeUse:MISRA 19.11:プリプロセッサ指示文中のマクロ識別子は「#ifdef」および「#ifndef」指示文と 「defined()」演算子を除いて使用前に定義が必要 |
中 | OPT.C.MISRAC.ArithmeticOnPointersToArray | Arithmetic On Pointers To Array | ArithmeticOnPointersToArray:MISRA 17.1:ポインタ演算は配列または配列要素のポインタにのみに適用 |
中 | OPT.C.MISRAC.AvoidAssignmentInBooleanExpressions | Avoid Assignment In Boolean Expressions | AvoidAssignmentInBooleanExpressions:MISRA 13.1:代入演算子は真偽値を返す式での使用は禁止 |
中 | OPT.C.MISRAC.AvoidCommaOperator | Avoid Comma Operator | AvoidCommaOperator:MISRA 12.10:コンマ演算子の使用は禁止 |
中 | OPT.C.MISRAC.AvoidContinueStatement | Avoid Continue Statement | AvoidContinueStatement:MISRA 14.5:Continue文の使用は禁止 |
中 | OPT.C.MISRAC.AvoidGotoStatement | Avoid Goto Statement | AvoidGotoStatement:MISRA 14.4:Goto文の使用は禁止 |
中 | OPT.C.MISRAC.AvoidNonNullStatementsWithoutEffect | Avoid Non Null Statements Without Effect | AvoidNonNullStatementsWithoutEffect:MISRA 14.2:空ではない行は、少なくとも 1 つの副作用もしくは制御フローを実行することが必要 |
中 | OPT.C.MISRAC.AvoidNonStandardCharsInHeaderFilenames | Avoid Non Standard Chars In Header Filenames | AvoidNonStandardCharsInHeaderFilenames:MISRA 19.2:「#include」ディレクティブのヘッダファイル名に非標準文字の使用禁止 |
中 | OPT.C.MISRAC.AvoidNonStandardEscapeSequences | Avoid Non Standard Escape Sequences | AvoidNonStandardEscapeSequences:MISRA 4.1:文字定数には、ISO C Standardで定義されているエスケープシーケンスのみ使用 |
中 | OPT.C.MISRAC.AvoidOctalConstants | Avoid Octal Constants | AvoidOctalConstants:MISRA 7.1:8進数の定数(0以外)およびエスケープシーケンスの使用禁止 |
中 | OPT.C.MISRAC.AvoidUndefDirective | Avoid Undef Directive | AvoidUndefDirective:MISRA 19.6:「#undef」の使用禁止 |
中 | OPT.C.MISRAC.AvoidUnnecessaryExternalLinkage | Avoid Unnecessary External Linkage | AvoidUnnecessaryExternalLinkage:MISRA 8.10:外部リンケージが必要でない限り、ファイルスコープ内のオブジェクトまたは関数のすべての宣言と定義は内部リンケージを持つことが必要 |
中 | OPT.C.MISRAC.ComparePointersWhenOnSameArray | Compare Pointers When On Same Array | ComparePointersWhenOnSameArray: MISRA 17.3: >、> [] {'MISRA-C': ['17.3']} |
中 | OPT.C.MISRAC.DeclareFunctionsAtFileScope | Declare Functions At File Scope | DeclareFunctionsAtFileScope:MISRA 8.6:関数はファイルスコープ内で宣言が必要 |
中 | OPT.C.MISRAC.DeclareNoParametersFunctionAsVoid | Declare No Parameters Function As Void | DeclareNoParametersFunctionAsVoid:MISRA 16.5:引数のない関数は引数に「void」を宣言することが必要 |
中 | OPT.C.MISRAC.DoNotMixIncDecOperatorsWithOtherOperators | Do Not Mix Inc Dec Operators With Other Operators | DoNotMixIncDecOperatorsWithOtherOperators:MISRA 12.13:インクリメント「++」およびデクリメント「--」演算子は、式の中で他の演算子との混在は禁止 |
中 | OPT.C.MISRAC.DoNotModifyLoopVariableInBody | Do Not Modify Loop Variable In Body | DoNotModifyLoopVariableInBody:MISRA 13.6:反復回数のためにforループ内で使用されている変数の更新は禁止 |
中 | OPT.C.MISRAC.DoNotUseAbortExitGetenvSystem | Do Not Use Abort Exit Getenv System | DoNotUseAbortExitGetenvSystem:MISRA 20.11:ライブラリ「stdlib.h」の「abort、exit、getenv、system」関数の使用禁止 |
中 | OPT.C.MISRAC.DoNotUseErrno | Do Not Use Errno | DoNotUseErrno:MISRA 20.5:エラーコード変数「errno」の使用禁止 |
中 | OPT.C.MISRAC.DoNotUseOffsetof | Do Not Use Offsetof | DoNotUseOffsetof:MISRA 20.6:「stddef.h」のマクロ「offsetof」の使用禁止 |
中 | OPT.C.MISRAC.DoNotUseUnderlyingBitRepOfFloat | Do Not Use Underlying Bit Rep Of Float | DoNotUseUnderlyingBitRepOfFloat:MISRA 12.12:浮動小数点の基になるビット表現の使用禁止 |
中 | OPT.C.MISRAC.DocumentPragmaDirectives | Document Pragma Directives | DocumentPragmaDirectives:MISRA 3.4:「#pragma」ディレクティブのすべての使用方法について説明文が必要 |
中 | OPT.C.MISRAC.EncapsulateAssembly | Encapsulate Assembly | EncapsulateAssembly:MISRA 2.1:アセンブリ言語はカプセル化し分離することが必要 |
中 | OPT.C.MISRAC.EvaluationOrderIndependence | Evaluation Order Independence | EvaluationOrderIndependence:MISRA 12.2:式の値は標準で許可されている評価の順序に関係なく同じになることが必要 |
中 | OPT.C.MISRAC.FloatImplicitConversions | Float Implicit Conversions | FloatImplicitConversions:MISRA 10.2:浮動小数点型の式の値は、暗黙のうちに異なる型に変換することは禁止 |
中 | OPT.C.MISRAC.ForControlExpressionWithFloatObjects | For Control Expression With Float Objects | ForControlExpressionWithFloatObjects:MISRA 13.4:for文の制御式には浮動小数点のオブジェクトの使用は禁止 |
中 | OPT.C.MISRAC.ForLoopExpressionsForLoopControl | For Loop Expressions For Loop Control | ForLoopExpressionsForLoopControl:MISRA 13.5:for文の3つの式は、ループ制御のみに使用 |
中 | OPT.C.MISRAC.FunctionsShouldHaveSingleReturnAtEnd | Functions Should Have Single Return At End | FunctionsShouldHaveSingleReturnAtEnd:MISRA 14.7:関数はその最後に1つだけの終了点を持つことが必要 |
中 | OPT.C.MISRAC.IdentifiersMustNotHideOuterDefinitions | Identifiers Must Not Hide Outer Definitions | IdentifiersMustNotHideOuterDefinitions:MISRA 5.2:内部スコープの識別子は同じ名前を再利用して外部スコープの識別子を隠すことは禁止 |
中 | OPT.C.MISRAC.IntegerImplicitConversions | Integer Implicit Conversions | IntegerImplicitConversions:MISRA 10.1:整数型の式の値は、暗黙のうちに異なる型に変換することは禁止 |
中 | OPT.C.MISRAC.MacroExpansionCheck | Macro Expansion Check | MacroExpansionCheck:MISRA 19.4:Cのマクロは安全な構文にのみ展開することが必要 |
中 | OPT.C.MISRAC.NameParametersInFunctionPrototypes | Name Parameters In Function Prototypes | NameParametersInFunctionPrototypes:MISRA 16.3:関数プロトタイプのすべてのパラメータに名前を付けることが必要 |
中 | OPT.C.MISRAC.ObjectPointerCasts | Object Pointer Casts | ObjectPointerCasts:MISRA 11.2:オブジェクトへのポインターと整数型以外の型、オブジェクト型への別のポインター、または「void」へのポインターとの間で変換の実行禁止 |
中 | OPT.C.MISRAC.ProperCastComplexFloatExpression | Proper Cast Complex Float Expression | ProperCastComplexFloatExpression:MISRA 10.4:浮動小数点型の複合式の値は、より狭いか同じサイズの浮動小数点型にのみキャストすることが必要 |
中 | OPT.C.MISRAC.ProperCastComplexIntegerExpression | Proper Cast Complex Integer Expression | ProperCastComplexIntegerExpression:MISRA 10.3:整数型の複雑な式の値は、式の基になる型よりも精度が低い同じ符号型の型にのみにキャストすることが必要 |
中 | OPT.C.MISRAC.SameFunctionDeclarationAndDefinition | Same Function Declaration And Definition | SameFunctionDeclarationAndDefinition:MISRA 8.3:各関数のパラメータについて、宣言と定義における型は同一でなければならず、戻り値の型も同一であることが必要 |
中 | OPT.C.MISRAC.SizeofExprWithSideEffects | Sizeof Expr With Side Effects | SizeofExprWithSideEffects:MISRA 12.3:「sizeof」演算子は、副作用を含む式では使用禁止 |
中 | OPT.C.MISRAC.SwitchWithDefault | Switch With Default | SwitchWithDefault:MISRA 15.3:default句のないswitch文の回避 |
中 | OPT.C.MISRAC.SwitchWithoutCaseShouldBeRefactored | Switch Without Case Should Be Refactored | SwitchWithoutCaseShouldBeRefactored:MISRA 15.5:case句のないswitch文は作り直すことが必要 |
中 | OPT.C.MISRAC.TagUniqueIdentifier | Tag Unique Identifier | TagUniqueIdentifier:MISRA 5.4:タグ名は一意な識別子であることが必要 |
中 | OPT.C.MISRAC.TypedefUniqueIdentifier | Typedef Unique Identifier | TypedefUniqueIdentifier:MISRA 5.3:「typedef」名は一意の識別子であることが必要 |
中 | OPT.C.MISRAC.UnsignedBitwiseOperands | Unsigned Bitwise Operands | UnsignedBitwiseOperands:MISRA 12.7:ビット演算子は、基になる型が符号付きであるオペランドには使用禁止 |
中 | OPT.C.PotentialInfiniteLoop | Potential Infinite Loop | PotentialInfiniteLoop:到達不可能な終了条件を持つルール(無限ループ) |
中 | OPT.C.RemoveUnusedParam | Remove Unused Param | RemoveUnusedParam:関数内の未使用のパラメータは削除 |
中 | OPT.C.PORT.ObsoleteFunction | Obsolete Function | ObsoleteFunction:非推奨または廃止された関数の使用禁止 |
中 | OPT.C.SEC.HardcodedUsernamePassword | Hardcoded Username Password | HardcodedUsernamePassword:ハードコードされた資格情報の使用 |
中 | OPT.C.SEC.InsecureRandomness | Insecure Randomness | InsecureRandomnes:安全でない標準的な擬似乱数生成器 |