Правила для строк скриптов, которые ломаются без ошибки
Правила ловят строки скриптов, которые отрабатывают без ошибки, но портят то, что читает другая программа: потерянное значение или статус, ставший нулём.
Некоторые швы рвутся внутри одной строки скрипта. Строка выполняется без ошибки, а программа, читающая её вывод, получает не то. В этом релизе появились встроенные правила для четырёх таких случаев. Они выключены, пока вы не укажете для них файлы в crossweft.json:
"hazards": {"include": ["scripts/**/*.cmd", "tools/**/*.ps1"]}
cmd-digit-redirect: вecho x=%V%>>fileоднозначное значение принимается за номер потока и теряется.empty-to-zero:[int]$parts[1]илиint(x or 0)превращают отсутствующий статус в 0.toolchain-env-name: ловитset RC=%ERRORLEVEL%перед cmake, cl, msbuild или make.glob-length-guard: ветка отказа вcaseвида??..?*отвергает и вход длиной ровно N символов.
Срабатывание попадает в отчёт как проблема hazards, и его можно простить находкой, как любую другую. Шаблон include, под который не попал ни один файл, считается фатальной ошибкой, так что опечатка не выключит правила. crossweft self-test прогоняет для каждого правила заложенные опасные и безопасные примеры.
Источник: v0.2.7 · CHANGELOG.md