AvoidDmlStatementsInLoops
Since: PMD 5.5.0
Priority: Medium (3)
Avoid DML statements inside loops to avoid hitting the DML governor limit. Instead, try to batch up the data into a list and invoke your DML once on that list of data outside the loop.
This rule is defined by the following Java class: net.sourceforge.pmd.lang.apex.rule.performance.AvoidDmlStatementsInLoopsRule
Example(s):
public class Something {
    public void foo() {  
        for (Integer i = 0; i < 151; i++) {
            Account account;
            // ...
            insert account;
        }
    }
}
This rule has the following properties:
| Name | Default Value | Description | Multivalued | 
|---|---|---|---|
| cc_categories | Performance | Deprecated Code Climate Categories | yes. Delimiter is ‘|’. | 
| cc_remediation_points_multiplier | 150 | Deprecated Code Climate Remediation Points multiplier | no | 
| cc_block_highlighting | false | Deprecated Code Climate Block Highlighting | no | 
Use this rule with the default properties by just referencing it:
<rule ref="category/apex/performance.xml/AvoidDmlStatementsInLoops" />
AvoidSoqlInLoops
Since: PMD 5.5.0
Priority: Medium (3)
New objects created within loops should be checked to see if they can created outside them and reused.
This rule is defined by the following Java class: net.sourceforge.pmd.lang.apex.rule.performance.AvoidSoqlInLoopsRule
Example(s):
public class Something {
    public static void main( String as[] ) {
        for (Integer i = 0; i < 10; i++) {
            List<Account> accounts = [SELECT Id FROM Account];
        }
    }
}
This rule has the following properties:
| Name | Default Value | Description | Multivalued | 
|---|---|---|---|
| cc_categories | Performance | Deprecated Code Climate Categories | yes. Delimiter is ‘|’. | 
| cc_remediation_points_multiplier | 150 | Deprecated Code Climate Remediation Points multiplier | no | 
| cc_block_highlighting | false | Deprecated Code Climate Block Highlighting | no | 
Use this rule with the default properties by just referencing it:
<rule ref="category/apex/performance.xml/AvoidSoqlInLoops" />
AvoidSoslInLoops
Since: PMD 6.0.0
Priority: Medium (3)
Sosl calls within loops can cause governor limit exceptions.
This rule is defined by the following Java class: net.sourceforge.pmd.lang.apex.rule.performance.AvoidSoslInLoopsRule
Example(s):
public class Something {
    public static void main( String as[] ) {
        for (Integer i = 0; i < 10; i++) {
            List<List<SObject>> searchList = [FIND 'map*' IN ALL FIELDS RETURNING Account (Id, Name), Contact, Opportunity, Lead];
        }
    }
}
This rule has the following properties:
| Name | Default Value | Description | Multivalued | 
|---|---|---|---|
| cc_categories | Performance | Deprecated Code Climate Categories | yes. Delimiter is ‘|’. | 
| cc_remediation_points_multiplier | 150 | Deprecated Code Climate Remediation Points multiplier | no | 
| cc_block_highlighting | false | Deprecated Code Climate Block Highlighting | no | 
Use this rule with the default properties by just referencing it:
<rule ref="category/apex/performance.xml/AvoidSoslInLoops" />