Visualforce-specific features and guidance
Table of ContentsLanguage Info for Salesforce VisualforceVisualforce consists of a tag-based markup language that gives developers way to build applications and customize the Salesforce user interface.
VfLanguageModule
Note: The language id of Visualforce was in PMD 6 just âvfâ. In PMD 7, this has been changed to âvisualforceâ. Also the package name of the classes has been changed from vf to âvisualforceâ.
Language PropertiesSee Visualforce language properties
Type resolutionSince PMD 6.30.0 support for type resolution has been added.
The Visualforce AST now can resolve the data type of Visualforce expressions that reference Apex Controller properties and Custom Object fields. This feature improves the precision of existing rules, like VfUnescapeEl
.
This can be configured using two language properties, which can be set as environment variables:
PMD_VISUALFORCE_APEX_DIRECTORIES
: Comma separated list of directories for Apex classes. Absolute or relative to the Visualforce directory. Default is ../classes
. Specifying an empty string will disable data type resolution for Apex Controller properties.
PMD_VISUALFORCE_OBJECTS_DIRECTORIES
: Comma separated list of directories for Custom Objects. Absolute or relative to the Visualforce directory. Default is ../objects
. Specifying an empty string will disable data type resolution for Custom Object fields.
Warning: These env vars have changed from PMD 6 to PMD 7: * PMD_VF_APEXDIRECTORIES
â¡ï¸ PMD_VISUALFORCE_APEX_DIRECTORIES
* PMD_VF_OBJECTSDIRECTORIES
â¡ï¸ PMD_VISUALFORCE_OBJECTS_DIRECTORIES
PMD_VISUALFORCE_APEXDIRECTORIES=../classes \
PMD_VISUALFORCE_OBJECTSDIRECTORIES=../objects \
pmd check -d $GITHUB_WORKSPACE/force-app/main/default/pages \
-R category/visualforce/security.xml/VfUnescapeEl -f text
If you run with debug logging turned on, you might see log messages like this:
Okt. 14, 2021 11:30:44 AM net.sourceforge.pmd.lang.visualforce.VfExpressionTypeVisitor visit
FINE: Unable to determine type for: Account.NotFoundField__c
This means, that type resolution didnât work. Maybe the provided directories are missing or do not contain the needed data.
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