[BUG][JAVA] Generated code still missing many @Nullable annotations
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
調査の方向性
Start by generating a Java model with the useJspecify option enabled, using a spec like the one in #23656, and compare the output with the snippet in the issue. The fix belongs in the Java model templates that emit @NullMarked code, which you can locate by searching for the useJspecify flag. Done means the listed members (the additionalProperties field and getter, getAdditionalProperty, equals, toIndentedString) carry @Nullable where they can be null, and a nullability checker reports no new errors.
索引モデルが issue の本文から書いたものです。
説明
Bug Report Checklist
- Have you provided a full/minimal spec to reproduce the issue?
- Have you validated the input using an OpenAPI validator?
- Have you tested with the latest master to confirm the issue still exists?
- Have you searched for related issues/PRs?
- What's the actual output vs expected output?
- [Optional] Sponsorship to speed up the bug fix or feature request (example)
Description
When generating a Java model with useJspecify, the package is @NullMarked but many @Nullable annotations are missing.
private Map<String, Object> additionalProperties; // <-- both Map and possibly Object should be @Nullable
@JsonAnySetter
public TestModel putAdditionalProperty(String key, Object value) {
if (this.additionalProperties == null) { // <-- it handles the Map being null here
this.additionalProperties = new HashMap<String, Object>();
}
@JsonAnyGetter
public Map<String, Object> getAdditionalProperties() { // <-- matching annotation needed here
return additionalProperties; // <-- as it could return null
}
public Object getAdditionalProperty(String key) { // <-- missing @Nullable
if (this.additionalProperties == null) {
return null; // <-- for this return
}
return this.additionalProperties.get(key); // <-- and possibly here if values can be null
}
@Override
public boolean equals(Object o) { // <-- should be @Nullable
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) { // <-- as per Object.equals spec, it handles nulls
return false;
}
// ...
}
private String toIndentedString(Object o) { // <-- ditto
return o == null ? "null" : o.toString().replace("\n", "\n ");
}
openapi-generator version
7.27.0
OpenAPI declaration file content or url
See #23656
Generation Details
See #23656
Steps to reproduce
See #23656
Related issues/PRs
#23656
Suggest a fix
Add @Nullable in the correct places in the templates.
Scan all generated code with a nullability checker that can find further instances of this error.
- 主要言語
- Java
- スター
- 26.9k
- フォーク
- 7.8k
- 平均マージ
- 2日 10時間
- マージ済み PR(30日)
- 180
環境構築
このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。
- Dockerfile または Docker Compose ファイルあり
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
OpenAPITools/openapi-generator のほかの issue
-
Issue: Bug
難易度 2/5 1〜3時間 初心者へのやさしさ 80/100
OpenAPITools/openapi-generator#25643 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
OpenAPITools/openapi-generator#25640 ·
メンテナーはふだん 1 日以内に返信
-
[BUG][JAVA] Deprecated properties only get @Deprecated on the getter (base, feign, native, microprofile)対応中かも @Inf1mum が 2 日前に担当しました。 オープンIssue: Bug
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
OpenAPITools/openapi-generator#25567 ·
メンテナーはふだん 1 日以内に返信
-
[BUG][KOTLIN-SERVER] typeInfoAnnotation.mustache uses As.PROPERTY → discriminator property serialized twice対応中かも @Inf1mum が 9 日前に担当しました。 オープンIssue: Bug
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
OpenAPITools/openapi-generator#25524 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
[REQ][JAVA][resteasy] Support for Jackson 3 / useJackson3対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープンEnhancement: Feature
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
OpenAPITools/openapi-generator#25364 ·
メンテナーはふだん 1 日以内に返信
OpenAPITools/openapi-generator の issue をすべて見る
似ている issue
-
bug emitter:client:csharp
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
microsoft/typespec#12572 · コメント 1 件 · リアクション 1 件 ·
メンテナーはふだん 1 日以内に返信
-
GCC 15.2: -Wcast-qual warning - cast discards const qualifier from pointer target type (H5trace.c)オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 73/100
メンテナーはふだん 1 日以内に返信
-
[Bug] RemotingHelper.connect swaps the socket send and receive buffer configuration対応中かも @amalsaidov が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
メンテナーはふだん 1 日以内に返信
-
needs-area-label
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
メンテナーはふだん 2 日以内に返信
-
area/ai area/backend component/zeebe kind/task
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
メンテナーはふだん 1 日以内に返信