НАЧАЛО >> Оглавление >> Общее описание >> История изменений >> Что нового в проекте I128 >> Версия 2026.2.6 >> [I128-2727] Некорректные PHPDoc-аннотации в результатах статического анализа Phan📄 Скачать в DOCX
| Тип | Версия | Статус | Приоритет | Исполнитель |
|---|---|---|---|---|
| ⚙️ Исправление ошибок | 2026.2.6 | 🔘 Завершено |
Средний | Ilya Mikhaylenko |
Компоненты: Нет
Завершено: 21.08.2026 18:02
Проблема:
При внедрении статического анализа Phan часть предупреждений была связана не с ошибками выполнения, а с устаревшим или некорректным синтаксисом PHPDoc: array[...], @property у объявлений свойств и несоответствие порядка @param фактической сигнатуре. Такой шум мешал разбирать оставшиеся предупреждения baseline для PHP 8.1.
Решение:
PHPDoc и сигнатуры в затронутых местах приведены к синтаксису, понятному Phan. Анализ кода больше не отвлекается на эту группу служебных предупреждений, а оставшиеся сообщения baseline можно разбирать в рамках отдельных задач.
Технические подробности:
В RecListStoreAction заменены неверные @property на @var. В DP_Irbis64Direct старый PHPDoc-вид array[...] заменен на array<...>, порядок @param в ApplyGblToShelf приведен к сигнатуре, а параметр $shelf получил значение по умолчанию без изменения порядка существующих позиционных вызовов.
PR для I128-2727 в release/2026.2: устраняет группу предупреждений Phan baseline, связанную с PHPDoc и сигнатурой ApplyGblToShelf. Изменение не добавляет файлов Phan в репозиторий и не включает diff I128-2726; оставшиеся runtime-risk и stub-предупреждения относятся к соседним задачам baseline.
Куда смотреть:
RecListStoreAction и DP_Irbis64Direct. Chrome: не применимо, изменение не имеет пользовательского экрана. Было: Phan выдавал предупреждения PhanUnextractableAnnotation*, PhanInvalidCommentForDeclarationType, PhanCommentParamOutOfOrder и PhanParamReqAfterOpt. Стало: целевая группа предупреждений отсутствует; оставшиеся сообщения относятся к I128-2726/I128-2728.release/2026.2, merged-зависимостей нет; PR I128-2726 пока не входит в target и не включен в этот diff.Изменения по файлам:
classes/RecListStoreAction.php
$unwantedValues и $parametersConfig заменен неверный для property declaration тег @property на @var.modules/DP_Irbis64Direct/__call/ApplyGblToShelf.inc
@param приведен к фактической сигнатуре: ci, dbn, shelf.array[string] заменен на array<int,string>.$shelf получил значение по умолчанию 0, чтобы устранить PhanParamReqAfterOpt без изменения порядка существующих позиционных вызовов.modules/DP_Irbis64Direct/__call/MakeMfnList.inc
$params переведен с array[mixed] на array<string,mixed>.array[int] на array<int,int>.modules/DP_Irbis64Direct/__call/PrepareTaskList.inc
array[string] на array<int,string>|int, потому что метод может вернуть список строк или код ошибки.Разрешение текущих конфликтов подготовлено в PR #1359 (merge/release-2026.2-to-develop-pr1358 -> develop, commit 169484ec3bf1bde29110dd8cd22cf7f5b3fae057). Обе исходные ветки защищены от прямого push; отдельный PR сохраняет направление переноса release → develop. После принятия #1359 следует повторно проверить этот PR на новые изменения релизной ветки.
Перенос всех изменений из release/2026.2, которые ещё не входят в develop.
PR создан после merge #1353: I128-2785: SocketProxy отправляет внутренние HTTPS-запросы на порт 80.
Пока этот PR открыт, последующие изменения release/2026.2 входят в него автоматически. Перед merge требуется проверить полный diff и пройти обычное review.
Перенос накопленных исправлений release/2026.2 в develop с разрешением конфликтов PR #1358.
Обе исходные ветки защищены от прямого push. Отдельная ветка содержит merge текущего release/2026.2 (e402d81e4d2a59c87254ea3bd62fbd805d6bd332) в текущий develop (df8b1a8ee2d35e0cc0c5e776d64cb71f115013e4). Новые функции develop не переносятся обратно в релизную линию. Для принятия изменений используется обычное review; PR #1358 пока остается открытым.
Разрешение конфликтов:
^, в том числе после редактирования повторений через F3. Отложенная синхронизация отменяется перед сохранением.modules/he3/tests/editor_commands_smoke.js. Существующий тест журнала статистики сохраняет путь tools/PagesStatJournalSelfTest.php.Проверки:
await Irbis.he3.testEditorCommands(). Серверное сохранение подменено; пользовательские БД не изменялись.При принятии сохранить merge-коммит и родителя release/2026.2 в истории develop (merge commit или fast-forward).
После принятия этого PR нужно повторно проверить #1358: если в release не появились новые изменения, его перенос будет полностью выполнен. Автоматизация последующих переносов release → develop не изменялась.