Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
/*
Установить настройки проекта для IDEA. Используется отдельная задача, т.к. задача idea в gradle не поддерживает настройки
проекта, который оформлен в виде директорий (так с 14 IDEA работает). Поэтому нужно править xml файл настроек проекта
отдельно.
*/
task setupProject << {
//xml файл настроек IDEA
File miscXmlFile = new File("./.idea/misc.xml")
// Если файла нет, то выходим. Нужно, чтобы не было ошибок в Jenkins, когда не создаются IDEA конфигурации.
if (!miscXmlFile.exists()) {
return;
}
XmlParser xmlParser = new XmlParser()
Node miscXml = xmlParser.parse(miscXmlFile)
// Указываем настройки NotNull и Nullable аннотаций для проекта.
Node nullableNotNullManagerNode = miscXml.component.find { it.@name == "NullableNotNullManager" } as Node
if (nullableNotNullManagerNode) {
miscXml.remove(nullableNotNullManagerNode)
}
miscXml.append(xmlParser.parseText('''
<component name="NullableNotNullManager">
<option name="myDefaultNullable" value="com.my_company.npe.Nullable"/>
<option name="myDefaultNotNull" value="com.my_company.npe.NotNull"/>
<option name="myNullables">
<value>
<list size="5">
<item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.Nullable"/>
<item index="1" class="java.lang.String" itemvalue="javax.annotation.Nullable"/>
<item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.Nullable"/>
<item index="3" class="java.lang.String" itemvalue="android.support.annotation.Nullable"/>
<item index="4" class="java.lang.String" itemvalue="com.my_company.npe.Nullable"/>
</list>
</value>
</option>
<option name="myNotNulls">
<value>
<list size="5">
<item index="0" class="java.lang.String" itemvalue="org.jetbrains.annotations.NotNull"/>
<item index="1" class="java.lang.String" itemvalue="javax.annotation.Nonnull"/>
<item index="2" class="java.lang.String" itemvalue="edu.umd.cs.findbugs.annotations.NonNull"/>
<item index="3" class="java.lang.String" itemvalue="android.support.annotation.NonNull"/>
<item index="4" class="java.lang.String" itemvalue="com.my_company.npe.NotNull"/>
</list>
</value>
</option>
</component>'''
))
XmlNodePrinter nodePrinter = new XmlNodePrinter(new PrintWriter(new FileWriter(miscXmlFile)));
nodePrinter.preserveWhitespace = true
nodePrinter.print(miscXml)
}
Аннотации FindBugs не соответствуют этому требованию
void doSmth() {
Object field = this.field;
if(field == null) {
return;
}
System.out.println(field.hashCode());
}
@ParametersAreNonnullByDefault
а ещё научились org.springframework.util.Assert обрабатывать: https://youtrack.jetbrains.com/issue/IDEA-159977
Побеждаем NPE hell в Java, не используя IntelliJ IDEA