2016-11-29 1 views
0

Вызов метода хэш-код() на объект File, вызывает этот вопрос SonarQube:Как разрешить «Использовать исходное значение». Проблема с SonarQube?

Используйте исходное значение вместо этого.

Как решить? Любая помощь, пожалуйста?

File file = ...... 

.... = Math.abs(file.hashCode()); 

Update: описание SonarQube выпуска является here

Могу ли я просто написать: .... = Math.abs (file.hashCode() + 1);

+1

Как вы можете себе представить, серьезно читающий эти две линии, которые вы могли бы совместно помочь вам? Вы пытались прочитать описание правила и понять, о чем проблема? Правило, которое вы, по-видимому, обсуждаете здесь, следующее: https://sonarqube.com/coding_rules#rule_key=squid%3AS2676 _read_ описание и, пожалуйста, поделитесь соответствующей частью вашего кода. – benzonico

+0

Я проверил описание issur в sonarQube, но не ясно, как его решить. Любое предложение? – Riadh

ответ

4

Причиной вашей проблемы является тот факт, что Integer.MIN возвращает себя при принятии абсолютного значения. Эта проблема описана here.

Решение зависит от того, для чего вам нужно значение. Ваше предлагаемое решение (Math.abs(file.hashCode() + 1)) не будет работать, потому что если функция hashCode() возвращает Integer.MAX, то это плюс 1 по-прежнему Integer.MIN, поэтому конечный результат все равно может быть отрицательным.

Если вам действительно нужен положительный хэш файла, вы могли бы сделать что-то вроде этого:

final int hash = file.hashCode() == Integer.MIN ? Integer.MAX : Math.abs(file.hashCode()); 

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

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