pmd/pmd

[apex] ApexCRUDViolation on Lists of Objects

Chiusa

#3877 aperta il 28 mar 2022

 (7 commenti) (0 reazioni) (0 assegnatari)Java (1461 fork)batch import
a:false-positivegood first issue

Metriche repository

Star
 (4544 stelle)
Metriche merge PR
 (Merge medio 3g 19h) (78 PR mergiate in 30 g)

Descrizione

Affects PMD Version: 6.42.0+ 7.0.0

Rule: ApexCRUDViolation

Description: I'm getting the "Validate CRUD permission before SOQL/DML operation" error when updating a list of a custom object, but not on the individual.

Code Sample demonstrating the issue:

public static CustomObject__c updateCustomObject(CustomObject__c customObject) {
    if (CustomObject__c.getSObjectType().getDescribe().isUpdateable() == false) {
        throw new DmlException('No permissions to update.');
    }

    // This is fine with no PMD Error
    update resultObject;
    return resultObject;
}

public static List<CustomObject__c> updateCustomObjects(List<CustomObject__c> customObjects) {
    if (CustomObject__c.getSObjectType().getDescribe().isUpdateable() == false) {
        throw new DmlException('No permissions to update.');
    }

    // Getting PMD Error: Validate CRUD permission before SOQL/DML operation
    update resultObjects;
    return resultObjects;
}

Expected outcome: PMD reports a violation at line ..., but that's wrong. That's a false positive. Since I've checked the object is Updateable, shouldn't that apply to individuals and lists

Running PMD through: [CLI | Ant | Maven | Gradle | Designer | Other] ApexPMD Extension in VSCode - chuckjonas.apex-pmd (https://marketplace.visualstudio.com/items?itemName=chuckjonas.apex-pmd)

Guida contributor