Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 声纳抱怨局部变量的无效赋值_Java_Spring_Maven_Controller_Sonarqube - Fatal编程技术网

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

Java 声纳抱怨局部变量的无效赋值,java,spring,maven,controller,sonarqube,Java,Spring,Maven,Controller,Sonarqube,我的程序中有下面的代码,在与Maven集成后,我正在运行SonarQube 5进行代码质量检查 然而,Sonar要求删除这个对局部变量“session”的无用赋值。 @RequestMapping(value = "/logoff", method = RequestMethod.GET) public String getLogoffPage(HttpServletRequest request, HttpServletResponse response) { logger.info(

我的程序中有下面的代码,在与Maven集成后,我正在运行SonarQube 5进行代码质量检查

然而,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";
}

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

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


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

假设问题是“为什么”:

您实际如何处理
会话
?没什么

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();

您希望从
session=null?问题是???(该变量未被使用,因此它确实是“使用较少”。字面意思。)