В Java System.exit()
является примером метода Java, который никогда не возвращается. Я предполагаю, что Sonarqube знает об этом методе и выполняет его статический анализ соответствующим образом.
Иногда мой код вызывает другой, не возвращаемый метод, предоставляемый внутренней библиотекой. В этом случае это служебный метод, который выбрасывает пользовательское исключение. Похоже, что Sonarqube не может понять это, и поэтому код, следующий за условным блоком, который вызывает «метод метателя», рассматривается по-другому.
Пример:
if (x == null)
throwTheCustomException();
x.foo();
Этот код приводит кв предупреждении Sonarqube, что x
может быть нулевым при разыменовании.
Я могу повлиять на дизайн пользовательской библиотеки, предоставив throwTheCustomException
. Как лучше всего сообщить Sonarqube, что этот метод никогда не вернется, чтобы последующий статический анализ был немного более точным?