kalessil / phpinspectionsea

A Static Code Analyzer for PHP (a PhpStorm/Idea Plugin)
https://plugins.jetbrains.com/plugin/7622?pr=phpStorm
Other
1.44k stars 118 forks source link

mkdir replacement looses recursive flag #1939

Open Simbiat opened 6 months ago

Simbiat commented 6 months ago
Subject Details
Plugin Php Inspections (EA Extended)
Language level PHP 8.3

Current behaviour

Have a line like

mkdir($dir, recursive: true);

It will be marked for replacement. Apply replacement. It will be replaced with

if (!mkdir($concurrentDirectory = $dir, true) && !is_dir($concurrentDirectory)) {
    throw new \RuntimeException(sprintf('Directory "%s" was not created', $concurrentDirectory));
}

Expected behaviour

It should be replaced with

if (!mkdir($concurrentDirectory = $dir, recursive: true) && !is_dir($concurrentDirectory)) {
    throw new \RuntimeException(sprintf('Directory "%s" was not created', $concurrentDirectory));
}

I am also not sure if we need to replace $dir with $concurrentDirectory = $dir, too. It make sense if original expression has something like $dir.$dir2.doSomeThings(), but if it's just a variable, there is no benefit with replacing it with another one.

Environment details

PhpStorm 2024.1
Build #PS-241.14494.237, built on March 27, 2024
Licensed to simbiat.ru / Dmitry Kustov
Subscription is active until May 11, 2024.
For non-commercial open source development only.
Runtime version: 17.0.10+8-b1207.12 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
Windows 11.0
GC: G1 Young Generation, G1 Old Generation
Memory: 5120M
Cores: 16
Registry:
  debugger.new.tool.window.layout=true
  run.processes.with.pty=TRUE
  ide.experimental.ui=true
Non-Bundled Plugins:
  com.jetbrains.space (241.14494.150)
  com.intellij.ml.llm (241.14494.240)
  com.kalessil.phpStorm.phpInspectionsEA (5.0.0.0)
ea-inspections-team commented 1 week ago

Thank you for reporting @Simbiat!

We are confirming the bug and able to reproduce it.