PMD Salesforce代码分析器报自定义对象invalid type错误求助
问题场景
我正尝试遵循Salesforce Code Analyzer规范重构触发器逻辑,把原触发器内的代码移到BC_ClaseCierraAtencion类中(触发器仅调用此类),类内的DML操作已避免循环执行。类代码如下:
public without sharing class BC_ClaseCierraAtencion { public static void cierra(List<BC_Atenci_n__c> atenciones){ // do stuff... } }
该类功能完全正常,但Code Analyzer在List<BC_Atenci_n__c> atenciones参数处报错:Invalid type: BC_Atenci_n__c,无法识别这个自定义对象类型。
可能的原因及解决方法
自定义对象API名称拼写或编码问题
去Salesforce Setup里确认该自定义对象的API名称是否确实是BC_Atenci_n__c,注意API名称区分大小写,且特殊字符(比如ñ)可能因复制粘贴的编码问题导致工具识别失败。建议直接从Setup中复制API名称替换到代码里。扫描项目未包含对象元数据
Code Analyzer需要依赖项目中的元数据文件识别自定义对象。如果本地项目没拉取BC_Atenci_n__c对应的元数据文件(比如objects/BC_Atenci_n__c.object-meta.xml),工具就认不出这个类型。确保本地项目同步了完整的Org元数据,或者扫描时指定包含该对象的元数据目录。Code Analyzer版本或配置问题
旧版本的Code Analyzer对特殊字符的支持可能有缺陷,先更新到最新版本试试。另外检查扫描配置文件(如sfdx-scanner-config.json),看是否有排除该对象的规则,或者是否开启了过度严格的类型检查导致误判。命名空间或环境不匹配
如果该自定义对象属于某个命名空间,代码里需要加上命名空间前缀(比如命名空间__BC_Atenci_n__c)。同时确认运行Code Analyzer的环境(沙盒/生产)和对象所在Org一致,避免环境差异导致的识别失败。
内容的提问来源于stack exchange,提问作者user15586562

