ABAPのスキャンルール
Contrast Scanでは、ABAPに対して以下のルールをサポートしています。
深刻度 | Contrastルール | エンジンルールID | 説明 |
---|---|---|---|
中 | Access B Din Loop | OPT.ABAP.AMR.AccessBDinLoop | AccessBDinLoop:ループ内での大規模なデータベース操作の回避 |
高 | Alter Layout Dinamically | OPT.ABAP.AWD.AlterLayoutDinamically | AlterLayoutDinamically:WebDynproレイアウトは、wdDoModifyViewメソッドでのみ変更することが必要 |
高 | Assign I D Element | OPT.ABAP.AWD.AssignIDElement | AssignIDElement:Web Dynpro要素の属性は一意性が必要 |
情報 | Authority Checks | OPT.ABAP.SEC.AuthorityChecks | AuthorityChecks:承認チェック(参考) |
中 | Avoid Batch Input | OPT.ABAP.AMR.AvoidBatchInput | AvoidBatchInput:バッチ入力を使用してのトランザクションの呼び出し禁止 |
中 | Avoid Call No Def Module | OPT.ABAP.APBR.AvoidCallNoDefModule | AvoidCallNoDefModule:宣言されていないモジュールの呼び出し回避 |
高 | Avoid Client Specified | OPT.ABAP.ASR.AvoidClientSpecified | AvoidClientSpecified:CLIENT SPECIFIEDオプションの回避 |
低 | Avoid Commented Out Code | OPT.ABAP.MAINT.AvoidCommentedOutCode | AvoidCommentedOutCode:コメントアウトされたコードブロックの回避 |
中 | Avoid Complex Context | OPT.ABAP.AWD.AvoidComplexContext | AvoidComplexContext:Web Dynproコンテキストの過度なネスト |
中 | Avoid Controller With Code | OPT.ABAP.AWD.AvoidControllerWithCode | AvoidControllerWithCode:Web Dynproビューに大きすぎるコードが存在 |
高 | Avoid Database Hints | OPT.ABAP.PORTABILITY.AvoidDatabaseHints | AvoidDatabaseHints:SELECTでの%_HINTSの使用の回避 |
中 | Avoid Declare Vars In Mod | OPT.ABAP.AGR.AvoidDeclareVarsInMod | AvoidDeclareVarsInMod:ダイアログモジュール内での宣言の回避 |
中 | Avoid Duplicate Events | OPT.ABAP.AGR.AvoidDuplicateEvents | AvoidDuplicateEvents:同じイベントブロックの重複宣言の回避 |
情報 | Avoid Duplicate Includes In Programs | OPT.ABAP.APFR.AvoidDuplicateIncludesInPrograms | AvoidDuplicateIncludesInPrograms:異なるプログラムでの同じINCLUDEの回避 |
低 | Avoid Elementi I U Tree | OPT.ABAP.AWD.AvoidElementiIUTree | AvoidElementiIUTree:Web DynproでTree UI要素の使用禁止 |
低 | Avoid Empty Blocks In Loop Or If | OPT.ABAP.MAINT.AvoidEmptyBlocksInLoopOrIf | AvoidEmptyBlocksInLoopOrIf:空のブロックでのループや条件文の使用回避 |
中 | Avoid Empty Catch Blocks | OPT.ABAP.APBR.AvoidEmptyCatchBlocks | AvoidEmptyCatchBlocks:空のCATCHブロックの使用の回避 |
低 | Avoid Empty Subroutine Or Function | OPT.ABAP.MAINT.AvoidEmptySubroutineOrFunction | AvoidEmptySubroutineOrFunction:空のブロックを持つ関数やサブルーチンの使用回避 |
中 | Avoid Empty When Others | OPT.ABAP.APBR.AvoidEmptyWhenOthers | AvoidEmptyWhenOthers:空のWHEN OTHERS句は禁止 |
低 | Avoid Form Param Without Type | OPT.ABAP.AGR.AvoidFormParamWithoutType | AvoidFormParamWithoutType:型付けされていない、あるいは汎用的すぎる型パラメータを持つサブルーチンの回避 |
重大 | Avoid Free Memory | OPT.ABAP.AGR.AvoidFreeMemory | AvoidFreeMemory:明示的なデータクラスタなしでのFREE MEMORYの使用の回避 |
低 | Avoid From Dynamic | OPT.ABAP.ASR.AvoidFromDynamic | AvoidFromDynamic:FROM句でのサブクエリの回避 |
中 | Avoid Literal Wit Add | OPT.ABAP.AGR.AvoidLiteralWitAdd | AvoidLiteralWitAdd:リテラルの代わりに変数の使用 |
低 | Avoid Logic DB | OPT.ABAP.ASR.AvoidLogicDB | AvoidLogicDB: 論理データベースの使用禁止 |
高 | Avoid Macro | OPT.ABAP.AGR.AvoidMacro | AvoidMacro:カスタムマクロの定義の禁止 |
低 | Avoid Modify Context | OPT.ABAP.AWD.AvoidModifyContext | AvoidModifyContext:Web Dynproコンテキストのプログラムによる変更の回避 |
低 | Avoid Modify Elements Directly | OPT.ABAP.AWD.AvoidModifyElementsDirectly | AvoidModifyElementsDirectly:Web Dynproコンテキストノードのプログラムでのレイアウト変更の禁止 |
低 | Avoid Module Messed Up | OPT.ABAP.APBR.AvoidModuleMessedUp | AvoidModuleMessedUp:プログラムからのモジュール呼び出しの回避 |
低 | Avoid Multiple Dynamic Attributes | OPT.ABAP.AWD.AvoidMultipleDynamicAttributes | AvoidMultipleDynamicAttributes:Web Dynpro要素で複数の属性の動的な割り当ての回避 |
低 | Avoid Nested Layout | OPT.ABAP.AWD.AvoidNestedLayout | AvoidNestedLayout:レイアウトのネストの回避 |
情報 | Avoid No Standard Page Heading | OPT.ABAP.ADR.AvoidNoStandardPageHeading | AvoidNoStandardPageHeading:標準のSAPレポートヘッダの無効の禁止(標準レポートヘッダ無し) |
中 | Avoid No Use Fields | OPT.ABAP.AGR.AvoidNoUseFields | AvoidNoUseFields:内部テーブルで使用されないフィールドの宣言の回避 |
低 | Avoid Non Transp Table | OPT.ABAP.AGR.AvoidNonTranspTable | AvoidNonTranspTable:透過的でないテーブルの作成禁止 |
中 | Avoid Non Used Declared Module | OPT.ABAP.AMR.AvoidNonUsedDeclaredModule | AvoidNonUsedDeclaredModule:使用されていないダイアログモジュールの宣言の回避 |
高 | Avoid Percentage Var | OPT.ABAP.AMR.AvoidPercentage_Var | AvoidPercentage_Var:%_で始まる識別子の回避 |
中 | Avoid Pool And Include | OPT.ABAP.AWD.AvoidPoolAndInclude | AvoidPoolAndInclude:TYPE-POOLとINCLUDE TYPE/STRUCTUREの使用禁止 |
高 | Avoid Read S A P Tables | OPT.ABAP.ASR.AvoidReadSAPTables | AvoidReadSAPTables:データベーステーブルのREAD TABLEの回避 |
中 | Avoid S A P Queries | OPT.ABAP.ASR.AvoidSAPQueries | AvoidSAPQueries:SAP Queryの呼び出しを禁止 |
高 | Avoid SQL Exist Subqueries | OPT.ABAP.EFFICIENCY.AvoidSqlExistSubqueries | AvoidSqlExistSubqueries:EXISTS句の使用の回避 |
中 | Avoid Sap Script | OPT.ABAP.AGR.AvoidSapScript | AvoidSapScript:SAPスクリプトの回避 |
中 | Avoid Stop Messed Up | OPT.ABAP.APBR.AvoidStopMessedUp | AvoidStopMessedUp:START-OF-SELECTION、GET、AT SELECTION-SCREENのイベントブロック外でのSTOP文の回避 |
高 | Avoid Stretched Vertically | OPT.ABAP.AWD.AvoidStretchedVertically | AvoidStretchedVertically:MatrixLayoutでStretchedVerticallyの設定は禁止 |
中 | Avoid Sub Select Queries | OPT.ABAP.APFR.AvoidSubSelectQueries | AvoidSubSelectQueries:WHEREのサブクエリの回避 |
高 | Avoid Trace On | OPT.ABAP.APFR.AvoidTraceOn | AvoidTraceOn:トレースジェネレータを有効化する文の使用の回避 |
重大 | Avoid Up To Rows With For All Entries | OPT.ABAP.EFFICIENCY.AvoidUpToRowsWithForAllEntries | AvoidUpToRowsWithForAllEntries:SELECT文でのUP TO ROWS句とFOR ALL ENTRIES併用の回避 |
情報 | Avoid Vble Message | OPT.ABAP.ADR.AvoidVbleMessage | AvoidVbleMessage:メッセージのパラメータに変数の使用を禁止 |
低 | Avoid Where Dynamic | OPT.ABAP.ASR.AvoidWhereDynamic | AvoidWhereDynamic:WHERE句でのサブクエリの回避 |
情報 | Avoid Write To | OPT.ABAP.AGR.AvoidWriteTo | AvoidWriteTo:WRITE TO文のMOVE TOへの置換 |
重大 | Backdoors | OPT.ABAP.SEC.Backdoors | Backdoors:本番環境のコードでの開発/テスト用バックドアの回避 |
高 | Bad Authorization Check | OPT.ABAP.SEC.BadAuthorizationCheck | BadAuthorizationCheck:承認チェックの適切ではない実装 |
高 | Call Editor Call | OPT.ABAP.AGR.CallEditorCall | CallEditorCall:EDITOR-CALLの使用の回避 |
中 | Call F M In Group | OPT.ABAP.AGR.CallFMInGroup | CallFMInGroup:未使用関数 |
低 | Call S Y S U B R C | OPT.ABAP.APBR.CallSYSUBRC | CallSYSUBRC:特定の操作の後でのSY-SUBRCの値の確認 |
重大 | Call Sys Function | OPT.ABAP.AGR.CallSysFunction | CallSysFunction:ABAPアプリケーションコードからシステム/カーネル関数の呼び出し禁止 |
高 | Call Tx | OPT.ABAP.AGR.CallTx | CallTx:特定のモジュールに対応するトランザクションの呼び出し回避 |
情報 | Calls2 Critical Functions | OPT.ABAP.SEC.Calls2CriticalFunctions | Calls2CriticalFunctions:クリティカルなABAP関数の呼び出し |
中 | Case No Repeat When | OPT.ABAP.AGR.CaseNoRepeatWhen | CaseNoRepeatWhen:CASE文中のWHEN条件の繰り返し回避 |
低 | Case Should Have At Least3 When | OPT.ABAP.MAINT.CaseShouldHaveAtLeast3When | CaseShouldHaveAtLeast3When:CASE文は少なくとも3つのWHEN句が必要 |
低 | Check Atr No Exist Dynpro | OPT.ABAP.APBR.CheckAtrNoExistDynpro | CheckAtrNoExistDynpro:存在しないdynproの属性確認の回避 |
中 | Check Auth In All Programs | OPT.ABAP.SEC.CheckAuthInAllPrograms | CheckAuthInAllPrograms:すべてのレポートには承認チェックが必要 |
高 | Check Authority | OPT.ABAP.APBR.CheckAuthority | CheckAuthority:AUTHORITY-CHECKの無効な認証フィールド |
高 | Check Dlg Modules | OPT.ABAP.APBR.CheckDlgModules | CheckDlgModules:存在しないdynproの使用の回避 |
中 | Check F Don't use masterpage filesaram | OPT.ABAP.APBR.CheckFMParam | CheckFMParam:関数モジュールのパラメータでの不正なカテゴリの回避 |
高 | Check Fn Module | OPT.ABAP.APBR.CheckFnModule | CheckFnModule:存在しない関数の使用の回避 |
低 | Check Includes | OPT.ABAP.APBR.CheckIncludes | CheckIncludes:タイプがI型でないインクルード文からのファイル呼び出しの回避 |
高 | Check Load Table | OPT.ABAP.APBR.CheckLoadTable | CheckLoadTable:SAPシステム内の既存のテーブルのみロード |
高 | Check Messages | OPT.ABAP.APBR.CheckMessages | CheckMessages:テーブルT100の既存のメッセージのみ使用 |
情報 | Check Status P F | OPT.ABAP.AGR.CheckStatusPF | CheckStatusPF:プログラムでSTATUS PFをパーソナライズしているかを確認 |
中 | Check Submit With Param | OPT.ABAP.APBR.CheckSubmitWithParam | CheckSubmitWithParam:SUBMITで宣言されていない選択基準の回避 |
情報 | Check Titlebar | OPT.ABAP.AGR.CheckTitlebar | CheckTitlebar:プログラムがTITLEBARをパーソナライズしているかを確認 |
高 | Check Tx | OPT.ABAP.APBR.CheckTx | CheckTx:既存のトランザクションのみ使用 |
高 | Close All Open Resources | OPT.ABAP.APFR.CloseAllOpenResources | CloseAllOpenResources:開いているすべてのリソース(カーソルやデータセット)は閉じることが必要 |
低 | Cmd Table Out Loop | OPT.ABAP.ASR.CmdTableOutLoop | CmdTableOutLoop:LOOPの外側でインデックスを暗黙的に使用するテーブルのコマンドの使用禁止 |
重大 | Command Injection | OPT.ABAP.SEC.CommandInjection | CommandInjection:OSコマンドで使用する特殊要素の不適切な無害化(OSコマンドインジェクション) |
低 | Comments Before Classes | OPT.ABAP.MAINT.CommentsBeforeClasses | CommentsBeforeClasses:クラスの前のコメント行の確認 |
高 | Comments Before Programs Or Reports | OPT.ABAP.ADR.CommentsBeforeProgramsOrReports | CommentsBeforeProgramsOrReports:プログラムやレポートの前にコメント行があるかの確認 |
低 | Comments Before Subroutines | OPT.ABAP.ADR.CommentsBeforeSubroutines | CommentsBeforeSubroutines:関数、メソッド、フォーム、マクロの前にコメント行があるかの確認 |
中 | Compatible Form Params | OPT.ABAP.APBR.CompatibleFormParams | CompatibleFormParams:PERFORMでは引数とサブルーチンの正式パラメータとの一致が必要 |
中 | Complex Layout Use Matrix Layout | OPT.ABAP.AWD.ComplexLayoutUseMatrixLayout | ComplexLayoutUseMatrixLayout:Web Dynproビューに過度な数の要素 |
高 | Control Fields Client Tables | OPT.ABAP.ASR.ControlFieldsClientTables | ControlFieldsClientTables:カスタムテーブルに監査フィールドを含める |
低 | Correct Naming Meth | OPT.ABAP.ADR.CorrectNamingMeth | CorrectNamingMeth:メソッドは標準的な命名規則に従う必要 |
高 | Correspond Raise Excep | OPT.ABAP.APBR.CorrespondRaiseExcep | CorrespondRaiseExcep:EXCEPTIONSとRAISEは一致が必要 |
重大 | Cross Client Database Access | OPT.ABAP.SEC.CrossClientDatabaseAccess | CrossClientDatabaseAccess:SAPクライアント分離メカニズムのバイパス禁止 |
重大 | Cross Site Scripting | OPT.ABAP.SEC.CrossSiteScripting | CrossSiteScripting:Webページ生成中の入力の不適切な無害化(クロスサイトスクリプティング) |
高 | Cx Root Caught | OPT.ABAP.RELIABILITY.CxRootCaught | CxRootCaught:CX_ROOTのcatchの禁止 |
高 | Cyclomatic Complexity | OPT.ABAP.AMTR.CyclomaticComplexity | CyclomaticComplexity:循環的複雑度の高い関数/形式/メソッド等の回避 |
情報 | Dangerous File Download | OPT.ABAP.SEC.DangerousFileDownload | DangerousFileDownload:危険なファイルのダウンロード |
情報 | Dangerous File Upload | OPT.ABAP.SEC.DangerousFileUpload | DangerousFileUpload:危険なファイルのアップロード |
低 | Data Definition At The Beginning | OPT.ABAP.AMR.DataDefinitionAtTheBeginning | DataDefinitionAtTheBeginning:最初の実行文の後に宣言文の挿入禁止 |
中 | Deeply Nested Statements | OPT.ABAP.MAINT.DeeplyNestedStatements | DeeplyNestedStatements:深くネストされたステートメントの回避 |
高 | Delete From Table Without Where | OPT.ABAP.RELIABILITY.DeleteFromTableWithoutWhere | DeleteFromTableWithoutWhere:DELETE FROMステートメントにはWHERE条件が必要 |
高 | Deprecated Asyncronous R F C | OPT.ABAP.PORTABILITY.DeprecatedAsyncronousRFC | DeprecatedAsyncronousRFC:古いTransactional RFCやQueue RFCの代わりにBackground RFCを使用 |
高 | Direct Recursive Call | OPT.ABAP.RELIABILITY.DirectRecursiveCall | DirectRecursiveCall:再帰的な呼び出しの回避 |
高 | Direct Update | OPT.ABAP.SEC.DirectUpdate | DirectUpdate: SQLの適切でない使用 - Direct Update |
重大 | Dynamic Code | OPT.ABAP.SEC.DynamicCode | DynamicCode:動的なコード構造の回避 |
高 | Dynamic Constructs | OPT.ABAP.SEC.DynamicConstructs | DynamicConstructs:外部入力により制御される動的な構成の回避 |
中 | Dynpro Non Exist Atr | OPT.ABAP.APBR.DynproNonExistAtr | DynproNonExistAtr:dynproスクリーン要素の存在しない属性への参照の回避 |
低 | Elseif With Else | OPT.ABAP.RELIABILITY.ElseifWithElse | ElseifWithElse:IF ...ELSEIF文はELSEでの終了が必要 |
重大 | Empty Select Endselect | OPT.ABAP.EFFICIENCY.EmptySelectEndselect | EmptySelectEndselect:空のSELECT-ENDSELECT文の回避 |
重大 | Enqueue Instead Of Select Single For Update | OPT.ABAP.ASR.EnqueueInsteadOfSelectSingleForUpdate | EnqueueinsteadOfSelectSingleForUpdate:SELECT SINGLE FOR UPDATEではなくSAPロックメカニズムの使用 |
低 | Equal Number Param | OPT.ABAP.APBR.EqualNumberParam | EqualNumberParam:FORMに宣言されたパラメータ数と異なる呼び出しの回避 |
低 | Excess Of Parameters | OPT.ABAP.AMTR.ExcessOfParameters | ExcessOfParameters:パラメータが多すぎる関数/フォーム/メソッドの回避 |
低 | Excess Of Responsibility | OPT.ABAP.AMTR.ExcessOfResponsibility | ExcessOfResponsibility:過剰な重要性を持つプログラムの回避 |
低 | Excess Of Return | OPT.ABAP.AMTR.ExcessOfReturn | ExcessOfReturn:RETURN文の過剰使用の回避 |
低 | Exist Prog Form Decl | OPT.ABAP.APBR.ExistProgFormDecl | ExistProgFormDecl:分析対象のシステム内に存在しないFORMの宣言の回避 |
中 | Exists Form | OPT.ABAP.AGR.ExistsForm | ExistsForm:宣言されていないFORMの呼び出し回避 |
中 | Extract Code Into Subroutines | OPT.ABAP.AMR.ExtractCodeIntoSubroutines | ExtractCodeIntoSubroutines:大きなコード要素の細分化 |
低 | Fan In | OPT.ABAP.AMTR.FanIn | FanIn:プログラム、レポート、クラスにおける各ルーチンの呼び出し回数の制限 |
中 | Fan Out | OPT.ABAP.AMTR.FanOut | FanOut:各処理ブロックからの呼び出し数の制限(ファンアウト) |
情報 | Fields Curr Quan | OPT.ABAP.AGR.FieldsCurrQuan | FieldsCurrQuan:CURRフィールドとQUANフィールドは関連する単位フィールドが必要 |
重大 | First Stmt Return Select Endselect | OPT.ABAP.EFFICIENCY.FirstStmtReturnSelectEndselect | FirstStmtReturnSelectEndselect:SELECT-ENDSELECTブロックの最初の文としてRETURN文の使用の回避 |
高 | Form Corresponds Perform | OPT.ABAP.AGR.FormCorrespondsPerform | FormCorrespondsPerform:未使用のサブルーチンの宣言の回避 |
低 | Harcoded Text In Message | OPT.ABAP.MAINT.HarcodedTextInMessage | HarcodedTextInMessage:メッセージ内のテキストのハードコード化の回避 |
高 | Hardcoded Client Check | OPT.ABAP.SEC.HardcodedClientCheck | HardcodedClientCheck:ハードコードされたSAPクライアントチェック(sy-mandt) |
低 | Hardcoded Date Check | OPT.ABAP.SEC.HardcodedDateCheck | HardcodedDateCheck:現在のサーバの日付チェックのハードコードの回避 |
中 | Hardcoded Host Check | OPT.ABAP.MAINT.HardcodedHostCheck | HardcodedHostCheck:sy-hostチェックのハードコーディングの回避 |
低 | Hardcoded OS Check | OPT.ABAP.MAINT.HardcodedOSCheck | HardcodedOSCheck:sy-opsysチェックのハードコード化の回避 |
中 | Hardcoded Rfc Destination | OPT.ABAP.RELIABILITY.HardcodedRfcDestination | HardcodedRfcDestination:RFC宛先パラメータのハードコードの回避 |
低 | Hardcoded Sensitive Data | OPT.ABAP.SEC.HardcodedSensitiveData | HardcodedSensitiveData:機密情報のハードコード化の回避 |
高 | Hardcoded System Id Check | OPT.ABAP.SEC.HardcodedSystemIdCheck | HardcodedSystemIdCheck:ハードコードされたシステムIDのチェック(sy-sysid) |
高 | Hardcoded Username Check | OPT.ABAP.SEC.HardcodedUsernameCheck | HardcodedUsernameCheck:ハードコードされたユーザ名のチェック(バックドアの可能性) |
重大 | Http Header Manipulation | OPT.ABAP.SEC.HttpHeaderManipulation | HttpHeaderManipulation:HTTPレスポンスヘッダの未検証データ |
中 | Implement Layout | OPT.ABAP.AWD.ImplementLayout | ImplementLayout:すべてのWeb Dynproビューにはレイアウトが必要 |
低 | Import Export Dynpro | OPT.ABAP.AMR.ImportExportDynpro | ImportExportDynpro:インポート/エクスポートdynproの使用の回避 |
重大 | Import Export Nametab | OPT.ABAP.AGR.ImportExportNametab | ImportExportNametab:IMPORT/EXPORT NAMETAB使用の回避 |
高 | Insecure Randomness | OPT.ABAP.SEC.InsecureRandomness | InsecureRandomnes:安全でない標準的な擬似乱数生成器 |
高 | Join Instead Of Select In Loop | OPT.ABAP.EFFICIENCY.JoinInsteadOfSelectInLoop | JoinInsteadOfSelectInLoop:select+loop+nested selectの代わりにjoinの使用 |
高 | Key Select Option | OPT.ABAP.AGR.KeySelectOption | KeySelectOption:SELECT-OPTIONSには常にキーまたはインデックス付きフィールドが必要 |
情報 | Keywords For User Identifiers | OPT.ABAP.MAINT.KeywordsForUserIdentifiers | KeywordsForUserIdentifiers:ABAPキーワードは識別子としての使用の禁止 |
中 | Limit Indexes | OPT.ABAP.ASR.LimitIndexes | LimitIndexes: テーブルにインデックスの過度な作成の禁止 |
情報 | Limited Number Of Includes | OPT.ABAP.APFR.LimitedNumberOfIncludes | LimitedNumberOfIncludes:インクルードされるソースファイル数の多さ |
高 | Limited Number Of Tables In Queries | OPT.ABAP.ASR.LimitedNumberOfTablesInQueries | LimitedNumberOfTablesInQueries:SELECTクエリで使用するテーブルの数を制限することを試す |
中 | Logic Depending On Text Symbols | OPT.ABAP.RELIABILITY.LogicDependingOnTextSymbols | LogicDependingOnTextSymbols:テキスト記号に依存するロジック |
情報 | Loop At Into | OPT.ABAP.EFFICIENCY.LoopAtInto | LoopAtInto:LOOP AT itab INTOの回避 |
低 | Loop At Where Inside Loop | OPT.ABAP.APFR.LoopAtWhereInsideLoop | LoopAtWhereInsideLoop:別のLOOP ATの内部でWHEREを含むLOOP ATの使用回避 |
情報 | Loop Where Instead Of Loop Check | OPT.ABAP.APFR.LoopWhereInsteadOfLoopCheck | LoopWhereInsteadOfLoopCheck:LOOP+CHECKは代わりにLOOP+WHEREの使用 |
高 | Mark Buffering If Necessary | OPT.ABAP.ASR.MarkBufferingIfNecessary | MarkBufferingIfNecessary:必要に応じてテーブルバッファリングの有効化 |
中 | Match Layout With View Controller | OPT.ABAP.AWD.MatchLayoutWithViewController | MatchLayoutWithViewController:関連するレイアウトがないビューコントローラーのコードはwdDoModifyViewメソッドに格納 |
低 | Max Long Line Size | OPT.ABAP.APTR.MaxLongLineSize | MaxLongLineSize:LINE-SIZEパラメータ幅は255以下に抑制 |
中 | Max Number DB Op | OPT.ABAP.APFR.MaxNumberDBOp | MaxNumberDBOp:レポートまたはプロシージャ内の過度な回数のDB操作 |
低 | Max One Append Struct | OPT.ABAP.ASR.MaxOneAppendStruct | MaxOneAppendStruct:複数のAPPEND構造を持つテーブルまたは標準の構造体 |
低 | Maximum Joins Per Query | OPT.ABAP.APFR.MaximumJoinsPerQuery | MaximumJoinsPerQuery:SELECTで使用できるテーブル数の制限 |
低 | Message Language | OPT.ABAP.ADR.MessageLanguage | MessageLanguage:メッセージは必要な言語への翻訳が必要 |
低 | Message Param | OPT.ABAP.APBR.MessageParam | MessageParam: メッセージのパラメータの正しい数の確認 |
高 | Modified Input Parameter | OPT.ABAP.RELIABILITY.ModifiedInputParameter | ModifiedInputParameter:参照渡しされた入力パラメータの変更 |
情報 | Move Instead Of Move Corresponding | OPT.ABAP.AGR.MoveInsteadOfMoveCorresponding | MoveInsteadOfMoveCorresponding:MOVE-CORRESPONDINGは代わりにMOVEを使用 |
高 | Naming Components | OPT.ABAP.AWD.NamingComponents | NamingComponents:コンポーネントの命名法の管理 |
低 | Naming Conventions | OPT.ABAP.ADR.NamingConventions | NamingConventions: 標準的な命名規則に従う必要 |
低 | Nested Case Statement | OPT.ABAP.AMR.NestedCaseStatement | NestedCaseStatement:入れ子の多いCASE文の回避 |
低 | Nested If Statement | OPT.ABAP.AMR.NestedIfStatement | NestedIfStatement:IF文のネスト回数の抑制 |
中 | Nested Loops | OPT.ABAP.AMR.NestedLoops | NestedLoops: ネストされたループの回避 |
中 | Nested Only Data Def | OPT.ABAP.AGR.NestedOnlyDataDef | NestedOnlyDataDef:冗長なネスト構造の宣言の回避 |
重大 | Nested Select Statement | OPT.ABAP.EFFICIENCY.NestedSelectStatement | NestedSelectStatement:ネストされたSELECTステートメントの回避 |
重大 | No Absolute Paths | OPT.ABAP.APTR.NoAbsolutePaths | NoAbsolutePaths:絶対パスの回避 |
高 | No Access Model From Mths | OPT.ABAP.AWD.NoAccessModelFromMths | NoAccessModelFromMths:Web Dynproビューコントローラメソッドからアシスタンスクラスに直接アクセスの禁止 |
中 | No Append Sorted By | OPT.ABAP.APFR.NoAppendSortedBy | NoAppendSortedBy:APPEND ... SORTED BYの禁止 |
高 | No Assert With Side Effects Condition | OPT.ABAP.RELIABILITY.NoAssertWithSideEffectsCondition | NoAssertWithSideEffectsCondition:副作用のある設定可能なASSERTの回避 |
重大 | No Authorization Check Call Transaction | OPT.ABAP.SEC.NoAuthorizationCheckCallTransaction | NoAuthorizationCheckCallTransaction:CALL TRANSACTIONの前に明示的な承認チェックが必要 |
重大 | No Authorization Check R F C | OPT.ABAP.SEC.NoAuthorizationCheckRFC | NoAuthorizationCheckRFC:RFC対応関数では明示的に承認チェックが必要 |
高 | No Authorization Check SQL | OPT.ABAP.SEC.NoAuthorizationCheckSQL | NoAuthorizationCheckSQL:SQL文で明示的に承認チェックが必要 |
高 | No Authorization Group4 Table | OPT.ABAP.SEC.NoAuthorizationGroup4Table | NoAuthorizationGroup4Table:承認グループを持たないテーブル |
重大 | No Break Point Statements | OPT.ABAP.APBR.NoBreakPointStatements | NoBreakPointStatements:本番環境のコードからのBREAK-POINTステートメントの削除 |
中 | No Check Or Continue Within Select Loops | OPT.ABAP.APFR.NoCheckOrContinueWithinSelectLoops | NoCheckOrContinueWithinSelectLoop:SELECTループ内ではCHECK、EXIT、CONTINUE文の禁止 |
高 | No Control Break Within Loop At Where | OPT.ABAP.APBR.NoControlBreakWithinLoopAtWhere | NoControlBreakWithinLoopAtWhere:制御レベルの処理ブロック(AT FIRST、AT NEW、AT END、AT LAST)でLOOP ATのWHERE/FROM/TOは使用禁止 |
低 | No Corresponding Fields | OPT.ABAP.APFR.NoCorrespondingFields | NoCorrespondingFields:SELECT * でCORRESPONDING FIELDSの使用禁止 |
中 | No Data Definitions Within Events | OPT.ABAP.AGR.NoDataDefinitionsWithinEvents | NoDataDefinitionsWithinEvents:イベントブロック内での宣言の回避 |
中 | No Data Or Object Creation Inside Loops | OPT.ABAP.APFR.NoDataOrObjectCreationInsideLoops | NoDataOrObjectCreationInsideLoop:ループ内部でのオブジェクトの作成やデータの宣言の回避 |
低 | No Dead Data Definitions | OPT.ABAP.AMR.NoDeadDataDefinitions | NoDeadDataDefinitions:プログラムで定義された情報のすべての使用 |
情報 | No Declared Field | OPT.ABAP.ASR.NoDeclaredField | NoDeclaredField:内部テーブルや構造体で宣言されていないフィールドの参照回避 |
高 | No Exec SQL Statements | OPT.ABAP.APTR.NoExecSqlStatements | NoExecSqlStatements:EXEC SQLステートメントの使用の禁止 |
情報 | No Exist Context | OPT.ABAP.APBR.NoExistContext | NoExistContext:宣言されていないテーブルや構造体のフィールドの使用禁止 |
中 | No Field As Operator | OPT.ABAP.ADR.NoFieldAsOperator | NoFieldAsOperator:演算子のフィールド名としての使用禁止 |
低 | No Hyphen In Name | OPT.ABAP.AGR.NoHyphenInName | NoHyphenInName:内部テーブルのフィールド名ではハイフンの使用禁止 |
中 | No Ids Other Type | OPT.ABAP.ADR.NoIdsOtherType | NoIdsOtherType:フィールド名はプリミティブ型と同じだが、別の型としての宣言 |
情報 | No Literals | OPT.ABAP.AMR.NoLiterals | NoLiterals:コード内でのリテラルの使用は禁止 |
低 | No Long Ids | OPT.ABAP.ADR.NoLongIds | NoLongIds:長すぎる識別子の使用の禁止 |
情報 | No Lost Cursor | OPT.ABAP.ASR.NoLostCursor | NoLostCursor:SELECTのループでカーソルが失われる文の呼び出しの回避 |
高 | No Over Write Sys Var | OPT.ABAP.AGR.NoOverWriteSysVar | NoOverWriteSysVar:システム変数の上書きの回避 |
中 | No Raise Out Of Function Group | OPT.ABAP.APBR.NoRaiseOutOfFunctionGroup | NoRaiseOutOfFunctionGroup:不適切な処理ブロック内のRAISE例外文 |
中 | No Select All | OPT.ABAP.ASR.NoSelectAll | NoSelectAll:SQLクエリでのSELECT * の回避 |
高 | No Select Inside Loop | OPT.ABAP.APFR.NoSelectInsideLoop | NoSelectInsideLoop:ループ内でのSELECT文の使用の回避 |
中 | No Sentence After Exit | OPT.ABAP.AGR.NoSentenceAfterExit | NoSentenceAfterExit:STOP、LEAVE PROGRAM、EXIT、RETURN、RAISE、REJECT、SUBMITの後のセンテンスの回避 |
重大 | No Update Config Tables | OPT.ABAP.ASR.NoUpdateConfigTables | NoUpdateConfigTables:ABAPコードから機密性の高いデータベーステーブルへの書き込み回避 |
高 | No Use S Y Uname | OPT.ABAP.AGR.NoUseSYUname | NoUseSYUname:条件内でのシステム変数SY-UNAMEの使用の回避 |
高 | No Wildcards At The Beginning Of Like Literals | OPT.ABAP.APFR.NoWildcardsAtTheBeginningOfLikeLiterals | NoWildcardsAtTheBeginningOfLikeLiterals:SQL文のLIKE比較で使用されるリテラルの先頭にワイルドカード(「%」または「_」)の使用禁止 |
高 | Not In Subquery | OPT.ABAP.EFFICIENCY.NotInSubquery | NotInSubquery:SELECT内のNOT INサブクエリの回避 |
中 | Number View In W D | OPT.ABAP.AWD.NumberViewInWD | NumberViewInWD:ビュー数の管理 |
中 | Obsolete Code | OPT.ABAP.PORTABILITY.ObsoleteCode | ObsoleteCode:SAP 7+の廃止されたコード |
情報 | One Statement Per Line | OPT.ABAP.AMR.OneStatementPerLine | OneStatementPerLine:各文は1行に配置 |
低 | Only Client Fields In Append Str | OPT.ABAP.ASR.OnlyClientFieldsInAppendStr | OnlyClientFieldsInAppendStr:APPEND構造体では常にカスタムフィールドの使用 |
高 | Only One Commit And Rollback | OPT.ABAP.APFR.OnlyOneCommitAndRollback | OnlyOneCommitAndRollback:プログラム内にはCOMMITとROLLBACKが1つだけ存在する事が必要 |
中 | Open Close Resources Only Once | OPT.ABAP.APFR.OpenCloseResourcesOnlyOnce | OpenCloseResourcesOnlyOnce: すべてのリソース(カーソルまたはデータセット)は一度だけのオープン/クローズを推奨 |
重大 | Open Redirect | OPT.ABAP.SEC.OpenRedirect | OpenRedirect:信頼できないサイトへのURLリダイレクト(オープンリダイレクト) |
低 | Output File Extension | OPT.ABAP.AGR.OutputFileExtension | OutputFileExtension: 出力ファイルには適切な拡張子が必要 |
中 | Output Files With Header | OPT.ABAP.AGR.OutputFilesWithHeader | OutputFilesWithHeader:出力データセットにはヘッダーレコードが必要 |
高 | Overwrite System Fields | OPT.ABAP.SEC.OverwriteSystemFields | OverwriteSystemFields:ABAPシステムフィールドの適切でない使用 |
高 | Password Management | OPT.ABAP.SEC.PasswordManagement | PasswordManagement:コード中にハードコーディングまたはコメント内の認証情報(ユーザ名/パスワード)の記述回避 |
重大 | Path Manipulation | OPT.ABAP.SEC.PathManipulation | PathManipulation:ファイル名またはパスの外部制御 |
中 | Path Output File | OPT.ABAP.AMR.PathOutputFile | PathOutputFile: 出力ファイルのファイルシステムへの保存 |
中 | Percentage Of Comment Lines Per File | OPT.ABAP.ADR.PercentageOfCommentLinesPerFile | PercentageOfCommentLinesPerFile:1ファイルあたりのコメント行数の確認 |
中 | Percentage Of Comment Lines Per Method | OPT.ABAP.MAINT.PercentageOfCommentLinesPerMethod | PercentageOfCommentLinesPerMethod:メソッドごとのコメント行の全体的な量の確認 |
中 | Recommend A L Vwith Report | OPT.ABAP.AGR.RecommendALVwithReport | RecommendALVwithReport:レポートで従来のリスト生成の代わりにALV(Abap List Viewer)の使用 |
低 | Recommend Case When Others | OPT.ABAP.AGR.RecommendCaseWhenOthers | RecommendCaseWhenOthers:WHEN OTHERS句は、すべてのCASE文で使用が必要 |
情報 | Recommend Start Of Selection | OPT.ABAP.AGR.RecommendStartOfSelection | RecommendStartOfSelection:START-OF-SELECTIONイベントハンドラはすべてのABAPレポートで必要 |
高 | Recommend Where With Indexes | OPT.ABAP.ASR.RecommendWhereWithIndexes | WhereWithIndexesの推奨:大規模テーブルのWHERE条件にはインデックス付きカラムを使用 |
中 | Recommendable Dynpro Size | OPT.ABAP.AWD.RecommendableDynproSize | RecommendableDynproSize:Web Dynproフィールドには正しいサイズの使用 |
重大 | Regex Injection | OPT.ABAP.SEC.RegexInjection | RegexInjection:悪意のある正規表現によるDos攻撃の防止(正規表現インジェクション) |
中 | Replace If With Case | OPT.ABAP.APFR.ReplaceIfWithCase | ReplaceIfWithCase:IF ... ENDIFの代わりにCASE ... ENDCASEの使用 |
高 | Rfc Callback Attack | OPT.ABAP.SEC.RfcCallbackAttack | RfcCallbackAttack:コールバック攻撃対策のないRFCコール |
重大 | Rfc Destination Injection | OPT.ABAP.SEC.RfcDestinationInjection | RfcDestinationInjection:RFC呼び出しにおけるデスティネーションインジェクション |
重大 | SQL Injection | OPT.ABAP.SEC.SqlInjection | SqlInjection:SQLコマンドで使用する特殊要素の不適切な無害化(SQLインジェクション) |
中 | Security Select Tables | OPT.ABAP.ASR.SecuritySelectTables | SecuritySelectTables:ABAPコードから機密性の高いテーブルへのクエリの回避 |
低 | Select Into Instead Of Select Appending | OPT.ABAP.APFR.SelectIntoInsteadOfSelectAppending | SelectIntoInsteadOfSelectAppending:SELECT APPENDINGの代わりにSELECT+INTOの使用 |
低 | Select Into Table Instead Of Select End Select | OPT.ABAP.APFR.SelectIntoTableInsteadOfSelectEndSelect | SelectIntoTableInsteadOfSelectEndSelect:内部テーブルのロードで SELECT...ENDSELECTの禁止 |
低 | Set Get Sys Param | OPT.ABAP.APBR.SetGetSysParam | SetGetSysParam:システム内に存在するパラメータの使用 |
高 | Sort Before Removing Duplicates | OPT.ABAP.RELIABILITY.SortBeforeRemovingDuplicates | SortBeforeRemovingDuplicates:重複を削除する前に内部テーブルのソート |
低 | Sort Instead Of Order By | OPT.ABAP.ASR.SortInsteadOfOrderBy | SortInsteadOfOrderBy:SELECTでORDER BYの代わりにABAP SORTの使用 |
重大 | Sort Stmt In A Loop | OPT.ABAP.EFFICIENCY.SortStmtInALoop | SortStmtInALoop:LOOP内でのSORT文の宣言の回避 |
中 | Stand Comment Form | OPT.ABAP.ADR.StandCommentForm | StandCommentForm:FORMでは標準書式のコメントの推奨 |
高 | Submit Report | OPT.ABAP.AGR.SubmitReport | SubmitReport:レポート内での多数のSUBMIT呼び出し回避 |
低 | Submit Report Type1 | OPT.ABAP.APBR.SubmitReportType1 | SubmitReportType1:タイプが1型でないレポートの呼び出しの回避 |
重大 | Submit Stmt In A Loop | OPT.ABAP.EFFICIENCY.SubmitStmtInALoop | SubmitStmtInALoop:LOOP内でのSUBMIT文の宣言の回避 |
低 | Subroutine Definitions After Events | OPT.ABAP.AGR.SubroutineDefinitionsAfterEvents | SubroutineDefinitionsAfterEvents:すべてのサブルーチンはイベント後の宣言が必要 |
低 | Suggest Append Lines Instead Of Append | OPT.ABAP.APFR.SuggestAppendLinesInsteadOfAppend | SuggestAppendLinesInsteadOfAppend:効率化のためにAPPENDの代わりにAPPEND LINES OFの使用 |
中 | Suggest Others Exceptions | OPT.ABAP.APBR.SuggestOthersExceptions | SuggestOthersExceptions:EXCEPTIONSにはOTHERSオプションが必要 |
高 | Suggest Select Where | OPT.ABAP.ASR.SuggestSelectWhere | SuggestSelectWhere:WHEREなしのSELECT |
低 | Suggest Typed Parameters | OPT.ABAP.AGR.SuggestTypedParameters | SuggestTypedParameters:型付けされていない、あるいは汎用的すぎる型パラメータを持つプロシージャの回避 |
高 | Suggest While Instead Of Do | OPT.ABAP.APFR.SuggestWhileInsteadOfDo | SuggestWhileinsteadOfDo:無条件のDOループの代わりにWHILEの使用 |
低 | Too Many Attributes In A Class | OPT.ABAP.MAINT.TooManyAttributesInAClass | TooManyAttributesInAClass:クラス属性の過度な数の宣言の回避 |
低 | Too Many Database Operations In Block | OPT.ABAP.MAINT.TooManyDatabaseOperationsInBlock | TooManyDatabaseOperationsInBlock:ブロック内での過度なデータベース操作の回避 |
低 | Too Many Lines By File | OPT.ABAP.MAINT.TooManyLinesByFile | TooManyLinesByFile: 行数が多すぎるファイルの回避 |
中 | Too Nested Macro Calls | OPT.ABAP.MAINT.TooNestedMacroCalls | TooNestedMacroCalls:ネストしすぎたマクロ呼び出しの回避 |
高 | Uncaught Exception In Rfc Call | OPT.ABAP.RELIABILITY.UncaughtExceptionInRfcCall | UncaughtExceptionInRfcCall:RFCコールで捕捉されなかった例外 |
中 | Unicode Programs | OPT.ABAP.ADR.UnicodePrograms | UnicodePrograms:コードはUNICODEとの互換性が必要 |
高 | Update Dbtable Without Where | OPT.ABAP.RELIABILITY.UpdateDbtableWithoutWhere | UpdateDbtableWithoutWhere:WHERE句を指定しないデータベーステーブルの更新 |
高 | Update Delete Without Where | OPT.ABAP.EFFICIENCY.UpdateDeleteWithoutWhere | UpdateDeleteWithoutWhere:WHEREを指定しないUPDATE/DELETE |
情報 | Usages Of Sy Sysid | OPT.ABAP.SEC.UsagesOfSySysid | sy-sysidの使用法:sy-sysid の使用(参考) |
情報 | Usages Of Sy Uname | OPT.ABAP.SEC.UsagesOfSyUname | UsagesOfSyUname:sy-unameの使用(参考) |
中 | Use Attributes Controller Class | OPT.ABAP.AWD.UseAttributesControllerClass | UseAttributesControllerClass:Web DynproコントローラクラスはWDTHISおよびWDCONTEXT属性が必要 |
中 | Use Class Based Exceptions | OPT.ABAP.MAINT.UseClassBasedExceptions | UseClassBasedExceptions:クラスベースの例外処理の使用 |
高 | Use For All Entries | OPT.ABAP.APFR.UseForAllEntries | UseForAllEntries:FOR ALL ENTRIES句の内部テーブルが空でないことの確認 |
中 | Use Local Instead Of Tables In Subroutines | OPT.ABAP.AGR.UseLocalInsteadOfTablesInSubroutines | UseLocalInsteadOfTablesInSubroutines:プロシージャ、モジュール、イベント・ブロックの中でTABLES/NODESの宣言の回避 |
高 | Use Read With Binary Search If With Key | OPT.ABAP.APFR.UseReadWithBinarySearchIfWithKey | UseReadWithBinarySearchIfWithKey:テーブルを読み込む際にWITH KEYでBINARY SEARCHを使用 |
高 | Warn Scroll | OPT.ABAP.AWD.WarnScroll | WarnScroll:「scrollingMode{}」を持つWeb Dynpro要素の回避 |
低 | Warn Without Adobe Print Form | OPT.ABAP.ADR.WarnWithoutAdobePrintForm | WarnWithoutAdobePrintForm:印刷フォームがAdobeのフォームとして使用されていない場合の警告 |
高 | Weak Hash Algorithm | OPT.ABAP.SEC.WeakHashAlgorithm | WeakHashAlgorithm:脆弱な暗号化ハッシュのデータの完全性の欠如 |
低 | Where Clauses Without Not Or | OPT.ABAP.ASR.WhereClausesWithoutNotOr | WhereClausesWithoutNotOr:データベース操作でWHERE句内のNOT/OR演算子の回避 |
低 | Working With Report | OPT.ABAP.AGR.WorkingWithReport | WorkingWithReport:レポートでの動的操作(READ、INSERT、DELETE)の回避 |
低 | Working With Text Pool | OPT.ABAP.AGR.WorkingWithTextPool | WorkingWithTextPool:テキストプールの読み取り、挿入、削除の回避 |
選択 | 作成 | ヘッダ | 行 |
---|---|---|---|
ただし、表のタイトルは使わないこと | |||
テーブルをテーブルとして使う |