2016-02-18 4 views
1

Я использую findbugs intellij plugin и он не может обнаружить потенциальную NumberFormatException в следующем коде:FindBugs не может обнаружить NumberFormatException

// potentially throw uncatched NumberFormatException exception and crash the program 
public void foo() { 
    int s = Integer.parseInt("ddd"); 
    System.out.println(s); 
} 

Существует одно правило называется method might drop exception и поэтому я предполагаю, что он должен быть в состоянии выяснить, что. Есть предположения?

ответ

0

DE_MIGHT_DROP относится к исключениям, которые «проглатываются», то есть не сообщаются должным образом, даже если они выбрасываются. Ваш метод будет генерировать исключение, поэтому DE_MIGHT_DROP будет удовлетворен.

Я не думаю, что есть детектор для того, что вы ищете, потому что детектор не может знать, хотите ли вы, чтобы исключение было поймано или нет.

+0

Правило для обнаружения везде, где исключение обработки не обрабатывается, было бы непрактичным. С другой стороны, если NFE был Exception (не RuntimeException), тогда у вас была бы ошибка компилятора;) – vikingsteve

+0

@vikingsteve, почему это не практично? не следует ли обрабатывать исключение времени выполнения, особенно в производстве? – qqibrow

+0

@qqibrow Вот и проблема с исключениями времени выполнения. Они должны быть обработаны, но вопрос: «где»? В «этом» методе или «где-то дальше». Это дизайн дизайна и вне сферы применения инструментов анализа кода. – vikingsteve

0

FindBugs обнаруживает ошибки и шаблоны ошибок. Проблема в том, что это наверняка ошибка, но неясно, какой шаблон ошибки это подходит, и как часто эта ошибка возникает в дикой природе. Без просто разрывая весь пример здесь некоторые ранг предложенные модели, которые можно было бы добавить:

  1. УМ: Вызовы методов синтаксического анализа на постоянное значение (UM_UNNECESSARY_PARSE)
  2. Dm: HARDCODED константу с parseXXX (DMI_CONSTANT_PARSE)
  3. DM: Base 10 parseXXX должен быть числовым или вызывать два аргумента parseXXX.
+0

Хм ... это слишком специфично. то, что я хочу, является напоминанием или предупреждением о том, что я не написал обработчик ошибок для обработчика RuntimeException, NumberFormatException. Может ли «findbugs» сделать это? если нет, есть ли какой-нибудь инструмент для этого? – qqibrow

 Смежные вопросы

  • Нет связанных вопросов^_^