Поиск мой код и выбросить исключение из Powershell - PullRequest
1 голос
/ 13 марта 2020

Как мне написать скрипт, который будет искать в моих файлах кода ключевые фразы (например, «fit (» в модульном тесте с жасмином) и выбрасывать исключение, если оно его найдет. Я не против предоставить верхнюю папку, но он должен искать в подпапках. Бонусные баллы, если я могу передать ключевые фразы в массиве. Я также согласен с установкой пакета узла для облегчения.

У меня есть скрипт в моем файле пакета json Я использую для "проверки" файлов. Он собирает все, запускает все тесты, проверяет файлы и затем фиксирует их. Я хотел бы добавить это в начале и выйти (не build -> test, et c), если найдена запрещенная фраза (возможно отладка таких флагов, как fit, устаревшие методы).

"commit-all": "ng build core-library --prod && ng build --prod && echo Executing tests && ng test --browsers ChromeHeadless --no-watch --codeCoverage=false && git checkout tsconfig.json && git checkout src/environments/environment.ts && git add . && git commit -m "

1 Ответ

1 голос
/ 14 марта 2020

Комблеты Get-ChildItem, Select-String и ForEach-Object можно комбинировать следующим образом:

$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-Object, соберите все совпадения с $matchesFound = Get-ChildItem ... и бросьте их, или используйте Write-Error и вручную вызовите exit 1.

. Чтобы вызвать сценарий с помощью CLI , используйте:

# PowerShell [Core] executable shown; use powershell.exe for Windows PowerShell
pwsh -NoProfile -File YourScript.ps1

Примечание. К сожалению, интерфейс командной строки PowerShell неожиданно сообщает об ошибках через stdout , а сообщения об ошибках шумят и занимают несколько строк в Windows PowerShell - см. этот ответ для обхода и справочной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...