github / github/codeql

So many false positives that I doubt it actually works

未关闭
#18,359 2 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
false-positive
主要语言
CodeQL
星标
10.1k
派生
2.1k
平均合并
2 天 15 小时
30 天内合并 PR
141

描述

**Description of the false positive**

I am constantly getting the following in my Java project.

```
Useless parameter
The parameter '' is never used.
```

```
Unread local variable
Variable '
' is never read.
```

This is so frequente that I am at a point that I am seriously doubting the capacity of this tool of really working for whatever it proposes itself to do.

All parameters and variables it points as being useless or unread are always read, sometimes in the literal next line.

**Code samples or links to source code**

https://github.com/Scoppio/mekhq/blob/79a0f780ba5b70b46deea320962b9f6a4d8bdb19/MekHQ/src/mekhq/campaign/autoresolve/acar/handler/StandardUnitAttackHandler.java#L173

```Java
private int[] calculateDamage(
Formation attacker, // CodeQL - Useless parameter
StandardUnitAttack attack, // CodeQL - Useless parameter
SBFUnit attackingUnit, Formation target) {
int bonusDamage = 0; // CodeQL - Unread local variable
if (attack.getManeuverResult().equals(StandardUnitAttack.ManeuverResult.SUCCESS)) {
bonusDamage += 1;
}

var damage = attackingUnit.getElements().stream().mapToInt(e -> e.getStandardDamage().getDamage(attack.getRange()).damage).toArray();
return processDamageByEngagementControl(attacker, target, bonusDamage, damage);
}
```

As you can see, attacker parameter is used as parameter for processDamageByEngagementControl (it uses attacker inside), attack parameter is used when accessing `attack.getRange()`, and the variable bonusDamage is also used being passed as a parameter to processDamageByEngagementControl which then consumes it.

This is just a sample of my common experience with CodeQL, I often from 12 to 20 false positives sauing a parameter is useless or a variable is never read in all my pull requests.

贡献指南

打开贡献指南

调研方向

Start with the linked Java sample and the calculateDamage method, then reproduce the reported diagnostics for the parameter and local variable. Trace the CodeQL query that emits them and add regression coverage so valid uses like these are no longer reported.

由索引模型根据 Issue 内容生成。

评估

技术栈
java
领域
security, tooling
Issue 类型
缺陷
难度
4/5
预计耗时
3-5 天
活跃度
停滞
描述清晰度
需要澄清
新手友好度
25/100

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。