Skip to main content

Command Palette

Search for a command to run...

Codex для массового редактирования кода

Updated
Codex для массового редактирования кода

У нас есть большая кодовая база. В какой-то момент появилась задача попасть в закрытый корпоративный контур. А для этого надо проходить проверки безопаности и возможно даже сертификацию. В тот момент мы не достигли соглашения и задача потеряла актуальность. Но на этапе подготовительной работы я проделал большую работу по оценке объема предостоящих доделок. Поэтому у нас в пайплайне остались шаги с проверкой кода автоматическими инструментами.

Сделаю шаг в сторону и если вы когда-то будете проходить такие проверки, то в целом могу пожаловаться, что вся эта сказочная индустрия безопасности не имеет практически никакого отношения к реальной безопасности. Все что от вас требуют это прохождение формальных проверок людьми которые вообще мало имеют представления о работе операционных систем, баз данных, кода, не слышали про вектора атак и т.д. Представьте себе крючкотвора который добывается к тому что вы расписались непохожей подписью на двух разных документах. Человек с интеллектом этим не занимается, потому что ему стыдно продавать фуфел, поэтому там естественным образом попадают бюрократы. Настолько это фарс.

Но они применяют автоматизацию для проверки кодовой базы. Автоматизация часто это проприетарная "комплексная система", с очень кривым интерфейсом и выдачей бредовых отчетов. И самое главное что ее никому не показывают, потому что продают за большие деньги. Но есть один секрет, все эти сонаркубы и их аналоговнет-сертифицированые корпоративные клоны на самом деле являются обертками вокруг устаревших версий проектов с открытым исходным кодом. Например для python'а есть продукт bandit, ну и pylint конечно.

Pylint это в принципе must have в работе, потому что он очень ускоряет работу с кодом. Кроме того он обязательно должен быть встроен в редактор кода. А вот bandit применяется реже. Но добавить его как шаг в ci/cd это всего-то строка:

bandit -r -q SRC/

Есть похожие проекты для других языков программирования.

Собственно в пайплайне сборки у меня добавлено несколько шагов и инструментов для проверки кода и они понемногу ругаются, но руки до них не доходят. Есть небольшой технический долг, он копится, но решение его денег в моменте не приносит.

И вот тут начинает сиять Codex. Все что вам требуется это натравить его на свой код приблизительно таким промптом:

Выполни команду:

. venv/bin/activate && bandit -r --severity-level=medium -q SRC/

Этот код вернет множество замечаний по безопасности. 
Пофикси их по всему коду. Повторяй выполнение команды до тех 
пор пока все проблемы не будут исправлены. После выполнения 
этой задачи запусти тесты командой, чтобы убедиться что 
изменения ничего не сломали:

make test

Конечно команда займет время, но когда она закончится вы получите кучу трешовых изменений на сотни строк кода! Часть из них реально будут полезными и помогут прохождение проверок безопасности.