gpt4 book ai didi

java - PMD 规则 : How to properly solve this DD-anomaly issue

转载 作者:太空狗 更新时间:2023-10-29 13:32:12 24 4
gpt4 key购买 nike

我有以下安卓代码:

public final List<MyObj> getList()  {
Cursor cursor = null;
try {
final String queryStr = GET_LIST_STATEMENT;
cursor = db.rawQuery(queryStr, new String[] {});
List<MyObj> list = null;
//here I get the data from de cursor.
return list ;
} catch (SQLiteFullException ex) {
//do something to treat the exception.
} finally {
if (cursor != null) {
cursor.close();
}
}
}

当我对该代码运行 PMD 分析时,出现以下问题:Found 'DD'-anomaly for variable 'cursor' (lines '182'-'185').

  • 第 182 行是:Cursor cursor = null;
  • 第 185 行是:cursor = db.rawQuery(queryStr, new String[] {});

所以,我知道问题在于我在第 182 行中进行了过早初始化(我从未读取过第 182 行和第 185 行之间的变量),但如果我不这样做,我就不能让代码在 finally block 中关闭 cursor

遇到这种情况怎么办?忽略这个 PMD 问题?我可以将 PMD 配置为不引发这种特定类型的 DD 异常(不是所有的 DD 异常)吗? PMD 应该足够聪明,不会提出这个问题吗?

另一个我认为不是真正问题的 DD 异常示例:

    Date distributeDate;
try {
distributeDate = mDf.parse(someStringDate);
} catch (ParseException e) {
Log.e("Problem", "Problem parsing the date of the education. Apply default date.");
distributeDate = Calendar.getInstance().getTime();
}

在这种情况下,异常发生在 distributeDate 变量上。

最佳答案

documentation很容易理解:

要么你使用注解来抑制警告:

// This will suppress UnusedLocalVariable warnings in this class
@SuppressWarnings("PMD.UnusedLocalVariable")
public class Bar {
void bar() {
int foo;
}
}

或者您使用评论:

public class Bar {
// 'bar' is accessed by a native method, so we want to suppress warnings for it
private int bar; //NOPMD
}

当涉及到您的特定代码时,我认为最简单的处理方法是不使用 finally block ,即使这看起来是它的完美位置。

关于java - PMD 规则 : How to properly solve this DD-anomaly issue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14340898/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com