jonpurvis/profanify

一个PestPHP插件,帮助捕捉应用中的粗话。

v3.0.0 2024-09-09 12:40 UTC

This package is auto-updated.

Last update: 2024-09-26 13:38:27 UTC


README

Profanify

一个帮助捕捉应用中粗话的PestPHP插件。

Static Analysis Tests GitHub last commit Packagist PHP Version GitHub issues GitHub Packagist Downloads

简介

Profanify是一个PestPHP插件,旨在检测和标记应用中的粗话实例。作为开发者,我们都曾面临过挫折的时刻,无论是调试一个持久的问题,还是试图理解别人写的混乱代码。这些时刻有时会导致代码中包含粗话。

虽然这可能在本地开发中是可以的,但在推送更改之前删除任何粗话是很重要的,这样你的过去挫折就不会出现在生产环境和任何其他人为你的应用程序工作的本地版本中。这也意味着你的代码库保持了专业和尊重。

这就是Profanify的作用所在,该包使得测试应用中常见的粗话变得非常容易,你可能忘记了或者根本不知道它们在那里。如果你将测试作为CI/CD管道的一部分运行,那么这意味着如果代码库中有任何粗话,管道将会失败。

安装

要安装Profanify,你可以在项目的根目录中运行以下命令

composer require jonpurvis/profanify --dev

示例

让我们看看Profanify是如何工作的。它并没有太多,但由于它是一个PestPHP插件,我们可以使用Pest提供的功能,并结合Profanify提供的功能。

让我们看看以下场景,假设我们在应用程序中有以下内容

/**
 * Adds 2 numbers together
 * 
 * @TODO make this less fucking stupid, why doesn't it just add them up?!? Absolute shit 
 */
protected function addNumbers($a, $b): int
{
    $str = $a . ',' . $b;
    $arr = explode(',', $str);
    
    $num1 = (int)$arr[0];
    $num2 = (int)$arr[1];
    
    $sum = ($num1 + 0) + ($num2 * 1);
    
    return $sum;
}

是的,这个方法对于它所做的工作来说过于复杂,我们可以看到有人添加了一个TODO注释,试图重构它并使其更好。不幸的是,他们使用了粗话,如果我们编写并运行以下测试

expect('App')
    ->toHaveNoProfanity()

测试套件将失败,因为其中一个文件中有多个粗话的使用。你不必只测试整个应用程序,你可以将其限制为,例如,控制器

expect('App\Http\Controllers')
    ->toHaveNoProfanity()

你甚至可以期望存在粗话

expect('App\Providers')
    ->not->toHaveNoProfanity()

有时你可能想忽略粗话列表中包含的某些短语。为此,你可以将一个excluding参数传递给toHaveNoProfanity方法。此参数应是一个字符串数组,你想忽略。例如

expect('App')
    ->toHaveNoProfanity(excluding: ['69']);

在上面的测试中,即使测试文件中包含69这个词,测试也会通过。

或者,你可能想测试粗话列表中没有的粗话。为此,将一个including参数传递给toHaveNoProfanity方法。此参数应是一个字符串数组,你希望将其视为粗话。例如

expect('App')
    ->toHaveNoProfanity(including: ['dagnabbit']);

如果测试因为粗话而失败,则输出将显示违规文件和行。IDE,如PHPStorm,允许你点击文件,直接跳转到包含粗话的行。

Expecting 'tests/Fixtures/HasProfanityInComment.php' to not use profanity.
at tests/Fixtures/HasProfanityInComment.php:10

  Tests:    1 failed (1 assertions)
  Duration: 0.06s

语言

Profanify目前支持以下语言

  • 英语
  • 意大利语

每种语言都有自己的配置文件。如果你想添加一种语言,请创建一个新的配置文件。

贡献

欢迎对包的贡献,因为肯定还有需要添加的额外单词。请随意提交带有任何新增内容的拉取请求。如果你在使用包时遇到任何问题,请打开一个问题。

实用链接 & 信用