2016-11-29 6 views
0

Fileオブジェクト上のhashCode()メソッドの呼び出しは、このSonarQubeの問題をトリガー:「元の値を代わりに使用する」を解決する方法SonarQubeの問題?

代わりに元の値を使用してください。

解決方法助けてください?

File file = ...... 

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

更新:問題のSonarQubeの記述がhere

私は書くことができます:.... = Math.abs(file.hashCode()+ 1);

+1

?ルールの説明を読み、問題の内容を理解しようとしましたか?話していると思われるルール(ここで推測)は、この1つです:https://sonarqube.com/coding_rules#rule_key=squid%3AS2676 _read_説明とコードの関連部分を共有してください。 – benzonico

+0

sonarQubeで発行者の説明を確認しましたが、解決方法は不明です。なにか提案を? – Riadh

答えて

4

問題の原因は、Integer.MINが絶対値をとるときに自分自身を返すということです。この問題はhereと記載されています。

解決策は、値の必要なものによって異なります。 hashCode()関数がInteger.MAXを返した場合、そのプラス1はまだInteger.MINなので、最終結果は依然として負になる可能性があるため、提案された解(Math.abs(file.hashCode() + 1))は機能しません。あなたが本当にファイルの正のハッシュが必要な場合は

は、あなたがこのような何かを行うことができます:

final int hash = file.hashCode() == Integer.MIN ? Integer.MAX : Math.abs(file.hashCode()); 
あなたは真剣に、誰もがあなたを助けることができる共有の2行を読んで想像することができますどのように
関連する問題