Java “可能报告不正确”;PreparedStatement没有参数。”;

Java “可能报告不正确”;PreparedStatement没有参数。”;,java,sonarqube,Java,Sonarqube,sonarqube错误地报告了以下(简化的)源代码PreparedStatement没有参数。(squid:S2695): 问题: 这是分析仪的缺陷还是限制 我能做些什么来隐藏这些“假阳性”吗 这是一个误报,正如你所看到的,它在4.5版中被修复了 对问题1的回答: 是的,这是一个bug,请将您的Sonar版本升级到4.5(或更新版本) 对问题2的回答: 在声纳中禁用规则 或 如何消除假阳性问题 您使用的是哪个版本的sonar java analyzer?@benzonico我使用的是3.9不要像

sonarqube错误地报告了以下(简化的)源代码
PreparedStatement没有参数。
(squid:S2695):

问题:

  • 这是分析仪的缺陷还是限制

  • 我能做些什么来隐藏这些“假阳性”吗


  • 这是一个误报,正如你所看到的,它在4.5版中被修复了

    对问题1的回答:
    是的,这是一个bug,请将您的Sonar版本升级到4.5(或更新版本)

    对问题2的回答:
    在声纳中禁用规则


    如何消除假阳性问题

    您使用的是哪个版本的sonar java analyzer?@benzonico我使用的是3.9不要像这样试图缓存
    PreparedStatements
    。如果可以做到,司机已经做到了。
    public static final String UPDATE_QUERY = "UPDATE TABLE SET COL1=? WHERE PK=?";
    
    private PreparedStatement preparedStatement = null;
    
    public void updateMethod(Date date, Long pk )
    {
      if(preparedStatement == null)
      {
        //ConnectionService is not a Connection!
        preparedStatement = ConnectionService.prepareStatement(UPDATE_QUERY);
      }
    
      //sonarqube reports on the following two lines: 'This "PreparedStatement" has no parameters.'
      preparedStatement.setDate(1, date);
      preparedStatement.setLong(2, pk);
      ResultSet rs = preparedStatement .executeQuery(); 
    
      //further code left out
    }