Анализатор исходного кода PMD позволяет записывать правила в виде выражений XPath .
Я работаю над очисткой кодовой базы Apex, где часто нахожу следующую ошибку: !someCollection.isEmpty() && someCollection != null
.
Правильный подход заключается в том, чтобы сначала проверить нулевое значение: someCollection != null && !someCollection.isEmpty()
.
Использование моего доверенного редактора Я могу использовать RegEx, чтобы найти следующие элементы: && [a-zA-Z0-9]* != null
. Работает как шарм. Сейчас я пытаюсь создать собственное правило PMD для него, но мое регулярное выражение XPath не возвращает никакого значения в PMD Designer:
<rule message="Apex code must check != null before .isEmpty()" name="NullValueCheckBeforeEmptyCheck" class="net.sourceforge.pmd.lang.rule.XPathRule">
<description>Apex code must check != null before .isEmpty()</description>
<priority>1</priority>
<properties>
<property name="xpath">
<value>
<![CDATA[
//*[matches(@Image,'&& [a-zA-Z0-9]* != null')]
]]>
</value>
</property>
</properties>
</rule>
Я попытался провести начальную проверку //*[matches(@Image,'if')]
, но даже это не дало результата.
Что мне не хватает?
Пример Apex, который должен вызвать правило:
global class caseShareBatch {
<pre><code>global void execute(List<Case> caseShareList){
if(!caseShareList.isEmpty() && caseShareList != null) {
insert caseShareList;
}
}
}