Rendered XML/JSON documentation is inconsistent and incomplete
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 50/100
- issue の種類
- バグ
- 明瞭さ
- おおむね明確
- 活発さ
- 活発
- 技術スタック
- php
調査の方向性
Start with ide-json/array_key_first.json and its corresponding XML output, then trace how the renderer handles return types and parameter initializers. Compare array_key_first, str_pad, and stream_socket_server against their source documentation. Done means the rendered JSON and XML preserve union return types and initializer values consistently.
索引モデルが issue の本文から書いたものです。
説明
It looks like the rendered JSON/XML files are missing some cruicial information.
For example, array_key_first has a return type of int|string|null.
Looking at ide-json/array_key_first.json:
{
"name": "array_key_first",
"purpose": "Gets the first key of an array",
"manualid": "function.array-key-first",
"version": "PHP 7 >= 7.3.0, PHP 8",
"params": {
"array": {
"name": "array",
"type": "array",
"optional": "false",
"description": "..."
}
},
"currentParam": null,
"return": {
"type": "null",
"description": "..."
}
}
We can see the return type is simply null. This is also the case in the xml version:
<?xml version="1.0" encoding="UTF-8"?>
<function>
<name>array_key_first</name>
<purpose>Gets the first key of an array</purpose>
<manualid>function.array-key-first</manualid>
<version>PHP 7 >= 7.3.0, PHP 8</version>
<params>
<param>
<name>array</name>
<type>array</type>
<optional>false</optional>
<description><![CDATA[<p class="para">
An array.
</p>]]></description>
</param>
</params>
<return>
<type>null</type>
<description>...</description>
</return>
</function>
This inconsistency / incompleteness can also be observed with the initializer of default parameters.
For example, the str_pad function:
{
"name": "str_pad",
"purpose": "Pad a string to a certain length with another string",
"manualid": "function.str-pad",
"version": "PHP 4 >= 4.0.1, PHP 5, PHP 7, PHP 8",
"params": {
"string": {
"name": "string",
"type": "string",
"optional": "false",
"description": "..."
},
"length": {
"name": "length",
"type": "int",
"optional": "false",
"description": "..."
},
"pad_string": {
"name": "pad_string",
"type": "string",
"optional": "true",
"initializer": "\" \"",
"description": "..."
},
"pad_type": {
"name": "pad_type",
"type": "int",
"optional": "true",
"description": "..."
}
}
}
We can see there is an initializer for pad_string but no initializer value for pad_type.
I had a quick look at the implementation and I think this is due to the fact that pad_type has an initializer of <constant>STR_PAD_RIGHT</constant> instead of just the text STR_PAD_RIGHT.
Another example would be stream_socket_server where the initializer is just the literal text STREAM_SERVER_BIND | STREAM_SERVER_LISTEN:
{
"name": "stream_socket_server",
"purpose": "Create an Internet or Unix domain server socket",
"manualid": "function.stream-socket-server",
"version": "PHP 5, PHP 7, PHP 8",
"params": {
"address": {
"name": "address",
"type": "string",
"optional": "false",
"description": ""
},
"error_code": {
"name": "error_code",
"type": "int",
"optional": "true",
"description": ""
},
"error_message": {
"name": "error_message",
"type": "string",
"optional": "true",
"description": ""
},
"flags": {
"name": "flags",
"type": "int",
"optional": "true",
"initializer": "STREAM_SERVER_BIND | STREAM_SERVER_LISTEN",
"description": ""
},
"context": {
"name": "context",
"type": "null",
"optional": "true",
"description": ""
}
}
}
I do wonder if this is a known limitation of the current renderer and if there is any current effort of fixing this?
- 主要言語
- PHP
- スター
- 91
- フォーク
- 59
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
このプロジェクトの環境構築ファイルはまだ確認していません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
php/phd のほかの issue
-
難易度 3/5 1〜2日 初心者へのやさしさ 65/100
-
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
-
難易度 4/5 3〜5日 初心者へのやさしさ 52/100
-
難易度 3/5 1〜2日 初心者へのやさしさ 65/100
-
難易度 4/5 3〜5日 初心者へのやさしさ 42/100
似ている issue
-
sync-en
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
メンテナーはふだん 1 日以内に返信
-
bug Feature: Kiosk
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
メンテナーはふだん 1 日以内に返信
-
Infrastructure: actions Module: zmscitizenapi Module: zmsentities php Type: Bug unit tests
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
it-at-m/eappointment#3480 ·
メンテナーはふだん 1 日以内に返信
-
HttpClient
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信
-
CI: composer install fails — league/flysystem 1.x blocked by security advisory GHSA-cxf4-7mrp-vvprオープンdevops type: bug
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
メンテナーはふだん 1 日以内に返信