Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Support xs-ms-enum values without the "value" label

オープン
#216 コメント 2 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

評価

難易度
3/5
見積もり時間
1〜2日
初心者へのやさしさ
35/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
停滞
技術スタック
csharp
領域
api, devtools

調査の方向性

まず XmsEnumExtension と XmsEnumValue を調べ、次に OpenApi-Diff の比較パスで、示されている x-ms-enum JSON を使って Newtonsoft.Json のデシリアライズ失敗を再現します。3、4、5 を含む、プリミティブ値として表現された enum エントリが、JsonSerializationException をスローせずにデシリアライズおよび比較できれば完了です。

索引モデルが issue の本文から書いたものです。

説明

Some contract generators define the values of x-ms-enum as a list of actual values without labels.
The current version OpenApi-Diff doesn't support this format and throws a Newtonsoft.Json.JsonSerializationException in this case.

Example of x-ms-enum with and without the "value" label
"enum": [ "Mammals", "Fish", "Birds", "Reptiles", "Amphibians", "Invertebrates" ], "type": "string", "x-ms-enum": { "name": "PetType", "modelAsString": false, "values": [ { "value": 0, "description": "humans and all other animals that are warm-blooded vertebrates", "name": "Mammals" }, { "value": 1, "description": "aquatic, craniate, gill-bearing animals that lack limbs with digits" }, { "value": 2, "name": "Birds" }, 3, 4, 5 ], "x-nullable": false }

The issue with this XmsEnumExtension is that we cannot cast an object of primitive type (e.g. long, string) to a XmsEnumValue , thus all contracts that contains x-ms-enum with a list of values of primitive type causes a deserialization issue in the OpenApiDiff comparison.

The exception is the following

Newtonsoft.Json.JsonSerializationException : Error converting value 3 to type 'AutoRest.Swagger.Model.XmsEnumValue'. Path 'definitions.PetType.x-ms-enum.values[0]', line 235, position 11.
  ----> System.ArgumentException : Could not cast or convert from System.Int64 to AutoRest.Swagger.Model.XmsEnumValue.
主要言語
C#
スター
290
フォーク
50
平均マージ
2日 21時間
マージ済み PR(30日)
10

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

Azure/openapi-diff のほかの issue

Azure/openapi-diff の issue をすべて見る

似ている issue

C# の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。