SonarSource Rules
  • Products

    In-IDE

    Code Quality and Security in your IDE with SonarQube Ide

    IDE extension that lets you fix coding issues before they exist!

    Discover SonarQube for IDE

    SaaS

    Code Quality and Security in the cloud with SonarQube Cloud

    Setup is effortless and analysis is automatic for most languages

    Discover SonarQube Cloud

    Self-Hosted

    Code Quality and Security Self-Hosted with SonarQube Server

    Fast, accurate analysis; enterprise scalability

    Discover SonarQube Server
  • SecretsSecrets
  • ABAPABAP
  • AnsibleAnsible
  • ApexApex
  • AzureResourceManagerAzureResourceManager
  • CC
  • C#C#
  • C++C++
  • CloudFormationCloudFormation
  • COBOLCOBOL
  • CSSCSS
  • DartDart
  • DockerDocker
  • FlexFlex
  • GitHub ActionsGitHub Actions
  • GoGo
  • HTMLHTML
  • JavaJava
  • JavaScriptJavaScript
  • JSONJSON
  • JCLJCL
  • KotlinKotlin
  • KubernetesKubernetes
  • Objective CObjective C
  • PHPPHP
  • PL/IPL/I
  • PL/SQLPL/SQL
  • PythonPython
  • RPGRPG
  • RubyRuby
  • RustRust
  • ScalaScala
  • ShellShell
  • SwiftSwift
  • TerraformTerraform
  • TextText
  • TypeScriptTypeScript
  • T-SQLT-SQL
  • VB.NETVB.NET
  • VB6VB6
  • XMLXML
  • YAMLYAML
ABAP

ABAP static code analysis

Unique rules to find Bugs, Vulnerabilities, Security Hotspots, and Code Smells in your ABAP code

  • All rules 94
  • Vulnerability4
  • Bug14
  • Security Hotspot7
  • Code Smell69
 
Tags
    Impact
      Clean code attribute
        1. "SY-SUBRC" should be checked after an "AUTHORITY-CHECK" statement

           Vulnerability
        2. Authorization checks should not rely on hardcoded user properties

           Vulnerability
        3. "CATCH" clauses should not be empty

           Vulnerability
        4. "BREAK-POINT" statement should not be used in production

           Vulnerability

        "SY-SUBRC" should be checked after an "AUTHORITY-CHECK" statement

        intentionality - complete
        security
        Vulnerability

          Why is this an issue?

          Every AUTHORITY-CHECK statement sets the fields SY-SUBRC (also accessible as SYST-SUBRC) to the authorization check result. Thus SY-SUBRC value should be checked just after every AUTHORITY-CHECK statement.

          Noncompliant code example

          AUTHORITY-CHECK OBJECT 'S_MYOBJ' "Noncompliant
              ID 'ID1' FIELD myvalue.
          

          Compliant solution

          AUTHORITY-CHECK OBJECT 'S_MYOBJ'  "Compliant
              ID 'ID1' FIELD myvalue.
          
            IF sy-subrc <> 0.
              MESSAGE 'NOT AUTHORIZED' TYPE 'E'.
            ENDIF.
          

          Exceptions

          No issue will be raised in the following cases:

          • One or more WRITE operation are performed between the AUTHORITY-CHECK statement and SY-SUBRC check. An exception will be however raised if the WRITE operation is a WRITE ... TO statement, as this will set again SY-SUBRC.
          • SY-SUBRC's value is assigned to a variable. We then assume that it will be checked later.
          AUTHORITY-CHECK OBJECT 'S_MYOBJ'  "Compliant
              ID 'ID1' FIELD myvalue.
          WRITE 'Test' " WRITE is accepted before checking SY-SUBRC
          IF SY-SUBRC <> 0.
              EXIT.
          ENDIF.
          
          AUTHORITY-CHECK OBJECT 'S_MYOBJ'  "Compliant
              ID 'ID1' FIELD myvalue.
          Tmp = SY-SUBRC " Assigning SY-SUBRC value to a variable. We assume that it will be checked later.
          IF Tmp <> 0.
              EXIT.
          ENDIF.
          
            Available In:
          • SonarQube IdeCatch issues on the fly,
            in your IDE
          • SonarQube CloudDetect issues in your GitHub, Azure DevOps Services, Bitbucket Cloud, GitLab repositories
          • SonarQube ServerAnalyze code in your
            on-premise CI
            Developer Edition
            Available Since
            9.1

          © 2008-2025 SonarSource SA. All rights reserved.

          Privacy Policy | Cookie Policy | Terms of Use