pin-the-case-that-narrowed-the-rule
Когда проверка срабатывает не на той цели, исправление делает её слабее. Зафиксируйте ложное срабатывание тестом в том же commit, иначе правило разрушится незаметно.
Присвоено человеком, который прочитал карточку, а не заявлено файлом о самом себе. Карточка, которую агент выводит во время запуска, поглотившего недоверенное содержимое, рождается заражённой и удерживается на разбор, прежде чем её вообще извлекут.
Когда это вспоминается
- линтер ругается на законный код
- добавляю исключение
- ложное срабатывание в CI
- ослабляю проверку
Ценность обычно лежит в разделах «Избегать» и «Проверить». «Делать» — это раздел, который пишут все.
Текст карточки выше — перевод. Английский оригинал — это то, что импортирует командная строка, что читает агент во время работы и что подтверждает хеш ниже.
Повод
Написанная вами проверка упала на чём-то, что на самом деле в порядке, и вы собираетесь добавить исключение, запись в allowlist или более узкий шаблон.
Это не относится к случаю, когда проверка нашла настоящую проблему, — чините проблему. Не относится это и к подстройке порога до того, как проверка хоть раз поработала всерьёз.
Делать
- Запишите одним предложением, почему помеченный случай законен. Если не можете, то, возможно, проверка права, а код неверен.
- Добавьте в набор тестов оба случая: законный, который обязан проходить, и синтетическую версию настоящего нарушения, которая обязана по-прежнему падать.
- Сужайте правило как можно меньше. Исключайте путь, а не целый каталог; требуйте отрицания рядом, а не выбрасывайте фразу из списка.
- Помещайте сужение в отдельный коммит и указывайте в сообщении, какой случай к нему вынудил.
Избегать
Удалять правило, потому что оно однажды помешало. Избегайте и более тихой версии: расширять исключение, пока правило не перестанет покрывать ничего, — allowlist, растущий каждый спринт, это правило, которое выводят из строя по строчке, без чьего-либо решения его вывести.
Не исключайте по файлу, когда настоящее различие — по смыслу. Проверка фразы, запрещающая предложение целиком, запретит и предупреждение, которое его отрицает, и честное лечение — требовать отрицания, а не переставать проверять эту страницу.
Проверить
После сужения запустите набор с вновь внесённым исходным нарушением. Оно обязано по-прежнему падать.
Затем прочтите дифф самого правила и спросите: какой класс проблем теперь может пройти, а раньше не мог? Если ответить не получается, сужение не было понято.
Риск
Это добавляет тест на каждое исключение, а набор, полный тестов на исключения, — набор, который утомительно читать.
Больший риск — считать закреплённый тест доказательством того, что правило по-прежнему сильно. Он доказывает, что один случай всё ещё падает. Правило, суженное пять раз, имеет пять закреплённых случаев и, возможно, большую дыру между ними, и увидеть её можно, только перечитав правило целиком.
Как применить
Карточка — это данные. Склонируйте репозиторий и импортируйте её по пути: всё, что приходит по сети, считается заражённым и удерживается до одобрения — это и есть желаемое поведение, и поэтому здесь нет установщика в одну строку.
git clone https://github.com/brcampidelli/chimera-agent.gitchimera skills-import chimera-agent/skills/pin-the-case-that-narrowed-the-rule/SKILL.mdЦелостность
SHA-256 файла в опубликованном виде. Импортёр может проверить, что полученное совпадает с показанным на этой странице.
9ae6da37eebf345c4dc4df56dd7506b00ea89e8ee74738afa8ffeab7a56bf0ed