Maintainability rules
Maintainability refers to the ease with which you can repair, improve and understand software code.
117 are general rules (G- codes) and 21 are APEX rules (A- codes). 10 also apply to PostgreSQL. Start with the highest-severity maintainability rules below, or browse the full list.
Most severe maintainability rules
- G-1080 Avoid using the same expression on both sides of a relational comparison operator or a logical operator. Blocker
- G-1920 Avoid syntax errors. Blocker
- G-2145 Never self-assign a variable. Blocker
- G-2320 Never use VARCHAR data type. Blocker
- G-2330 Never use zero-length strings to substitute NULL. Blocker
- G-3115 Avoid self-assigning a column. Blocker
- G-3120 Always use table aliases when your SQL statement involves more than one source. Blocker
- G-3195 Always use wildcards in a LIKE clause. Blocker
- G-4250 Avoid using identical conditions in different branches of the same IF or CASE statement. Blocker
- G-7330 Always assign values to OUT parameters. Blocker
All 138 maintainability rules
-
G-0010 Always format database code consistently.Minor Maintainability
-
G-1010 Try to label your sub blocks.Minor Maintainability
-
G-1020 Always have a matching loop or block label.Minor Maintainability
-
G-1030 Avoid defining variables that are not used.Minor Maintainability
-
G-1040 Avoid dead code.Minor Maintainability
-
G-1050 Avoid using literals in your code.Minor Maintainability
-
G-1070 Avoid nesting comment blocks.Minor Maintainability
-
G-1080 Avoid using the same expression on both sides of a relational comparison operator or a logical operator.Blocker Maintainability
-
G-1130 Avoid granting table access to API roles.Critical Maintainability
-
G-1140 Avoid granting object privileges directly to connect users.Minor Maintainability
-
G-1220 Avoid composite primary keys.Major Maintainability
-
G-1230 Avoid tables without relationships.Major Maintainability
-
G-1260 Try to define a comment for each table.Info Maintainability
-
G-1270 Try to define a comment for each column.Info Maintainability
-
G-1280 Try to use domains instead of raw datatypes for table columns.Minor Maintainability
-
G-1910 Avoid using the NOSONAR marker.Info Maintainability
-
G-1920 Avoid syntax errors.Blocker Maintainability
-
G-1930 Avoid long parsing times.Info Maintainability
-
G-1940 Avoid long checking times.Info Maintainability
-
G-2120 Try to have a single location to define your types.Minor Maintainability
-
G-2130 Try to use subtypes for constructs used often in your code.Minor Maintainability
-
G-2140 Never initialize variables with NULL.Minor Maintainability
-
G-2145 Never self-assign a variable.Blocker Maintainability
-
G-2170 Never overload variables.Major Maintainability
-
G-2180 Never use quoted identifiers.Major Maintainability
-
G-2185 Avoid using overly short names for explicitly or implicitly declared identifiers.Major Maintainability
-
G-2320 Never use VARCHAR data type.Blocker Maintainability
-
G-2330 Never use zero-length strings to substitute NULL.Blocker Maintainability
-
G-2410 Try to use boolean data type for values with dual meaning.Minor Maintainability
-
G-2510 Avoid using the LONG and LONG RAW data types.Major Maintainability
-
G-2610 Never use self-defined weak ref cursor types.Minor Maintainability
-
G-3115 Avoid self-assigning a column.Blocker Maintainability
-
G-3120 Always use table aliases when your SQL statement involves more than one source.Blocker Maintainability
-
G-3130 Try to use ANSI SQL-92 join syntax.Major Maintainability
-
G-3183 Always specify column aliases instead of expressions in GROUP BY clauses.Minor Maintainability
-
G-3194 Always specify INNER or OUTER within JOIN TO ONE.Major Maintainability
-
G-3195 Always use wildcards in a LIKE clause.Blocker Maintainability
-
G-3320 Try to move transactions within a non-cursor loop into procedures.Major Maintainability
-
G-4110 Always use %NOTFOUND instead of NOT %FOUND to check whether a cursor returned data.Minor Maintainability
-
G-4210 Try to use CASE rather than an IF statement with multiple ELSIF paths.Minor Maintainability
-
G-4220 Try to use CASE rather than DECODE.Major Maintainability
-
G-4250 Avoid using identical conditions in different branches of the same IF or CASE statement.Blocker Maintainability
-
G-4260 Avoid inverting boolean conditions with NOT.Minor Maintainability
-
G-4270 Avoid comparing boolean values to boolean literals.Minor Maintainability
-
G-4310 Never use GOTO statements in your code.Major Maintainability
-
G-4320 Always label your loops.Minor Maintainability
-
G-4325 Never reuse labels in inner scope.Major Maintainability
-
G-4330 Always use a CURSOR FOR loop to process the complete cursor results unless you are using bulk operations.Major Maintainability
-
G-4340 Always use a NUMERIC FOR loop to process a dense array.Major Maintainability
-
G-4365 Never use unconditional CONTINUE or EXIT in a loop.Major Maintainability
-
G-4370 Avoid using EXIT to stop loop processing unless you are in a basic loop.Major Maintainability
-
G-4375 Always use EXIT WHEN instead of an IF statement to exit from a loop.Minor Maintainability
-
G-4380 Try to label your EXIT WHEN statements.Minor Maintainability
-
G-4385 Never use a cursor for loop to check whether a cursor returns data.Critical Maintainability
-
G-4395 Avoid hard-coded upper or lower bound values with FOR loops.Minor Maintainability
-
G-5020 Never handle unnamed exceptions using the error number.Critical Maintainability
-
G-5050 Avoid use of the RAISE_APPLICATION_ERROR built-in procedure with a hard-coded 20nnn error number or hard-coded message.Major Maintainability
-
G-5080 Always use FORMAT_ERROR_BACKTRACE when using FORMAT_ERROR_STACK or SQLERRM.Critical Maintainability
-
G-6010 Always use a character variable to execute dynamic SQL.Major Maintainability
-
G-6020 Try to use output bind arguments in the RETURNING INTO clause of dynamic DML statements rather than the USING clause.Minor Maintainability
-
G-7110 Try to use named notation when calling program units.Major Maintainability
-
G-7120 Always add the name of the program unit to its end keyword.Minor Maintainability
-
G-7125 Always use CREATE OR REPLACE instead of CREATE alone.Major Maintainability
-
G-7127 Always use the FORCE option when creating views.Major Maintainability
-
G-7140 Always ensure that locally defined procedures or functions are referenced.Major Maintainability
-
G-7150 Try to remove unused parameters.Major Maintainability
-
G-7180 Try to keep the complexity of functions, procedures and triggers simple.Critical Maintainability
-
G-7220 Always use forward declaration for private functions and procedures.Minor Maintainability
-
G-7310 Avoid standalone procedures – put your procedures in packages.Minor Maintainability
-
G-7320 Avoid using RETURN statements in a PROCEDURE.Major Maintainability
-
G-7330 Always assign values to OUT parameters.Blocker Maintainability
-
G-7410 Avoid standalone functions – put your functions in packages.Minor Maintainability
-
G-7420 Always make the RETURN statement the last statement of your function.Major Maintainability
-
G-7430 Try to use no more than one RETURN statement within a function.Major Maintainability
-
G-7440 Never use OUT parameters to return values from a function.Major Maintainability
-
G-7450 Never return a NULL value from a BOOLEAN function.Blocker Maintainability
-
G-7520 Avoid using deprecated units in your own code.Major Maintainability
-
G-7710 Avoid cascading triggers.Major Maintainability
-
G-7720 Never use multiple UPDATE OF in trigger event clause.Blocker Maintainability
-
G-8210 Always use synonyms when accessing objects of another application schema.Minor Maintainability
-
G-8310 Always validate input parameter size by assigning the parameter to a size limited variable in the declaration section of program unit.Minor Maintainability
-
G-9030 Try to define a default value on conversion errors.Major Maintainability
-
G-9101 Always follow naming conventions for global variables.Minor Maintainability
-
G-9102 Always follow naming conventions for local variables.Minor Maintainability
-
G-9103 Always follow naming conventions for cursor variables.Minor Maintainability
-
G-9104 Always follow naming conventions for record variables.Minor Maintainability
-
G-9105 Always follow naming conventions for collection variables (arrays/tables).Minor Maintainability
-
G-9106 Always follow naming conventions for object variables.Minor Maintainability
-
G-9107 Always follow naming conventions for cursor parameters.Minor Maintainability
-
G-9108 Always follow naming conventions for IN parameters of functions and procedures.Minor Maintainability
-
G-9109 Always follow naming conventions for OUT parameters of functions and procedures.Minor Maintainability
-
G-9110 Always follow naming conventions for IN/OUT parameters of functions and procedures.Minor Maintainability
-
G-9111 Always follow naming conventions for record type definitions.Minor Maintainability
-
G-9112 Always follow naming conventions for collection type definitions (arrays/tables).Minor Maintainability
-
G-9113 Always follow naming conventions for exceptions.Minor Maintainability
-
G-9114 Always follow naming conventions for constants.Minor Maintainability
-
G-9115 Always follow naming conventions for subtypes.Minor Maintainability
-
G-9116 Always follow naming conventions for record fields.Minor Maintainability
-
G-9201 Always follow naming conventions for tables.Minor Maintainability
-
G-9202 Always follow naming conventions for table/view columns.Minor Maintainability
-
G-9203 Always follow naming conventions for indexes.Minor Maintainability
-
G-9204 Always follow naming conventions for primary key constraints.Minor Maintainability
-
G-9205 Always follow naming conventions for unique constraints.Minor Maintainability
-
G-9206 Always follow naming conventions for foreign key constraints.Minor Maintainability
-
G-9207 Always follow naming conventions for check constraints.Minor Maintainability
-
G-9208 Always follow naming conventions for assertions.Minor Maintainability
-
G-9209 Always follow naming conventions for global temporary tables.Minor Maintainability
-
G-9210 Always follow naming conventions for views.Minor Maintainability
-
G-9211 Always follow naming conventions for sequences.Minor Maintainability
-
G-9212 Always follow naming conventions for synonyms.Minor Maintainability
-
G-9213 Always follow naming conventions for triggers.Minor Maintainability
-
G-9214 Always follow naming conventions for PL/SQL packages.Minor Maintainability
-
G-9215 Always follow naming conventions for functions.Minor Maintainability
-
G-9216 Always follow naming conventions for procedures.Minor Maintainability
-
G-9217 Always follow naming conventions for object types.Minor Maintainability
-
G-9218 Always follow naming conventions for object type attributes.Minor Maintainability
-
G-9219 Always follow naming conventions for collection types.Minor Maintainability
-
A-0730 Always give an alias to pages.Minor Maintainability
-
A-0950 Always follow naming conventions for application items.Minor Maintainability
-
A-0960 New Try to give modal dialogs a Cancel button.Minor Maintainability
-
A-0980 New Try to set the compatibility mode to the latest version.Minor Maintainability
-
A-0990 New Always name buttons in uppercase.Minor Maintainability
-
A-1060 New Try to assign applications to an application group.Minor Maintainability
-
A-1080 New Avoid defining CSS inline at page level.Minor Maintainability
-
A-1120 New Always define an icon for buttons using an icon template.Minor Maintainability
-
A-1130 Always follow naming conventions for page items.Minor Maintainability
-
A-1140 New Try to assign pages to a page group.Minor Maintainability
-
A-1250 New Avoid components with the condition type "Never".Minor Maintainability
-
A-1400 New Never keep the default name New for components.Minor Maintainability
-
A-1680 New Always define an ordering for reporting regions.Minor Maintainability
-
A-1860 New Avoid NOT NULL validations; use the item's Value Required setting.Minor Maintainability
-
A-2420 New Avoid regions without a template.Minor Maintainability
-
A-2430 New Avoid page items without a label template.Minor Maintainability
-
A-3070 New Try to define a default value for Interactive Grid checkbox and switch columns.Minor Maintainability
-
A-3100 New Avoid LOV items on single-column Interactive Grid primary keys.Minor Maintainability
-
A-3150 New Avoid a null entry on required LOV items and Interactive Grid columns.Minor Maintainability
-
A-3160 New Try to give regions an HTML DOM ID.Minor Maintainability
-
A-3190 New Try to use a required label template for required page items.Minor Maintainability
138 total
More ways to browse rules
- Trivadis PL/SQL & SQL guideline rules - Rules that implement the Trivadis coding guidelines.
- OWASP-related security rules - Rules that name an OWASP Top 10 risk category.
- Oracle APEX rules - Checks for APEX applications, pages, items and regions.
- PostgreSQL rules - Rules that also apply to PostgreSQL and PL/pgSQL.
- Security rules - All rules in the Security quality area.
- Reliability rules - Rules that prevent bugs and failures at run time.
- Rules by severity - From Blocker to Info.
- Rule profiles - Essential to Extreme: which rules are checked.
- Rules by tag - Topics such as SQL, performance and naming.
- All rules - Search and filter the complete rule set.