PL/SQL Cop for SonarQube – Changelog


General Availability (GA) Releases of Trivadis PL/SQL Cop for SonarQube

Version 2.1.2


  • Fixed:
    • Non-default activation severities are not considered when creating issues

Version 2.1.1


  • New:
    • Guidelines (rules) updated to include a reason
  • Fixed:
    • Various formatting issues

Version 2.0.0


      • New:
        • Supporting Trivadis PL/SQL & SQL Coding Guidelines Version 3.2
          • New rule numbering scheme
          • 13 new rules
            • G-5010: Try to use a error/logging framework for your application.
            • G-8410: Always use application locks to ensure a program unit only running once at a given time.
            • G-8420: Always use dbms_application_info to track program process transiently
            • G-3160: Avoid virtual columns to be visible.
            • G3170: Always use DEFAULT ON NULL declarations to assign default values to table columns if you refuse to store NULL values.
            • G2230: Try to use SIMPLE_INTEGER datatype when appropriate.
            • G-3150: Try to use identity columns for surrogate keys.
            • G-3180: Always specify column names instead of positional references in ORDER BY clauses.
            • G-3190: Avoid using NATURAL JOIN.
            • G-7460: Try to define your packaged/standalone function to be deterministic if appropriate.
            • G-7810: Do not use SQL inside PL/SQL to read sequence numbers (or SYSDATE)
            • G-8120: Never check existence of a row to decide whether to create it or not.
            • G-8310: Always validate input parameter size by assigning the parameter to a size limited variable in the declaration section of program unit.
          • PL/SQL Cop errors included as rules
            • E-0001: Timeout occurred (after n seconds) during load/parse/validation of resource.
            • E-0002: Syntax error. Please contact the author if the code compiles successfully in your environment.
            • E-0003: License limit reached.
          • Rules and quality profiles for non-default validators are loaded from PL/SQL Cop genmodel directory when starting SonarQube
          • Severity and SQALE characteristics are included in HTML and Excel outputs, issues are ordered by severity (Blocker, Critical, Major, Minor, Info)
        • New Preferences
          • Generate SonarQube model – Generate SonarQube XML model files for non-default validator
          • Validator class – Decendent of PLSQLJavaValidator, default is com.trivadis.tvdcc.validators.TrivadisGuidelines3
      • Fixed:
        • Analysis stops when PL/SQL Cop throws an error or when reported rule is unknown
      • Prerequisites:
        • PL/SQL Cop 2.0
        • SonarQube version 4.5.7 up to 5.1.2


      • Fixed issues calling the command line utility with multiple file extension Windows. The filter parameter needs to be double quoted in this case.

Version 1.0.2


      • Fixed wrong issues severity. The severity of an issue is now reported according categorisation within SonarQube. This leads to a different and better SQALE rating.

Version 1.0.1


      • Support Non-Windows SonarQube installations
      • Fixed typos in settings page

Version 1.0.0


    • Initial GA Release
    • Checks for compliance of guidelines in Trivadis PL/SQL & SQL Coding Guidelines Version 2.0 and stores issues in the SonarQube database
    • Stores standard SonarQube metrics in the SonarQube database
      • Lines (incl. blank lines and comment lines)
      • Lines of Code (lines without blank lines and without comment lines)
      • Comment lines
      • Functions (PL/SQL units)
      • Statements
      • Complexity (Max. Cyclomatic Complexity)
    • Stores additional PL/SQL Cop file metrics in the SonarQube database
      • Max. Cyclomatic Complexity (redundant to Complexity)
      • Max. Halstead Volume
      • Min. maintainability index (MI)
      • Number of blank lines
      • Number of bytes
      • Number of commands
      • Number of comment lines (redundant to Comment lines)
      • Processing time in seconds
    • Tested on SonarQube 4.5.7 and SonarQube 5.1.2
    • SonarQube 5.2 and higher is currently not supported