redhat-developer / redhat-developer/vscode-java

Recognize contractual non-nullness of standard library functions

Offen
#2,731 1 Kommentar 10 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

code analysis
Vorherrschende Sprache
TypeScript
Sterne
2.3k
Forks
546
Ø Merge
20 Std. 1 Min.
Gemergte PRs (30 T.)
11

Beschreibung

The nullness analyzer does not recognize that certain standard library functions will, contractually, never return null. A common example would be Integer::toString.

These methods will generate unchecked cast warnings if assigned to a @Nonnull field.

As I understand, the plugin relies on Eclipse JDT for nullness analysis. I have come across LastNPE, which publishes JDT-compatible external null annotation files for many common libraries.

Would it be possible to include these annotations by default? Alternatively, if this is not desirable, could EAA files be supported by the plugin?

Environment
  • Operating System: Windows 10 Enterprise
  • JDK version: openjdk 11.0.12 2021-07-20
  • Visual Studio Code version: 1.71.2
  • Java extension version: v1.11.0

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

In der Issue wird keine Quelldatei und kein Test genannt. Beginne damit, zu untersuchen, wie die Erweiterung die Nullheitsanalyse an Eclipse JDT delegiert, und vergleiche die JDT-kompatiblen Annotationen von LastNPE mit der angeforderten EAA-Unterstützung; als erledigt gilt die Aufgabe, wenn Methoden der Standardbibliothek wie Integer::toString bei der Zuweisung zu @Nonnull-Feldern keine Warnungen wegen ungeprüfter Casts mehr erzeugen.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
java, typescript, vscode
Bereich
tooling
Issue-Typ
Feature
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
42/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.