Ну вот и вопрос: показывать тут варнинг, терпя возможные false-positive, или не показывать, терпя возможные false-negative =)
Сейчас ещё пытаюсь побороть такие ситуации типа
boolean invalid = s == null || blahblah || somethingelse;
if(invalid) {
s = "";
}
return s.trim();
Вроде конкретно этот пример даже должен не выдавать сработок ложных
То есть смысл нулл-анализа (если пока не брать в расчёт аннотации) - если мы где-то проверяли переменную на null, либо когда-то присваивали в неё null, то она nullable
И тогда теоретически дереференс без проверки опасен
Но реально есть куча исключений, которые все статически не отследишь
Ivan Sopov
@isopov
null-анализ без аннотаций нормально, если будет в очень ограниченном виде. Кому хочется полноценного - пусть размечает все филды и параметры аннотациями - у нас всё размечено.
причем, у нас null-анализ немножко допиленный и для наших допилов аннотации сделаны RetentionPolicy.RUNTIME
у обычных джетбрейнсовских RetentionPolicy.CLASS, так что тоже можно использовать, насколько я понимаю
Tagir Valeev
@amaembo
Можно, да. Аннотации я, конечно, со временем поддержу