codeql icon indicating copy to clipboard operation
codeql copied to clipboard

Shared/Java: Add shared Guards library and switch Java to use it.

Open aschackmull opened this issue 5 months ago • 0 comments
trafficstars

This adds a new shared Guards library, which provides complex implication logic between guards. The implementation is heavily inspired by the corresponding Java and C# versions. The Java Guards library is then switched to use this new library, which results in a number of precision improvements for the nullness and useless comparison test queries.

There's currently a known FP related to correlated conditions in assert statements that I've documented as a qltest. I plan to fix that in a follow-up PR.

Review of the shared implementation (the single file shared/controlflow/codeql/controlflow/Guards.qll) is likely best done by reading the final result, but the other changes can be reviewed commit-by-commit.

aschackmull avatar May 23 '25 13:05 aschackmull