Configure custom SAP ATC check variants, tune rule parameters and download .chkv.json files for SAP GUI / abapGit.
Define your variant metadata and export to standard SAP ATC JSON format.
ZSKYLINT_PREF_DOWNPORTDetect 7.40+ syntax incompatible with downport targets
ZSKYLINT_PREF_REDUCEPrefer REDUCE #( ) expression over simple aggregation LOOP
ZSKYLINT_PREF_TAB_EXPRPrefer table expression itab[ ... ] over READ TABLE
ZSKYLINT_PREF_CONDPrefer COND #( ) expression over IF/ELSEIF/ELSE statement
ZSKYLINT_PREF_SWITCHPrefer SWITCH #( ) expression over CASE statement
ZSKYLINT_PREF_LINESPrefer lines( ) over DESCRIBE TABLE ... LINES
ZSKYLINT_NO_CALL_METHODAvoid static CALL METHOD statements
ZSKYLINT_NO_DEFAULT_KEYAvoid WITH DEFAULT KEY; prefer EMPTY KEY or explicit keys
ZSKYLINT_PREF_IS_NOTPrefer IS NOT over NOT ... IS
ZSKYLINT_NO_ME_REFERENCEAvoid self-reference ME->
ZSKYLINT_NO_REDUNDANT_CALLOmit redundant EXPORTING and RECEIVING in method calls
ZSKYLINT_NO_CHAINED_STMTAvoid chained declarations and chained assignments
ZSKYLINT_PREF_STR_TMPLPrefer string templates over CONCATENATE
ZSKYLINT_NO_BOOL_COMPAREAvoid comparing boolean method calls to boolean literals
ZSKYLINT_PREF_LINE_EXISTSPrefer line_exists( ) over READ TABLE with NO FIELDS
ZSKYLINT_PREF_RETURNPrefer RETURN over EXIT outside loop constructs
ZSKYLINT_NO_CHECK_STMTAvoid CHECK statements; prefer IF with RETURN or CONTINUE
ZSKYLINT_NO_EMPTY_BLOCKAvoid empty control blocks (IF, CASE, LOOP, TRY, etc.)
ZSKYLINT_NO_DUP_CONDAvoid duplicate branch conditions in IF and CASE
ZSKYLINT_PREF_MERGE_IFSMerge consecutive nested IF blocks using boolean AND
ZSKYLINT_NO_UNREACHABLEDetect unreachable code after jump or exit statements
ZSKYLINT_NO_SINGLE_WHENAvoid CASE statements with only one WHEN branch
ZSKYLINT_NO_YODA_CONDAvoid Yoda conditions in comparison expressions
ZSKYLINT_PREF_SYMBOL_OPPrefer symbolic operators over textual EQ, NE, LT, GT
ZSKYLINT_PREF_NEW_OPPrefer NEW operator over CREATE OBJECT and RAISE EXCEPTION
ZSKYLINT_PREF_XSDBOOLPrefer xsdbool( ) expression over manual IF-ELSE assignment
ZSKYLINT_NO_STATIC_ARROWAvoid calling static methods via instance arrow (->)
ZSKYLINT_NO_PUBLIC_ATTRAvoid mutable public attributes in classes
ZSKYLINT_NO_OBSOLETEAvoid obsolete statements (MOVE, REFRESH, FORM, etc.)
ZSKYLINT_NO_LIST_PROCProhibit classic list processing statements
ZSKYLINT_MAX_PARAMSMethod signature cleanliness (excessive parameter count)
ZSKYLINT_NO_DB_IN_LOOPAvoid database access inside loop iterations
ZSKYLINT_NO_EMPTY_FAEUnsecure FOR ALL ENTRIES (Missing empty itab check)
ZSKYLINT_NO_SELECT_STARSelect performance (Avoid SELECT * and SELECT ... ENDSELECT)
ZSKYLINT_NO_SCOPE_LEAKAvoid variable usage outside its declaring control block
ZSKYLINT_NO_SELF_ASSIGNDetect Identical Self Assignments
ZSKYLINT_PREF_FULL_TYPEDEnforce fully typed constant declarations
ZSKYLINT_PREF_CORRESPPrefer CORRESPONDING Expression over MOVE-CORRESPONDING
ZSKYLINT_MAX_METHOD_LENMethod Length Limit (excessive statement count)
ZSKYLINT_MAX_NESTINGNesting Depth Limit (excessive control block nesting)
ZSKYLINT_NO_SY_MODIFYAvoid sy-* System Variable Modification
ZSKYLINT_PREF_RETURNINGPrefer RETURNING over single EXPORTING
ZSKYLINT_PREF_CLASS_EXCPrefer Class-Based Exceptions over Classic EXCEPTIONS
ZSKYLINT_NO_DANGEROUS_STMTDangerous Statements (abaplint dangerous_statement)
ZSKYLINT_PREF_AUTH_CHECKCall Transaction Authority Check
ZSKYLINT_PREF_ORDER_BYSELECT UP TO 1 ROWS requires ORDER BY
ZSKYLINT_MAX_CYCLO_COMPCyclomatic Complexity Threshold
ZSKYLINT_PREF_FINAL_CLSPrefer FINAL classes and methods by default
ZSKYLINT_NO_MAGIC_NUMBERSAvoid magic numbers in code; use named constants
ZSKYLINT_PREF_INSERTPrefer INSERT ... INTO TABLE over APPEND for table safety
ZSKYLINT_NO_LIKE_OBJECTSAvoid LIKE referencing data objects; use explicit TYPE
ZSKYLINT_MAX_CTOR_STMTSKeep constructors clean; avoid heavy logic and DB
ZSKYLINT_NO_STATIC_CLSAvoid static-only classes; use instantiable classes
ZSKYLINT_PREF_PRED_NAMEEnforce predicate naming (IS_, HAS_) on boolean methods
ZSKYLINT_MAX_INHERITAvoid deep class inheritance hierarchies
ZSKYLINT_MAX_ATTRIBUTESLimit class member attributes to prevent God Classes
ZSKYLINT_NO_INTF_DATAAvoid mutable DATA in interfaces; allow only CONSTANTS
ZSKYLINT_NO_CATCH_ROOTCatch specific exceptions instead of generic cx_root
ZSKYLINT_NO_MSG_RAISINGAvoid MESSAGE ... RAISING; use class-based exceptions
ZSKYLINT_NO_NESTED_TRYAvoid nested TRY blocks; extract to helper methods
ZSKYLINT_NO_RAISE_CX_SYAvoid raising SAP internal system exceptions (cx_sy_*)
ZSKYLINT_PREF_CHECK_SUBRCCheck sy-subrc after DB, table and string operations
ZSKYLINT_NO_CLIENT_SPECAvoid USING CLIENT or CLIENT SPECIFIED in ABAP SQL
ZSKYLINT_NO_COMMIT_WORKAvoid COMMIT and ROLLBACK in application logic
ZSKYLINT_PREF_TRANSPORTAvoid MODIFY itab in LOOP without TRANSPORTING clause
ZSKYLINT_PREF_STR_FUNCDetect obsolete string statements; prefer built-in functions
ZSKYLINT_PREF_CALC_OPPrefer calculation assignment operators (+=, -=, *=, /=)
ZSKYLINT_PREF_EARLY_RETPrefer early return or continue over nested IF blocks
ZSKYLINT_NO_UNUSED_VARSDetect unused local variables and field symbols
ZSKYLINT_PREF_DECL_ORDEREnforce declaration order (TYPES, CONSTANTS, DATA, FS)
ZSKYLINT_NO_PARAM_ESCAPEAvoid unnecessary parameter escape (!param)
ZSKYLINT_PREF_CASEUse CASE instead of IF when checking multiple values
ZSKYLINT_NO_INLINE_LENAvoid inline length specification in declarations
ZSKYLINT_MAX_ONE_STMTMax One Statement Per Line
ZSKYLINT_NO_DASH_IN_NAMESNo Dashes in Variable and Form Names
ZSKYLINT_PREF_INLINEPrefer Inline Declarations
ZSKYLINT_PREF_FINAL_DATADeclare inline variables as FINAL when never written again
ZSKYLINT_NO_FRIENDSAvoid FRIENDS in class definitions
ZSKYLINT_PREF_MSG_CLSUse a message class instead of inline message text
ZSKYLINT_PREF_INL_CASTInline a CAST helper that is only read once
ZSKYLINT_NO_EXC_OVERLAPClassic EXCEPTIONS must not overlap
ZSKYLINT_NO_RFC_ERRRFC calls must handle system failures
ZSKYLINT_NO_MANY_PARENSRemove redundant parentheses
ZSKYLINT_PREF_PASS_BY_REFSlow Parameter Passing
ZSKYLINT_NO_MOD_STD_TABLEModify Only Own Database Tables
ZSKYLINT_NO_DYNAMIC_STMTNo Dynamic Constructs (CALL, ASSIGN, CREATE, etc.)
ZSKYLINT_PREF_PUB_CTORDeclare Constructor in PUBLIC SECTION
ZSKYLINT_PREF_DEF_TOPPlace definitions at beginning of routine
ZSKYLINT_NO_UNNEC_RETURNOmit unnecessary RETURN at end of routine
ZSKYLINT_NO_MIX_RETURNINGDo not mix RETURNING with EXPORTING or CHANGING
ZSKYLINT_NO_OVERW_BUILTINMethod name overwrites built-in SAP function
ZSKYLINT_MAX_PARAM_LINEMax one method parameter definition per line
ZSKYLINT_PREF_IS_INITIALPrefer IS [NOT] INITIAL over lines( ) or empty literals
ZSKYLINT_NO_IGNORED_RETURNDisallow ignoring the return value of functional methods
ZSKYLINT_PREF_CASTPrefer modern CAST #( ) expression over ?=
ZSKYLINT_NO_REDUNDANT_CLEARDo not CLEAR or FREE variables redundantly
ZSKYLINT_NO_MOD_LOOP_TABAvoid mutating or sorting tables inside loops
ZSKYLINT_NO_HARDCODED_ENVAvoid reading environment system fields (sy-sysid, etc.)
ZSKYLINT_MAX_LINE_LENMaximum Line Length
ZSKYLINT_PREF_NAMINGStandard Naming Conventions
ZSKYLINT_PREF_EXPAND_MACROExpand Macro Calls
ZSKYLINT_NO_BAD_INDENTBad Statement Indentation
ZSKYLINT_NO_DEAD_CODEDetect Dead Code with Constant Condition
ZSKYLINT_NO_KEYWORD_NAMEAvoid Using ABAP Keywords as Identifier Names
ZSKYLINT_PREF_JOIN_TYPEPrefer an explicit JOIN type such as INNER JOIN
ZSKYLINT_PREF_STD_TABLEPrefer explicit TYPE STANDARD TABLE OF over TYPE TABLE OF
ZSKYLINT_PREF_IS_SUPPLIEDPrefer IS SUPPLIED over the obsolete IS REQUESTED
ZSKYLINT_PREF_SYPrefer the short system field alias SY over SYST