False positive when an entity's property gets changed by a form inside an if
まだ誰も着手していません。
評価
調査の方向性
Start with the PHP reproduction in the issue, focusing on the form creation and handleRequest calls inside the conditional. Reproduce the false-positive report and trace the analysis of the later $user->getOk() condition; done means the condition is no longer reported as always false after the form may change the entity.
索引モデルが issue の本文から書いたものです。
説明
I guess the title doesn't really say it all ;-)
So let me show you what I have:
foreach($users as $user)
{
// If the user is not OK yet, generate the form to edit the user:
if (false === $user->getOk()) {
$form[$user->getId()] = $this->get('form.factory')->createNamed('form' . $user->getId(), UserType::class, $user);
$form[$user->getId()]->handleRequest($request);
if ($form[$user->getId()]->isSubmitted() and $form[$user->getId()]->isValid())
{
$entityManager->persist($user);
$entityManager->flush();
// Here phpstan reports "If condition is always false.", cause it obviously remembers the `if` from above
// and doesn't see that `$user->ok` could have been changed by the form meanwhile
if ($user->getOk()) {
$this->addFlash('success', 'User is now OK');
}
}
}
}
- 主要言語
- PHP
- スター
- 805
- フォーク
- 104
- 平均マージ
- 27分
- マージ済み PR(30日)
- 3
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
phpstan/phpstan-symfony のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
phpstan/phpstan-symfony#510 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
phpstan/phpstan-symfony#494 · コメント 5 件 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
phpstan/phpstan-symfony#268 ·
-
難易度 5/5 1週間以上 初心者へのやさしさ 35/100
phpstan/phpstan-symfony#509 · コメント 2 件 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 48/100
phpstan/phpstan-symfony#466 · コメント 4 件 ·
phpstan/phpstan-symfony の issue をすべて見る
似ている issue
-
bug code quality
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
SemanticMediaWiki/SemanticMediaWiki#7149 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
google/site-kit-wp#13825 ·
メンテナーはふだん 3 日以内に返信
-
Made by AI module: MCP type: bug
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100