Hes*_*sam 4 java android code-analysis sonar-runner sonarqube
Sonar可能重复抱怨记录和重新抛出异常.
这是我在课堂上的代码:
try
{
this.processDeepLinkData(data);
}
catch (final Exception e)
{
// Error while parsing data
// Nothing we can do
Logger.error(TAG, "Exception thrown on processDeepLinkData. Msg: " + e.getMessage());
}
Run Code Online (Sandbox Code Playgroud)
和我的Logger类:
import android.content.Context;
import android.util.Log;
import com.crashlytics.android.Crashlytics;
public final class Logger
{
/**
* Convenience method.
*
* @see Logger#log(String, String)
*/
public static void error(final String tag, final String msg)
{
if (Logger.DEBUG)
{
Log.e(tag, "" + msg);
}
else
{
Logger.log(tag, "" + msg);
}
}
private static void log(final String tag, final String msg)
{
Crashlytics.log(tag + ": " + msg);
}
}
Run Code Online (Sandbox Code Playgroud)
声纳指着catch (final Exception e)并说道Either log or rethrow this exception.你怎么看?
如果查看规则说明:https: //rules.sonarsource.com/java/RSPEC-1166
尤其是标题:
异常处理程序应保留原始异常
在您的情况下,您只关注异常的消息,因此不保留最终的堆栈跟踪(以及失败的根本原因).
此规则检测到您没有将捕获的异常用作catch块中的整个对象.
这可能不适合您的情况:将规则标记为"不会修复"或在质量配置文件中将其停用.