SonarQube выдает ошибку «NullPointer Exception может быть выбросить» для переменных, созданных в файлах java из файлов xsd - PullRequest
1 голос
/ 12 мая 2019

У меня есть список классов Java, сгенерированных из файлов .xsd. Во время работы SonarQube он жалуется, что может появиться исключение NullPointerException, так как «_Parent» может быть обнуляемым здесь

Мой код xsd

<xsd:element name="Parent">
<xsd:complexType>
 <xsd:sequence>
 <xsd:element name="ParentId" type="xsd:integer"/>
 </xsd:sequence>
</xsd:complexType>
<xsd:element name="Parent">

<xsd:element name="App">
<xsd:complexType>
 <xsd:sequence>
 <xsd:element name="Parent" minOccures="0" maxOccurs="unbounded"/>
 </xsd:sequence>
</xsd:complexType>
<xsd:element name="Parent">

Родительская переменная объявлена ​​внутри класса App как

protected com.sun.xml.bind.util.ListImpl _Parent;
protected com.sun.ml.bind.util.ListImpl _getParent()
{
if(_Parent == null){
_Parent = new com.sun.ml.bind.util.ListImpl(new java.util.ArrayList()}
return _Parent
}

Жалуется на следующую строку

int id =0;
final int len= ((_Parent == null)? 0 :_Parent.size());
while(id != len){ 
if(**_Parent**.get(id) instanceof java.xml.bind.Element){ context.childAsBody(((com.sun.xml.bind.JAXBObject) _Parent.get(id ++)), "Parent"); 

Может кто-нибудь помочь мне с этим. Заранее спасибо

1 Ответ

0 голосов
/ 12 мая 2019

Это ложное срабатывание.

Если _Parent равно нулю, то id != len не будет истинным, цикл for никогда не будет введен, и NullPointerException не будет выброшено.

...