Crossweft / Обновления / v0.2.7
ОБНОВЛЕНИЕ · v0.2.7 ·

Правила для строк скриптов, которые ломаются без ошибки

Правила ловят строки скриптов, которые отрабатывают без ошибки, но портят то, что читает другая программа: потерянное значение или статус, ставший нулём.

Некоторые швы рвутся внутри одной строки скрипта. Строка выполняется без ошибки, а программа, читающая её вывод, получает не то. В этом релизе появились встроенные правила для четырёх таких случаев. Они выключены, пока вы не укажете для них файлы в 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

← v0.2.5, v0.2.6v0.2.8 →