如何在没有 strict_types 声明的情况下找到所有 php class 文件(RegExp / PhpStorm)

How can I find all php class files without strict_types declaration (RegExp / PhpStorm)

我正在尝试将严格类型声明 declare(strict_types=1); 添加到特定目录下的所有 PHP class 和特征文件。

  1. 如何使用 Linux 终端获取没有声明的文件列表?

  2. 如何使用 PhpStorm 添加缺失的声明(检查,在路径 + 正则表达式中替换)?

示例 /src/Foobar.php 没有声明:

<?php
/**
 * class file
 */
namespace Foo\Bar;

use Other\Foo\Bar;

class Foobar {
  // ..
}

示例 /src/Foobar.php 声明:

<?php
/**
 * class file
 */
declare(strict_types = 1);

namespace Foo\Bar;

use Other\Foo\Bar;

class Foobar {
  // ..
}

注释和导入 ("use") 在 class 文件中是可选的。

我做了什么:

为此您不需要正则表达式 - 只需为此使用内置的“快速修复”。

  1. Select files/folder(s) 您希望 运行 项目视图面板中的此类内容
  2. Code | Run Inspection by Name...
  3. 在那里找到 Missing strict type declaration 检查(例如从缩小的列表中键入 strict 和 select)和 运行 它
  4. 确认范围(运行此项检查的范围)
  5. 查看结果 -- 您现在可以应用快速修复(有多种方式 -- 我的屏幕上至少显示了 3 种)-- 可以基于每个文件完成,也可以一次性完成

截图:

正在寻找对 运行 的检查:

应用修复(注意:我 运行 此检查仅针对包含您的示例代码作为内容的单个文件):


或者 - 只需启用适当的检查(默认情况下禁用),您将能够通过通常的方式添加此类代码 Alt + Enter(在 Windows使用默认键盘映射;或直接在代码中通过“灯泡”图标):

Settings/Preferences |编辑|检查 | PHP |类型兼容性 |缺少严格类型声明

快速修复菜单(Alt+Enter)