搜索我的代码并从Powershell引发异常

搜索我的代码并从Powershell引发异常,powershell,Powershell,如何编写一个脚本来搜索代码文件中的关键短语(如“fit”(“在jasmine单元测试中”)如果发现异常,则抛出一个异常。我不介意提供一个顶级文件夹,但它应该搜索子文件夹。如果我可以将数组中的关键短语传递给它,则会获得额外的分数。我还可以安装一个节点包以方便查找 我的包json文件中有一个脚本,用于“签入”文件。它构建所有文件,运行所有测试,暂存文件,然后提交它们。我希望在开始时添加此脚本,如果发现禁止的短语,则退出(非构建->测试等)。(调试标志,如fit,可能是不推荐的方法) 可以按如下方式组

如何编写一个脚本来搜索代码文件中的关键短语(如“fit”(“在jasmine单元测试中”)如果发现异常,则抛出一个异常。我不介意提供一个顶级文件夹,但它应该搜索子文件夹。如果我可以将数组中的关键短语传递给它,则会获得额外的分数。我还可以安装一个节点包以方便查找

我的包json文件中有一个脚本,用于“签入”文件。它构建所有文件,运行所有测试,暂存文件,然后提交它们。我希望在开始时添加此脚本,如果发现禁止的短语,则退出(非构建->测试等)。(调试标志,如fit,可能是不推荐的方法)

可以按如下方式组合、和cmdlet:

$dir = '...' # specify the directory whose subtree to search.
Get-ChildItem $dir -Recurse -File -Filter *.ps1 | 
  Select-String 'fit(', 'fun(' -List | 
    ForEach-Object { Throw "Phrase found: $($_ | Out-String)" }
如果将上述内容打包为脚本,使用
Throw
将使脚本报告退出代码
1

或者,如果要在报告错误之前查找并报告所有匹配项,请省略
ForEach对象
调用,使用
$matchesFound=Get ChildItem…
收集所有匹配项并将其抛出,或者使用
Write error
手动调用
退出1

要通过调用脚本,请使用:

注意:遗憾的是,PowerShell CLI意外地通过标准输出报告错误,并且错误消息非常嘈杂,并且在Windows PowerShell中跨越多行-请参阅以了解解决方法和背景信息

$dir = '...' # specify the directory whose subtree to search.
Get-ChildItem $dir -Recurse -File -Filter *.ps1 | 
  Select-String 'fit(', 'fun(' -List | 
    ForEach-Object { Throw "Phrase found: $($_ | Out-String)" }
# PowerShell [Core] executable shown; use powershell.exe for Windows PowerShell
pwsh -NoProfile -File YourScript.ps1