abaplint rules documentationabaplint can be configured by placing a abaplint.json file in the root of the git repository. If no configuration file is found, the default configuration will be used, which contains have all rules enabled.
Get default configuration by running abaplint -d > abaplint.json
abaplint-clean-code contains rule documentation as well as abaplint.json definitions which attempt to align abaplint with the official Clean ABAP styleguide.
Rules7bit_ascii - Check for 7bit ascii
Only allow characters from the 7bit ASCII set.
abapdoc - Check abapdoc
Various checks regarding abapdoc. Base rule checks for existence of abapdoc for public class methods and all interface methods.
allowed_object_naming - Allowed object naming
Enforces basic name length and namespace restrictions
allowed_object_types - Check allowed object types
Restricts the set of allowed object types.
ambiguous_statement - Check for ambigious statements
Checks for ambiguity between deleting or modifying from internal and database table Add "TABLE" keyword or "@" for escaping SQL variables
avoid_use - Avoid use of certain statements
Detects usage of certain statements.
begin_end_names - Check BEGIN END names
Check BEGIN OF and END OF names match
chain_mainly_declarations - Chain mainly declarations
Chain mainly declarations
check_abstract - Check abstract methods and classes
Checks abstract methods and classes: - class defined as abstract and final, - non-abstract class contains abstract methods
check_comments - Check Comments
Various checks for comment usage.
check_ddic - Check DDIC
Checks the types of DDIC objects can be resolved, the namespace of the development/errors can be configured in "errorNamespace"
check_include - Check INCLUDEs
Checks INCLUDE statements
check_no_handler_pragma - Check if NO_HANDLER can be removed
Checks NO_HANDLER pragmas that can be removed
check_syntax - Check syntax
Enables syntax check and variable resolution
check_text_elements - Check text elements
Check text elements exists or matches code
check_transformation_exists - Check transformation exists
Checks that used XSLT transformations exist.
class_attribute_names - Class attributes naming
Allows you to enforce a pattern, such as a prefix, for class variable names.
cloud_types - Check cloud types
Checks that the package does not contain any object types unsupported in cloud ABAP.
colon_missing_space - Colon missing space
Checks for missing spaces after colons in chained statements.
commented_code - Find commented code
Detects usage of commented out code.
constructor_visibility_public - Check constructor visibility is public
Constructor must be placed in the public section, even if the class is not CREATE PUBLIC.
contains_tab - Code contains tab
Checks for usage of tabs (enable to enforce spaces)
definitions_top - Place definitions in top of routine
Checks that definitions are placed at the beginning of methods.
description_empty - Description in class must exist
Ensures descriptions in class metadata exist.
double_space - Double space
Checks that only a single space follows certain common statements.
empty_line_in_statement - Find empty lines in statements
Checks that statements do not contain empty lines.
empty_statement - Remove emty statement
Checks for empty statements (an empty statement is a single dot)
empty_structure - Find empty blocks
Checks that the code does not contain empty blocks.
exit_or_check - Find EXIT or CHECK outside loops
Detects usages of EXIT or CHECK statements outside of loops. Use RETURN to leave procesing blocks instead.
exporting - EXPORTING can be omitted
Detects EXPORTING statements which can be omitted.
forbidden_identifier - Forbidden Identifier
forbidden_void_type - Forbidden Void Type
Forbid use of specified void types. Inspiration: BOOLEAN, BOOLE_D, CHAR01, CHAR1, CHAR10, CHAR12, CHAR128, CHAR2, CHAR20, CHAR4, CHAR70, DATS, TIMS, DATUM, FLAG, INT4, NUMC3, NUMC4, SAP_BOOL, TEXT25, TEXT80, X255, XFELD
form_no_dash - No dashes in FORM names
Checks for a Dash in form names
form_tables_obsolete - TABLES parameters are obsolete
Checks for TABLES parameters in forms.
fully_type_constants - Fully type constants
Checks constants for full typing - no implicit typing allowed.
functional_writing - Use functional writing
Detects usage of call method when functional style calls can be used.
global_class - Global class checks
Checks related to global classes. * global classes must be in own files * file names must match class name * global classes must be global definitions
identical_form_names - Identical FORM names
Detects identically named FORMs
if_in_if - IF in IF
Detects nested ifs which can be refactored to a single condition using AND.
implement_methods - Implement methods
Chekcs for abstract methods which need implementing.
in_statement_indentation - In-statement indentation
Checks alignment within block statement declarations which span multiple lines, such as multiple conditions in IF statements. Example: IF 1 = 1 AND 2 = 2.
indentation - Indentation
inline_data_old_versions - Inline data, old versions
Checks for inline data declarations in older releases. Only active for versions less than v740sp02
keep_single_parameter_on_one_line - Keep single parameters on one line
Keep single parameter calls on one line
keyword_case - Keyword case
Checks that keywords have the same case. Non-keywords must be lower case.
line_length - Line length
Detects lines exceeding the provided maximum length.
line_only_punc - Line containing only punctuation
Detects lines containing only punctuation.
local_class_naming - Local class naming conventions
Allows you to enforce a pattern, such as a prefix, for local class names.
local_testclass_location - Local testclass location
Checks that local test classes are placed in the test include.
local_variable_names - Local variable naming conventions
Allows you to enforce a pattern, such as a prefix, for local variables, constants and field symbols.
main_file_contents - Main file contents
Checks related to report declarations.
max_one_statement - Max one statement per line
Checks that each line contains only a single statement.
message_exists - Check MESSAGE exists
In message statements, check that the message class + id exist
method_length - Method Length
Checks relating to method length.
method_parameter_names - Method parameter naming conventions
Allows you to enforce a pattern, such as a prefix, for method parameter names
mix_returning - Mix of returning and exporting
Checks that methods don't have a mixture of returning and exporting/changing parameters
msag_consistency - MSAG consistency check
Checks the validity of messages in message classes
nesting - Check nesting depth
Checks for methods exceeding a maximum nesting depth
newline_between_methods - New line between methods
Checks for newlines between method implementations.
no_public_attributes - No public attributes
Checks that classes and interfaces don't contain any public attributes. Exceptions are excluded from this rule.
object_naming - Object naming conventions
Allows you to enforce a pattern, such as a prefix, for object names
obsolete_statement - Obsolete statements
Checks for usages of certain obsolete statements
parser_error - Parser error
Checks for syntax unrecognized by abaplint
prefer_returning_to_exporting - Prefer RETURNING to EXPORTING
Prefer RETURNING to EXPORTING. Generic types cannot be RETURNING.
preferred_compare_operator - Preferred compare operator
Configure undesired operator variants
prefix_is_current_class - Prefix is current class
Reports errors if the current class or interface references itself with "current_class=>"
release_idoc - Release iDoc
Checks idoc types and segments are set to status released
remove_descriptions - Remove descriptions
Ensures you have no descriptions in metadata of methods, parameters, etc. For class descriptions, see rule description_empty.
rfc_error_handling - RFC error handling
Checks that exceptions 'system_failure' and 'communication_failure' are handled in RFC calls
selection_screen_naming - Selection screen naming conventions
Allows you to enforce a pattern, such as a prefix, for selection-screen variable names.
sequential_blank - Sequential blank lines
Checks that code does not contain more than the configured number of blank lines in a row.
short_case - Short CASE
Checks for CASE statements which have fewer than the specified number of branches
sicf_consistency - SICF consistency
Checks the validity of ICF services
space_before_colon - Space before colon
Checks that there are no spaces in front of colons in chained statements.
space_before_dot - Space before dot
Checks for extra spaces before dots at the ends of statements
sql_escape_host_variables - Escape SQL host variables
Escape SQL host variables, from 740sp05
start_at_tab - Start at tab
Checks that statements start at tabstops.
superclass_final - Super class final
Checks that classes which are inherited from are not declared as FINAL.
tabl_enhancement_category - TABL enhancement category must be set
Checks that tables do not have the enhancement category 'not classified'
try_without_catch - TRY without CATCH
Checks for TRY blocks without a CATCH and CLEANUP block
type_begin_single_include - TYPE BEGIN contains single field
Finds TYPE BEGIN with just one INCLUDE TYPE
type_form_parameters - Type FORM parameters
Checks for untyped FORM parameters
types_naming - TYPES naming conventions
Allows you to enforce a pattern for TYPES definitions
unknown_types - Unknown types
Enables check for unknown data types, respects errorNamespace
unreachable_code - Unreachable code
Checks for unreachable code.
unused_variables - Unused variables
Checks for unused variables
use_new - Use NEW
Checks for deprecated CREATE OBJECT statements.
when_others_last - WHEN OTHERS last
Checks that WHEN OTHERS is placed the last within a CASE statement.
whitespace_end - Whitespace at end of line
Checks for redundant whitespace at the end of each line.
xml_consistency - XML consistency
Checks the consistency of main XML files, eg. naming