afv-library/skills/running-code-analyzer/examples/fix-application-before-after.md

3.4 KiB

Fix Application: Before & After

This example demonstrates engine-provided auto-fix behavior on a small codebase.

Initial Scan Results

Command:

sf code-analyzer run --rule-selector Recommended --output-file ./results.json --include-fixes

Summary:

  • Total violations: 248
  • Fixable violations: 67 (27%)

Fixable Rules

Rule Engine Severity Count
no-var eslint 3 42
prefer-const eslint 3 18
@salesforce-ux/slds/no-hardcoded-values-slds2 eslint 4 5
no-extra-boolean-cast eslint 3 2

Before Fix: Sample Violations

Violation 1: no-var

File: force-app/main/default/lwc/accountCard/accountCard.js:12

export default class AccountCard extends LightningElement {
    handleClick() {
        var accountId = this.recordId;  // ← violation
        var data = this.fetchData(accountId);  // ← violation
        this.processData(data);
    }
}

Violation 2: prefer-const

File: force-app/main/default/lwc/utils/dataProcessor.js:8

export function processRecords(records) {
    let result = [];  // ← violation (never reassigned)
    records.forEach(r => result.push(transform(r)));
    return result;
}

Violation 3: @salesforce-ux/slds/no-hardcoded-values-slds2

File: force-app/main/default/lwc/accountCard/accountCard.css:4

.account-card {
    border-radius: 4px;  /* ← violation */
    padding: 16px;  /* ← violation */
}

Apply Fixes

Command:

node <skill_dir>/scripts/apply-fixes.js ./results.json

Output:

{
  "success": true,
  "filesModified": 15,
  "fixesApplied": 67,
  "fixesSkipped": 0
}

After Fix: Corrected Code

Fix 1: no-var → let

File: force-app/main/default/lwc/accountCard/accountCard.js:12

export default class AccountCard extends LightningElement {
    handleClick() {
        let accountId = this.recordId;  // ✓ fixed
        let data = this.fetchData(accountId);  // ✓ fixed
        this.processData(data);
    }
}

Fix 2: let → const

File: force-app/main/default/lwc/utils/dataProcessor.js:8

export function processRecords(records) {
    const result = [];  // ✓ fixed
    records.forEach(r => result.push(transform(r)));
    return result;
}

Fix 3: Hardcoded values → SLDS tokens

File: force-app/main/default/lwc/accountCard/accountCard.css:4

.account-card {
    border-radius: var(--slds-c-card-radius-border);  /* ✓ fixed */
    padding: var(--slds-c-card-spacing-block);  /* ✓ fixed */
}

Verification Scan

Command:

sf code-analyzer run --rule-selector Recommended --output-file ./results-after.json --include-fixes

Summary:

  • Total violations: 181 (↓ 67 from 248)
  • Fixable violations: 0

Result: All 67 fixable violations resolved. Remaining 181 violations require manual fixes (e.g., ApexDoc comments, CRUD checks).


Key Takeaways

  1. Engine-provided fixes are safe: They're deterministic transformations, not AI-generated code.
  2. Apply, then verify: Always re-scan after applying fixes to confirm no regressions.
  3. Not all violations are fixable: Security issues like CRUD violations require manual code review.
  4. Files modified count ≠ fixes count: Multiple violations in one file count as one file modification.