【问题标题】:sonarqube incorrectly reports "PreparedStatement has no parameters."sonarqube 错误地报告“PreparedStatement 没有参数”。
【发布时间】:2019-05-02 16:45:53
【问题描述】:

sonarqube 错误地报告以下(简化)来源PreparedStatement has no parameters. (squid:S2695):

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
}

问题:

  1. 这是分析仪的错误还是限制?

  2. 我可以做些什么来隐藏这些“误报”吗?

【问题讨论】:

  • 您使用的是哪个版本的声纳 java 分析器?
  • @benzonico 我正在使用 3.9
  • 不要尝试像这样缓存PreparedStatements。如果能做到,驱动已经做到了。

标签: java sonarqube


【解决方案1】:

这是一个误报,您可以看到 here 它已在 4.5 版中修复。

问题 1 的答案:
是的,这是一个错误,请将您的声纳版本升级到 4.5(或更高版本)

回答问题 2:
在声纳中禁用规则 @ 987654322@
或
如何消除误报问题? here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-26
    • 1970-01-01
    • 2013-01-18
    • 2017-08-25
    • 2018-09-08
    • 2021-10-09
    • 2015-04-03
    • 2018-03-23
    相关资源
    最近更新 更多