Skip to content

jmix-ide-static-analysis: the false-positive table has no ERROR-severity entry, and one exists #110

Description

@glebfox

Found while following the skill on a Jmix 3.0.1 project.

Problem: silent — the table lists only WARNING-level noise, so an ERROR reads as necessarily real.

Task

Running Gate 1 over an increment whose listeners and tests load entities with dataManager.load(X.class).query("e.ref.id = ?1", id).

Where

"Known false positives — do NOT chase these", read against "Surface WARNINGS, not just errors … treat Jmix-inspection / unresolved-reference warnings as blockers".

What happened

The inspection reports 'e' unexpected with severity ERROR on every condition-only query(...) call — its JPQL parser reads the argument as a complete statement and fails on the leading alias. Every entry in the skill's false-positive table is a WARNING about unused methods or local variables, so the natural reading is that an ERROR is always a true positive and the code must change.

It must not: FluentLoader.query(String, Object...)'s own Javadoc gives "e.name = ?1 and e.status = ?2" as the example and says "Always use e as the entity alias", FluentLoader.ByCondition builds the select e from <entity> e prefix itself, and Jmix Studio's own generated UI test tearDown uses the same form — so the inspection flags the generator's output.

Settling it meant reading FluentLoader in the framework sources, and the pressure was to rewrite working idiomatic code into full JPQL purely to silence a tool. Caught by IDE inspection.

Suggested fix

Add the entry to the false-positive table with its severity called out, and add one sentence above the table saying that severity is not a reliable guide — the Jmix plugin reports some correct code as ERROR, so an ERROR on a query(...), a msg:// or a property path still has to be checked against the framework before any code changes.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions