Skip to content

PL/SQL Cop for SQL Developer v2.0.1

Compare
Choose a tag to compare
@PhilippSalvisberg PhilippSalvisberg released this 20 Dec 16:26
  • Released on 2017-02-05
  • New:
    • Supporting Trivadis PL/SQL & SQL Coding Guidelines Version 3.2
      • New guideline numbering scheme
      • 13 new guidelines
        • Check implemented:
          • G-2230: 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.
        • Check not yet implemented (requires CREATE TABLE and ALTER TABLE parser support, see ticket PLSQLCOP-212):
          • G-3160: Avoid virtual columns to be visible.
          • G–3170: Always use DEFAULT ON NULL declarations to assign default values to table columns if you refuse to store NULL values.
        • Check not planned to be implemented (checks per source file are not suited for this kind of guidelines):
          • 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
      • Guidelines categorised by Severity: Blocker (2), Critical (7), Major (46), Minor (37), Info (1)
      • Guidelines assigned to one or more SQALE characteristics: Changeability (10), Efficiency (20), Maintainability (48), Portability (7), Reliability (34), Reusability (3), Security (1), Testability (11)
      • Guidelines assigned to one of the 31 SQALE subcharacteristics supported by SonarQube.
      • Defined effort to solve for every guidelines using a remediation functions supported by SonarQube.
      • Severity and SQALE characteristics are included in HTML and Excel outputs, issues are ordered by severity (Blocker, Critical, Major, Minor, Info)
      • Provided guideline example files include the new bad and good examples according Trivadis PL/SQL & SQL Coding Guidelines Version 3.2 and have been renamed to include the version 3 and version 2 guideline identifiers, e.g. guideline_2150_12.sql
    • Extended valid values for check and skip command line options
      • Severities (blocker, critical, major, minor, info) may be used in check and skip lists
      • SQALE characteristics (changeability, efficiency, maintainability, portability, reliability, reusability, security, testability) may used in check and skip list
      • Guideline numbers, severities and SQALE characteristics may be combined in check and skip lists
    • Validators are plug-ins now, the following validators are included:
      • com.trivadis.tvdcc.validators.TrivadisGuidelines3 – Trivadis PL/SQL & SQL Coding Guidelines Version 3.2 (default)
      • com.trivadis.tvdcc.validators.TrivadisGuidelines2 – Trivadis PL/SQL & SQL Coding Guidelines Version 2.0
      • com.trivadis.oracle.plsql.validation.EmptyPLSQLJavaValidator – validator without checks, useful to produce code metrics only
    • New preferences validator and plugin path to configure provided and custom validators
  • Fixed:
    • McCabe’s cyclomatic complexity metric increased wrongly by ELSE in IF/CASE branches, by PL/SQL blocks and by GOTO statements
    • Guideline 3120 (27) does not detect correlated subqueries without alias
    • Guideline 4340 (42) does not detect collection method COUNT in basic loop statements when used with empty parenthesis ()
    • Guideline 4350 (43) and guideline 4360 (44) are not handled as mutually exclusive, but they are
    • Guideline 4395 (50) false negatives when using “..” operator without leading space in for loops
    • Guideline 5060 (56) false positives if more than one exception is defined in an exception handler
    • Guideline 7110 (60) does not detect missing named notation when calling program units with a single parameter
    • Guideline 7130 (62) false positives and false negatives in various cases
    • single_table_insert with values_clause leads to parse errors in SQL scripts if terminated by slash instead of semicolon
    • greater equal (>=) and less equal (<=) are reported as less than (<)