ChuckJonas / vscode-apex-pmd

PMD static analysis for Apex in vscode
MIT License
81 stars 88 forks source link

Static Analysis Failed - Cannot load ruleset #140

Closed NagarjunaParala closed 1 year ago

NagarjunaParala commented 1 year ago

Static Analysis Failed. Error Details: PMD Command Failed! Enable "Show StdErr" setting for more info.

ChuckJonas commented 1 year ago

can you please Enable "Show StdErr" and copy the results from the output panel?

derrick-ejan-rs commented 1 year ago

I am getting the same error using v0.6.0. I have to roll back to version 0.5.9 for it to not error.

adangel commented 1 year ago

Do you have by any chance configured pmdBinPath? If so, please clear this setting.

https://github.com/ChuckJonas/vscode-apex-pmd/blob/bc306a3e7568c648142828875c49e21119b06af2/CHANGELOG#L10

derrick-ejan-rs commented 1 year ago

@adangel never set anything and its clear.
image

adangel commented 1 year ago

@derrick-ejan-rs thanks for the response. Then

can you please Enable "Show StdErr" and copy the results from the output panel?

Without an error message there is nothing I can do to help you.

adangel commented 1 year ago

By the way: are you using windows, linux or macos?

derrick-ejan-rs commented 1 year ago

@adangel it actually has always been enabled for me.

image

`Analyzing c:\Users\derrick.ejan\Documents\sfdx\force-app\main\default\classes\ApprovalRequestController.cls Analyzing c:\Users\derrick.ejan\Documents\sfdx\force-app\main\default\classes\ApprovalRequestController.cls Analyzing c:\Users\derrick.ejan\Documents\sfdx\force-app\main\default\classes\ApprovalRequestController.cls stderr:[main] INFO net.sourceforge.pmd.cli.commands.internal.AbstractPmdSubcommand - Log level is at INFO [main] WARN net.sourceforge.pmd.cli.commands.internal.PmdCommand - Warning at c:\Users\derrick.ejan\Documents\sfdx\pmd\ruleref.xml:101:3 99| 100| 101| <rule ^^^^^ Discontinue using Rule name category/apex/performance.xml/AvoidSoqlInLoops as it is scheduled for removal from PMD. PMD 8.0.0 will remove support for this Rule.

102| ref="category/apex/performance.xml/AvoidSoqlInLoops" 103| message="Avoid Soql queries inside loops" [main] WARN net.sourceforge.pmd.cli.commands.internal.PmdCommand - Warning at c:\Users\derrick.ejan\Documents\sfdx\pmd\ruleref.xml:108:3 106| 107| 108| <rule ^^^^^ Discontinue using Rule name category/apex/performance.xml/AvoidSoslInLoops as it is scheduled for removal from PMD. PMD 8.0.0 will remove support for this Rule.

109| ref="category/apex/performance.xml/AvoidSoslInLoops" 110| message="Avoid Sosl queries inside loops" [main] WARN net.sourceforge.pmd.cli.commands.internal.PmdCommand - Warning at c:\Users\derrick.ejan\Documents\sfdx\pmd\ruleref.xml:115:3 113| 114| 115| <rule ^^^^^ Discontinue using Rule name category/apex/performance.xml/AvoidDmlStatementsInLoops as it is scheduled for removal from PMD. PMD 8.0.0 will remove support for this Rule.

116| ref="category/apex/performance.xml/AvoidDmlStatementsInLoops" 117| message="Avoid DML Statements inside loops" [main] ERROR net.sourceforge.pmd.cli.commands.internal.PmdCommand - Error at c:\Users\derrick.ejan\Documents\sfdx\pmd\ruleref.xml:179:3 177| 178| 179| <rule ^^^^^ Unable to find referenced rule VariableNamingConventions; perhaps the rule name is misspelled?

180| ref="category/apex/codestyle.xml/VariableNamingConventions" 181| message="{0} variable {1} should begin with {2}" [main] WARN net.sourceforge.pmd.cli.commands.internal.PmdCommand - Warning at c:\Users\derrick.ejan\Documents\sfdx\pmd\ruleref.xml:228:3 226| 227| 228| <rule ^^^^^ Use Rule name category/apex/errorprone.xml/ApexCSRF instead of the deprecated Rule name category/apex/security.xml/ApexCSRF. PMD 8.0.0 will remove support for this deprecated Rule name usage.

229| ref="category/apex/security.xml/ApexCSRF" 230| message="Avoid making DML operations in Apex class constructor/init method" [main] ERROR net.sourceforge.pmd.cli.commands.internal.PmdCommand - Cannot load ruleset c:\Users\derrick.ejan\Documents\sfdx\pmd\ruleref.xml: An XML validation error occurred

stderr:[main] INFO net.sourceforge.pmd.cli.commands.internal.AbstractPmdSubcommand - Log level is at INFO [main] WARN net.sourceforge.pmd.cli.commands.internal.PmdCommand - Warning at c:\Users\derrick.ejan\Documents\sfdx\pmd\ruleref.xml:101:3 99| 100| 101| <rule ^^^^^ Discontinue using Rule name category/apex/performance.xml/AvoidSoqlInLoops as it is scheduled for removal from PMD. PMD 8.0.0 will remove support for this Rule.

102| ref="category/apex/performance.xml/AvoidSoqlInLoops" 103| message="Avoid Soql queries inside loops" [main] WARN net.sourceforge.pmd.cli.commands.internal.PmdCommand - Warning at c:\Users\derrick.ejan\Documents\sfdx\pmd\ruleref.xml:108:3 106| 107| 108| <rule ^^^^^ Discontinue using Rule name category/apex/performance.xml/AvoidSoslInLoops as it is scheduled for removal from PMD. PMD 8.0.0 will remove support for this Rule.

109| ref="category/apex/performance.xml/AvoidSoslInLoops" 110| message="Avoid Sosl queries inside loops" [main] WARN net.sourceforge.pmd.cli.commands.internal.PmdCommand - Warning at c:\Users\derrick.ejan\Documents\sfdx\pmd\ruleref.xml:115:3 113| 114| 115| <rule ^^^^^ Discontinue using Rule name category/apex/performance.xml/AvoidDmlStatementsInLoops as it is scheduled for removal from PMD. PMD 8.0.0 will remove support for this Rule.

116| ref="category/apex/performance.xml/AvoidDmlStatementsInLoops" 117| message="Avoid DML Statements inside loops" [main] ERROR net.sourceforge.pmd.cli.commands.internal.PmdCommand - Error at c:\Users\derrick.ejan\Documents\sfdx\pmd\ruleref.xml:179:3 177| 178| 179| <rule ^^^^^ Unable to find referenced rule VariableNamingConventions; perhaps the rule name is misspelled?

180| ref="category/apex/codestyle.xml/VariableNamingConventions" 181| message="{0} variable {1} should begin with {2}" [main] WARN net.sourceforge.pmd.cli.commands.internal.PmdCommand - Warning at c:\Users\derrick.ejan\Documents\sfdx\pmd\ruleref.xml:228:3 226| 227| 228| <rule ^^^^^ Use Rule name category/apex/errorprone.xml/ApexCSRF instead of the deprecated Rule name category/apex/security.xml/ApexCSRF. PMD 8.0.0 will remove support for this deprecated Rule name usage.

229| ref="category/apex/security.xml/ApexCSRF" 230| message="Avoid making DML operations in Apex class constructor/init method" [main] ERROR net.sourceforge.pmd.cli.commands.internal.PmdCommand - Cannot load ruleset c:\Users\derrick.ejan\Documents\sfdx\pmd\ruleref.xml: An XML validation error occurred

Failed Exit Code: 1 Failed Exit Code: 1 stderr:[main] INFO net.sourceforge.pmd.cli.commands.internal.AbstractPmdSubcommand - Log level is at INFO

stderr:[main] WARN net.sourceforge.pmd.cli.commands.internal.PmdCommand - Warning at c:\Users\derrick.ejan\Documents\sfdx\pmd\ruleref.xml:101:3 99| 100| 101| <rule ^^^^^ Discontinue using Rule name category/apex/performance.xml/AvoidSoqlInLoops as it is scheduled for removal from PMD. PMD 8.0.0 will remove support for this Rule.

102| ref="category/apex/performance.xml/AvoidSoqlInLoops" 103| message="Avoid Soql queries inside loops" [main] WARN net.sourceforge.pmd.cli.commands.internal.PmdCommand - Warning at c:\Users\derrick.ejan\Documents\sfdx\pmd\ruleref.xml:108:3 106| 107| 108| <rule ^^^^^ Discontinue using Rule name category/apex/performance.xml/AvoidSoslInLoops as it is scheduled for removal from PMD. PMD 8.0.0 will remove support for this Rule.

109| ref="category/apex/performance.xml/AvoidSoslInLoops" 110| message="Avoid Sosl queries inside loops" [main] WARN net.sourceforge.pmd.cli.commands.internal.PmdCommand - Warning at c:\Users\derrick.ejan\Documents\sfdx\pmd\ruleref.xml:115:3 113| 114| 115| <rule ^^^^^ Discontinue using Rule name category/apex/performance.xml/AvoidDmlStatementsInLoops as it is scheduled for removal from PMD. PMD 8.0.0 will remove support for this Rule.

116| ref="category/apex/performance.xml/AvoidDmlStatementsInLoops" 117| message="Avoid DML Statements inside loops" [main] ERROR net.sourceforge.pmd.cli.commands.internal.PmdCommand - Error at c:\Users\derrick.ejan\Documents\sfdx\pmd\ruleref.xml:179:3 177| 178| 179| <rule ^^^^^ Unable to find referenced rule VariableNamingConventions; perhaps the rule name is misspelled?

180| ref="category/apex/codestyle.xml/VariableNamingConventions" 181| message="{0} variable {1} should begin with {2}" [main] WARN net.sourceforge.pmd.cli.commands.internal.PmdCommand - Warning at c:\Users\derrick.ejan\Documents\sfdx\pmd\ruleref.xml:228:3 226| 227| 228| <rule ^^^^^ Use Rule name category/apex/errorprone.xml/ApexCSRF instead of the deprecated Rule name category/apex/security.xml/ApexCSRF. PMD 8.0.0 will remove support for this deprecated Rule name usage.

229| ref="category/apex/security.xml/ApexCSRF" 230| message="Avoid making DML operations in Apex class constructor/init method"

stderr:[main] ERROR net.sourceforge.pmd.cli.commands.internal.PmdCommand - Cannot load ruleset c:\Users\derrick.ejan\Documents\sfdx\pmd\ruleref.xml: An XML validation error occurred

Failed Exit Code: 1 Analyzing c:\Users\derrick.ejan\Documents\sfdx\force-app\main\default\classes\ApprovalRequestController.cls stderr:[main] INFO net.sourceforge.pmd.cli.commands.internal.AbstractPmdSubcommand - Log level is at INFO

stderr:[main] WARN net.sourceforge.pmd.cli.commands.internal.PmdCommand - Warning at c:\Users\derrick.ejan\Documents\sfdx\pmd\ruleref.xml:101:3 99| 100| 101| <rule ^^^^^ Discontinue using Rule name category/apex/performance.xml/AvoidSoqlInLoops as it is scheduled for removal from PMD. PMD 8.0.0 will remove support for this Rule.

102| ref="category/apex/performance.xml/AvoidSoqlInLoops" 103| message="Avoid Soql queries inside loops"

stderr:[main] WARN net.sourceforge.pmd.cli.commands.internal.PmdCommand - Warning at c:\Users\derrick.ejan\Documents\sfdx\pmd\ruleref.xml:108:3 106| 107| 108| <rule ^^^^^ Discontinue using Rule name category/apex/performance.xml/AvoidSoslInLoops as it is scheduled for removal from PMD. PMD 8.0.0 will remove support for this Rule.

109| ref="category/apex/performance.xml/AvoidSoslInLoops" 110| message="Avoid Sosl queries inside loops"

stderr:[main] WARN net.sourceforge.pmd.cli.commands.internal.PmdCommand - Warning at c:\Users\derrick.ejan\Documents\sfdx\pmd\ruleref.xml:115:3 113| 114| 115| <rule ^^^^^ Discontinue using Rule name category/apex/performance.xml/AvoidDmlStatementsInLoops as it is scheduled for removal from PMD. PMD 8.0.0 will remove support for this Rule.

116| ref="category/apex/performance.xml/AvoidDmlStatementsInLoops" 117| message="Avoid DML Statements inside loops"

stderr:[main] ERROR net.sourceforge.pmd.cli.commands.internal.PmdCommand - Error at c:\Users\derrick.ejan\Documents\sfdx\pmd\ruleref.xml:179:3 177| 178| 179| <rule ^^^^^ Unable to find referenced rule VariableNamingConventions; perhaps the rule name is misspelled?

180| ref="category/apex/codestyle.xml/VariableNamingConventions" 181| message="{0} variable {1} should begin with {2}"

stderr:[main] WARN net.sourceforge.pmd.cli.commands.internal.PmdCommand - Warning at c:\Users\derrick.ejan\Documents\sfdx\pmd\ruleref.xml:228:3 226| 227| 228| <rule ^^^^^ Use Rule name category/apex/errorprone.xml/ApexCSRF instead of the deprecated Rule name category/apex/security.xml/ApexCSRF. PMD 8.0.0 will remove support for this deprecated Rule name usage.

229| ref="category/apex/security.xml/ApexCSRF" 230| message="Avoid making DML operations in Apex class constructor/init method"

stderr:[main] ERROR net.sourceforge.pmd.cli.commands.internal.PmdCommand - Cannot load ruleset c:\Users\derrick.ejan\Documents\sfdx\pmd\ruleref.xml: An XML validation error occurred

Failed Exit Code: 1 Analyzing c:\Users\derrick.ejan\Documents\sfdx\force-app\main\default\classes\ApprovalRequestController.cls stderr:[main] INFO net.sourceforge.pmd.cli.commands.internal.AbstractPmdSubcommand - Log level is at INFO

stderr:[main] WARN net.sourceforge.pmd.cli.commands.internal.PmdCommand - Warning at c:\Users\derrick.ejan\Documents\sfdx\pmd\ruleref.xml:101:3 99| 100| 101| <rule ^^^^^ Discontinue using Rule name category/apex/performance.xml/AvoidSoqlInLoops as it is scheduled for removal from PMD. PMD 8.0.0 will remove support for this Rule.

102| ref="category/apex/performance.xml/AvoidSoqlInLoops" 103| message="Avoid Soql queries inside loops"

stderr:[main] WARN net.sourceforge.pmd.cli.commands.internal.PmdCommand - Warning at c:\Users\derrick.ejan\Documents\sfdx\pmd\ruleref.xml:108:3 106| 107| 108| <rule ^^^^^ Discontinue using Rule name category/apex/performance.xml/AvoidSoslInLoops as it is scheduled for removal from PMD. PMD 8.0.0 will remove support for this Rule.

109| ref="category/apex/performance.xml/AvoidSoslInLoops" 110| message="Avoid Sosl queries inside loops"

stderr:[main] WARN net.sourceforge.pmd.cli.commands.internal.PmdCommand - Warning at c:\Users\derrick.ejan\Documents\sfdx\pmd\ruleref.xml:115:3 113| 114| 115| <rule ^^^^^ Discontinue using Rule name category/apex/performance.xml/AvoidDmlStatementsInLoops as it is scheduled for removal from PMD. PMD 8.0.0 will remove support for this Rule.

116| ref="category/apex/performance.xml/AvoidDmlStatementsInLoops" 117| message="Avoid DML Statements inside loops"

stderr:[main] ERROR net.sourceforge.pmd.cli.commands.internal.PmdCommand - Error at c:\Users\derrick.ejan\Documents\sfdx\pmd\ruleref.xml:179:3 177| 178| 179| <rule ^^^^^ Unable to find referenced rule VariableNamingConventions; perhaps the rule name is misspelled?

180| ref="category/apex/codestyle.xml/VariableNamingConventions" 181| message="{0} variable {1} should begin with {2}"

stderr:[main] WARN net.sourceforge.pmd.cli.commands.internal.PmdCommand - Warning at c:\Users\derrick.ejan\Documents\sfdx\pmd\ruleref.xml:228:3 226| 227| 228| <rule ^^^^^ Use Rule name category/apex/errorprone.xml/ApexCSRF instead of the deprecated Rule name category/apex/security.xml/ApexCSRF. PMD 8.0.0 will remove support for this deprecated Rule name usage.

229| ref="category/apex/security.xml/ApexCSRF" 230| message="Avoid making DML operations in Apex class constructor/init method"

stderr:[main] ERROR net.sourceforge.pmd.cli.commands.internal.PmdCommand - Cannot load ruleset c:\Users\derrick.ejan\Documents\sfdx\pmd\ruleref.xml: An XML validation error occurred

Failed Exit Code: 1 Analyzing c:\Users\derrick.ejan\Documents\sfdx\force-app\main\default\classes\ApprovalRequestController.cls stderr:[main] INFO net.sourceforge.pmd.cli.commands.internal.AbstractPmdSubcommand - Log level is at INFO

stderr:[main] WARN net.sourceforge.pmd.cli.commands.internal.PmdCommand - Warning at c:\Users\derrick.ejan\Documents\sfdx\pmd\ruleref.xml:101:3 99| 100| 101| <rule ^^^^^ Discontinue using Rule name category/apex/performance.xml/AvoidSoqlInLoops as it is scheduled for removal from PMD. PMD 8.0.0 will remove support for this Rule.

102| ref="category/apex/performance.xml/AvoidSoqlInLoops" 103| message="Avoid Soql queries inside loops"

stderr:[main] WARN net.sourceforge.pmd.cli.commands.internal.PmdCommand - Warning at c:\Users\derrick.ejan\Documents\sfdx\pmd\ruleref.xml:108:3 106| 107| 108| <rule ^^^^^ Discontinue using Rule name category/apex/performance.xml/AvoidSoslInLoops as it is scheduled for removal from PMD. PMD 8.0.0 will remove support for this Rule.

109| ref="category/apex/performance.xml/AvoidSoslInLoops" 110| message="Avoid Sosl queries inside loops"

stderr:[main] WARN net.sourceforge.pmd.cli.commands.internal.PmdCommand - Warning at c:\Users\derrick.ejan\Documents\sfdx\pmd\ruleref.xml:115:3 113| 114| 115| <rule ^^^^^ Discontinue using Rule name category/apex/performance.xml/AvoidDmlStatementsInLoops as it is scheduled for removal from PMD. PMD 8.0.0 will remove support for this Rule.

116| ref="category/apex/performance.xml/AvoidDmlStatementsInLoops" 117| message="Avoid DML Statements inside loops"

stderr:[main] ERROR net.sourceforge.pmd.cli.commands.internal.PmdCommand - Error at c:\Users\derrick.ejan\Documents\sfdx\pmd\ruleref.xml:179:3 177| 178| 179| <rule ^^^^^ Unable to find referenced rule VariableNamingConventions; perhaps the rule name is misspelled?

180| ref="category/apex/codestyle.xml/VariableNamingConventions" 181| message="{0} variable {1} should begin with {2}"

stderr:[main] WARN net.sourceforge.pmd.cli.commands.internal.PmdCommand - Warning at c:\Users\derrick.ejan\Documents\sfdx\pmd\ruleref.xml:228:3 226| 227| 228| <rule ^^^^^ Use Rule name category/apex/errorprone.xml/ApexCSRF instead of the deprecated Rule name category/apex/security.xml/ApexCSRF. PMD 8.0.0 will remove support for this deprecated Rule name usage.

229| ref="category/apex/security.xml/ApexCSRF" 230| message="Avoid making DML operations in Apex class constructor/init method"

stderr:[main] ERROR net.sourceforge.pmd.cli.commands.internal.PmdCommand - Cannot load ruleset c:\Users\derrick.ejan\Documents\sfdx\pmd\ruleref.xml: An XML validation error occurred

Failed Exit Code: 1 Analyzing c:\Users\derrick.ejan\Documents\sfdx\force-app\main\default\classes\ApprovalRequestController.cls stderr:[main] INFO net.sourceforge.pmd.cli.commands.internal.AbstractPmdSubcommand - Log level is at INFO

stderr:[main] WARN net.sourceforge.pmd.cli.commands.internal.PmdCommand - Warning at c:\Users\derrick.ejan\Documents\sfdx\pmd\ruleref.xml:101:3 99| 100| 101| <rule ^^^^^ Discontinue using Rule name category/apex/performance.xml/AvoidSoqlInLoops as it is scheduled for removal from PMD. PMD 8.0.0 will remove support for this Rule.

102| ref="category/apex/performance.xml/AvoidSoqlInLoops" 103| message="Avoid Soql queries inside loops"

stderr:[main] WARN net.sourceforge.pmd.cli.commands.internal.PmdCommand - Warning at c:\Users\derrick.ejan\Documents\sfdx\pmd\ruleref.xml:108:3 106| 107| 108| <rule ^^^^^ Discontinue using Rule name category/apex/performance.xml/AvoidSoslInLoops as it is scheduled for removal from PMD. PMD 8.0.0 will remove support for this Rule.

109| ref="category/apex/performance.xml/AvoidSoslInLoops" 110| message="Avoid Sosl queries inside loops"

stderr:[main] WARN net.sourceforge.pmd.cli.commands.internal.PmdCommand - Warning at c:\Users\derrick.ejan\Documents\sfdx\pmd\ruleref.xml:115:3 113| 114| 115| <rule ^^^^^ Discontinue using Rule name category/apex/performance.xml/AvoidDmlStatementsInLoops as it is scheduled for removal from PMD. PMD 8.0.0 will remove support for this Rule.

116| ref="category/apex/performance.xml/AvoidDmlStatementsInLoops" 117| message="Avoid DML Statements inside loops"

stderr:[main] ERROR net.sourceforge.pmd.cli.commands.internal.PmdCommand - Error at c:\Users\derrick.ejan\Documents\sfdx\pmd\ruleref.xml:179:3 177| 178| 179| <rule ^^^^^ Unable to find referenced rule VariableNamingConventions; perhaps the rule name is misspelled?

180| ref="category/apex/codestyle.xml/VariableNamingConventions" 181| message="{0} variable {1} should begin with {2}"

stderr:[main] WARN net.sourceforge.pmd.cli.commands.internal.PmdCommand - Warning at c:\Users\derrick.ejan\Documents\sfdx\pmd\ruleref.xml:228:3 226| 227| 228| <rule ^^^^^ Use Rule name category/apex/errorprone.xml/ApexCSRF instead of the deprecated Rule name category/apex/security.xml/ApexCSRF. PMD 8.0.0 will remove support for this deprecated Rule name usage.

229| ref="category/apex/security.xml/ApexCSRF" 230| message="Avoid making DML operations in Apex class constructor/init method"

stderr:[main] ERROR net.sourceforge.pmd.cli.commands.internal.PmdCommand - Cannot load ruleset c:\Users\derrick.ejan\Documents\sfdx\pmd\ruleref.xml: An XML validation error occurred

Failed Exit Code: 1`

derrick-ejan-rs commented 1 year ago

By the way: are you using windows, linux or macos?

windows

adangel commented 1 year ago

You need to update your ruleset c:\Users\derrick.ejan\Documents\sfdx\pmd\ruleref.xml for PMD 7 - please refer to the changed/removed rules here: https://docs.pmd-code.org/latest/pmd_release_notes_pmd7.html#-new-and-changed-rules

derrick-ejan-rs commented 1 year ago

You need to update your ruleset c:\Users\derrick.ejan\Documents\sfdx\pmd\ruleref.xml for PMD 7 - please refer to the changed/removed rules here: https://docs.pmd-code.org/latest/pmd_release_notes_pmd7.html#-new-and-changed-rules

thanks yah just noticed that as well when seeing the output for the first time. I will give that a shot.

ChuckJonas commented 1 year ago

@adangel maybe we could parse Cannot load ruleset and display a more directed User error to let them know the issue is with their ruleset?

adangel commented 1 year ago

@adangel maybe we could parse Cannot load ruleset and display a more directed User error to let them know the issue is with their ruleset?

Yes, that should be possible