Rules which enforce a specific coding style.
Table of Contents AvoidTabCharacterSince: PMD 6.13.0
Priority: Medium (3)
This rule checks, that there are no tab characters (\t
) in the source file. It reports only the first occurrence per file.
Using tab characters for indentation is not recommended, since this requires that every developer uses the same tab with in their editor.
This rule is the PMD equivalent of checkstyleâs FileTabCharacter check.
This rule is defined by the following Java class: net.sourceforge.pmd.lang.plsql.rule.codestyle.AvoidTabCharacterRule
This rule has the following properties:
Name Default Value Description eachLine false Whether to report each line with a tab character or only the first lineUse this rule with the default properties by just referencing it:
<rule ref="category/plsql/codestyle.xml/AvoidTabCharacter" />
Use this rule and customize it:
<rule ref="category/plsql/codestyle.xml/AvoidTabCharacter">
<properties>
<property name="eachLine" value="false" />
</properties>
</rule>
CodeFormat
Since: PMD 6.9.0
Priority: Medium (3)
This rule verifies that the PLSQL code is properly formatted. The following checks are executed:
SQL Queries:
Parameter definitions for procedures:
Variable declarations:
Calling a procedure:
This rule is defined by the following Java class: net.sourceforge.pmd.lang.plsql.rule.codestyle.CodeFormatRule
Example(s):
BEGIN
-- select columns each on a separate line
SELECT cmer_id
,version
,cmp_id
BULK COLLECT INTO v_cmer_ids
,v_versions
,v_cmp_ids
FROM cmer;
-- each parameter on a new line
PROCEDURE create_prospect(
company_info_in IN prospects.company_info%TYPE -- Organization
,firstname_in IN persons.firstname%TYPE -- FirstName
,lastname_in IN persons.lastname%TYPE -- LastName
);
-- more than three parameters, each parameter on a separate line
webcrm_marketing.prospect_ins(
cmp_id_in => NULL
,company_info_in => company_info_in
,firstname_in => firstname_in
,lastname_in => lastname_in
,slt_code_in => NULL
);
END;
This rule has the following properties:
Name Default Value Description indentation 2 Indentation to be used for blocksUse this rule with the default properties by just referencing it:
<rule ref="category/plsql/codestyle.xml/CodeFormat" />
Use this rule and customize it:
<rule ref="category/plsql/codestyle.xml/CodeFormat">
<properties>
<property name="indentation" value="2" />
</properties>
</rule>
ForLoopNaming
Since: PMD 6.7.0
Priority: Medium (3)
In case you have loops please name the loop variables more meaningful.
This rule is defined by the following XPath expression:
//CursorForLoopStatement[
$allowSimpleLoops = false() or
(Statement//CursorForLoopStatement or ancestor::CursorForLoopStatement)
]
/ForIndex[not(matches(@Image, $cursorPattern))]
|
//ForStatement[
$allowSimpleLoops = false() or
(Statement//ForStatement or ancestor::ForStatement)
]
/ForIndex[not(matches(@Image, $indexPattern))]
Example(s):
-- good example
BEGIN
FOR company IN (SELECT * FROM companies) LOOP
FOR contact IN (SELECT * FROM contacts) LOOP
FOR party IN (SELECT * FROM parties) LOOP
NULL;
END LOOP;
END LOOP;
END LOOP;
END;
/
-- bad example
BEGIN
FOR c1 IN (SELECT * FROM companies) LOOP
FOR c2 IN (SELECT * FROM contacts) LOOP
FOR c3 IN (SELECT * FROM parties) LOOP
NULL;
END LOOP;
END LOOP;
END LOOP;
END;
/
This rule has the following properties:
Name Default Value Description allowSimpleLoops false Ignore simple loops, that are not nested cursorPattern [a-zA-Z_0-9]{5,} The pattern used for the cursor loop variable indexPattern [a-zA-Z_0-9]{5,} The pattern used for the index loop variableUse this rule with the default properties by just referencing it:
<rule ref="category/plsql/codestyle.xml/ForLoopNaming" />
Use this rule and customize it:
<rule ref="category/plsql/codestyle.xml/ForLoopNaming">
<properties>
<property name="allowSimpleLoops" value="false" />
<property name="cursorPattern" value="[a-zA-Z_0-9]{5,}" />
<property name="indexPattern" value="[a-zA-Z_0-9]{5,}" />
</properties>
</rule>
LineLength
Since: PMD 6.13.0
Priority: Medium (3)
This rule checks for long lines. Please note that comments are not ignored.
This rule is the PMD equivalent of checkstyleâs LineLength check.
This rule is defined by the following Java class: net.sourceforge.pmd.lang.plsql.rule.codestyle.LineLengthRule
This rule has the following properties:
Name Default Value Description maxLineLength 80 The maximum allowed line length eachLine false Whether to report each line that is longer only the first lineUse this rule with the default properties by just referencing it:
<rule ref="category/plsql/codestyle.xml/LineLength" />
Use this rule and customize it:
<rule ref="category/plsql/codestyle.xml/LineLength">
<properties>
<property name="maxLineLength" value="80" />
<property name="eachLine" value="false" />
</properties>
</rule>
MisplacedPragma
Since: PMD 5.5.2
Priority: Medium (3)
Oracle states that the PRAQMA AUTONOMOUS_TRANSACTION must be in the declaration block, but the code does not complain, when being compiled on the 11g DB. https://docs.oracle.com/cd/B28359_01/appdev.111/b28370/static.htm#BABIIHBJ
This rule is defined by the following XPath expression:
Example(s):
create or replace package inline_pragma_error is
end;
/
create or replace package body inline_pragma_error is
procedure do_transaction(p_input_token in varchar(200)) is
PRAGMA AUTONOMOUS_TRANSACTION; /* this is correct place for PRAGMA */
begin
PRAGMA AUTONOMOUS_TRANSACTION; /* this is the wrong place for PRAGMA -> violation */
/* do something */
COMMIT;
end do_transaction;
end inline_pragma_error;
/
Use this rule by referencing it:
<rule ref="category/plsql/codestyle.xml/MisplacedPragma" />
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4