abaplint rules documentation

abaplint 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.

94 Rules

quick fix

7bit_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 naming
Enforces basic name length and namespace restrictions, see note 104010

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 styleguide
Detects usage of certain statements.

begin_end_names - Check BEGIN END names quick fix syntax
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 styleguide
Various checks for comment usage.

check_ddic - Check DDIC syntax
Checks the types of DDIC objects can be resolved, the namespace of the development/errors can be configured in "errorNamespace"

check_include - Check INCLUDEs syntax
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 experimental 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 syntax
Checks that used XSLT transformations exist.

class_attribute_names - Class attributes naming 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 quick fix whitespace
Checks for missing spaces after colons in chained statements.

commented_code - Find commented code styleguide
Detects usage of commented out code.

constructor_visibility_public - Check constructor visibility is public styleguide
Constructor must be placed in the public section, even if the class is not CREATE PUBLIC.

contains_tab - Code contains tab quick fix whitespace
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 quick fix whitespace
Checks that only a single space follows certain common statements.

downport - Downport statement quick fix experimental downport
Experimental downport functionality

empty_line_in_statement - Find empty lines in statements
Checks that statements do not contain empty lines.

empty_statement - Remove emty statement quick fix
Checks for empty statements (an empty statement is a single dot)

empty_structure - Find empty blocks styleguide
Checks that the code does not contain empty blocks.

exit_or_check - Find EXIT or CHECK outside loops styleguide
Detects usages of EXIT or CHECK statements outside of loops. Use RETURN to leave procesing blocks instead.

exporting - EXPORTING can be omitted quick fix styleguide
Detects EXPORTING statements which can be omitted.

forbidden_identifier - Forbidden Identifier
Forbid use of specified identifiers, list of regex.

forbidden_void_type - Forbidden Void Type
Forbid use of specified void types.

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 styleguide
Detects usage of call method when functional style calls can be used.

global_class - Global class checks syntax
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 styleguide
Detects nested ifs which can be refactored to a single condition using AND.

implement_methods - Implement methods syntax
Chekcs for abstract methods and methods from interfaces which need implementing.

in_statement_indentation - In-statement indentation whitespace
Checks alignment within block statement declarations which span multiple lines, such as multiple conditions in IF statements.

indentation - Indentation whitespace
Checks indentation

inline_data_old_versions - Inline data, old versions syntax
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 whitespace styleguide
Keep single parameter calls on one line

keyword_case - Keyword case styleguide
Checks that keywords have the same case. Non-keywords must be lower case.

line_break_multiple_parameters - Line break multiple parameters quick fix whitespace styleguide
Line break multiple parameters

line_length - Line length styleguide
Detects lines exceeding the provided maximum length.

line_only_punc - Line containing only punctuation quick fix styleguide
Detects lines containing only punctuation.

local_class_naming - Local class naming conventions naming
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 naming
Allows you to enforce a pattern, such as a prefix, for local variables, constants and field symbols. Regexes are case-insensitive.

main_file_contents - Main file contents
Checks related to report declarations.

max_one_statement - Max one statement per line quick fix styleguide
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 naming
Allows you to enforce a pattern, such as a prefix, for method parameter names

mix_returning - Mix of returning and exporting styleguide
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 styleguide
Checks for methods exceeding a maximum nesting depth

newline_between_methods - New line between methods whitespace
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 naming
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 syntax
Checks for syntax unrecognized by abaplint

prefer_inline - Prefer Inline Declarations experimental upport styleguide
Prefer inline to up-front declarations. Activates if language version is v740sp02 or above. Variables must be local(METHOD or FORM). No generic or void typed variables. First position used must be a full/pure write.

prefer_returning_to_exporting - Prefer RETURNING to EXPORTING styleguide
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 quick fix styleguide
Reports errors if the current class or interface references itself with "current_class=>"

reduce_string_templates - Reduce string templates
Checks for string templates

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 naming
Allows you to enforce a pattern, such as a prefix, for selection-screen variable names.

sequential_blank - Sequential blank lines quick fix whitespace
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: * Class defined in handler must exist * Class must not have any syntax errors * Class must implement interface IF_HTTP_EXTENSION

space_before_colon - Space before colon whitespace
Checks that there are no spaces in front of colons in chained statements.

space_before_dot - Space before dot quick fix whitespace
Checks for extra spaces before dots at the ends of statements

sql_escape_host_variables - Escape SQL host variables upport styleguide
Escape SQL host variables, from 740sp05

start_at_tab - Start at tab whitespace styleguide
Checks that statements start at tabstops.

superclass_final - Super class final syntax
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 naming
Allows you to enforce a pattern for TYPES definitions

unknown_types - Unknown types experimental syntax
Enables check for unknown data types, respects errorNamespace

unreachable_code - Unreachable code
Checks for unreachable code.

unused_variables - Unused variables quick fix experimental
Checks for unused variables

use_new - Use NEW quick fix upport styleguide
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 quick fix whitespace
Checks for redundant whitespace at the end of each line.

xml_consistency - XML consistency
Checks the consistency of main XML files, eg. naming