当前位置: 首页 > 知识库问答 >
问题:

声纳抱怨局部变量的无效赋值

贡光明
2023-03-14

我有以下一段代码在我的程序,我正在运行SonarQube 5的代码质量检查后,它与Maven集成。

然而,Sonar要求删除这个对局部变量“session”的无用赋值

@RequestMapping(value = "/logoff", method = RequestMethod.GET)
public String getLogoffPage(HttpServletRequest request, HttpServletResponse response) {
    logger.info(" Before Log Offf........ " + request.getSession().getId() );
    HttpSession session =request.getSession(true);
    request.getSession().invalidate();
    myApplication.logout();
    SecurityContextHolder.clearContext();
    session=null;                   
    return "login";
}

共有2个答案

谷星文
2023-03-14

此变量是本地变量,因此当到达return语句时,将无法访问它。由于赋值后未读取该变量,因此该变量被视为无效变量。

如果你给一个局部变量赋值而不使用它,这是一个无用的指令,因此应该删除。

将变量设置为null几乎毫无用处,实际上可能会妨碍JVM进行某些优化。

安高义
2023-03-14

假设问题是“为什么”:

你实际上用会话做什么?没什么。

HttpSession session =request.getSession(true);  // session assigned
request.getSession().invalidate();         // session NOT used
myApplication.logout();
SecurityContextHolder.clearContext();
session=null;                            // session re-assigned

也许你是这个意思?

HttpSession session =request.getSession(true);
session.invalidate();
myApplication.logout();
SecurityContextHolder.clearContext();

顺便说一句,我已经删除了session=null,因为在Java中没有理由这样做(C是另一回事)。

当然,代码可能更干净:

request.getSession().invalidate();
myApplication.logout();
SecurityContextHolder.clearContext();
 类似资料:
  • 问题内容: 所以这很奇怪,我知道代码本身是没有用的,但是我想知道为什么会收到错误: 我正在写一些代码,我已经写了这个: 当时没有考虑可变范围,显然这是没有用的,因为无论如何我都无法使用过去。我没有得到的是为什么我得到了我的错误: 现在,如果我将其修改为: 它将编译正常。我给人的印象是,如果大括号下有1行是可选的……显然,还有其他考虑,或者两者都会编译或失败。 有人可以向我解释一下,还是可以指向一个

  • 局部变量使用关键字 def 来声明,其只在声明它的地方可见 . 局部变量是 Groovy 语言的一个基本特性. 例子 13.2 . 使用局部变量 def dest = "dest" task copy(type: Copy) { form "source" into dest }

  • 问题内容: 我的程序中包含以下代码,并将其与Maven集成后,我正在运行SonarQube 5以对其进行代码质量检查。 但是,Sonar抱怨我应该 记录或重新抛出此异常 。 我在这里想念什么?我还没有记录异常吗? 问题答案: 您应该这样做: 声纳不应该再打扰您了

  • 我的程序中有下面的代码,在与Maven集成后,我正在运行SonarQube 5进行代码质量检查。 然而,Sonar抱怨说,我应该记录或者重播这个异常。 我错过了什么?

  • 在将SonarQube与Maven集成后,运行SonarQube进行代码质量检查时,我有以下代码。 然而,Sonar抱怨说,我应该记录或者重播这个异常。 我错过了什么?谁能帮我一下吗。

  • 我的程序中有下面的代码,在与Maven集成后,我正在运行SonarQube 5进行代码质量检查。 然而,Sonar抱怨说,我应该记录或者重播这个异常。 我错过了什么?我还没有记录异常吗?