如何找到所有没有 strict_types 声明的 php 类文件(RegExp / PhpStorm)

Mon*_*key 1 php regex regex-negation phpstorm

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

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

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

不带声明的示例 /src/Foobar.php:

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

use Other\Foo\Bar;

class Foobar {
  // ..
}
Run Code Online (Sandbox Code Playgroud)

带有声明的示例 /src/Foobar.php:

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

namespace Foo\Bar;

use Other\Foo\Bar;

class Foobar {
  // ..
}
Run Code Online (Sandbox Code Playgroud)

注释和导入(“使用”)在类文件中是可选的。

我做了什么:

  • 试图找到一个 PhpStorm 检查来完成我想要的
  • 尝试正则表达式,但没有找到任何在多行上下文中搜索缺少内容的语句

Laz*_*One 5

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

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

截图:

查找要运行的检查:

在此输入图像描述

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

在此输入图像描述


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

设置/首选项| 编辑| 检查 | PHP | 类型兼容性 | 缺少严格的类型声明

在此输入图像描述

快速修复菜单 ( Alt+Enter)

在此输入图像描述