Ревью вайб-кода с гнильцой, который притворяется оптимизированным С++ кодом
Ценность квалифицированного программиста смещается в сторону умения проводить обзоры кода. Генерировать код становится проще, но всё так же важно проверять его с точки зрения качества декомпозиции, корректности реализации, эффективности, безопасности. Посмотрим на примере маленького проекта markus, созданного с помощью Claude Opus, почему важно понимать сгенерированный код и уметь видеть, что скрывает красивый текст программы.
Ценность квалифицированного программиста смещается в сторону умения проводить обзоры кода. Генерировать код становится проще, но всё так же важно проверять его с точки зрения качества декомпозиции, корректности реализации, эффективности, безопасности. Посмотрим на примере маленького проекта markus, созданного с помощью Claude Opus, почему важно понимать сгенерированный код и уметь видеть, что скрывает красивый текст программы.
👍6🔥2
Спрашивают, в каких процессах безопасной разработки, перечисленных в ГОСТ Р 56939—2024 (РБПО), может применяться PVS-Studio?
Отвечаю:
7 — Моделирование угроз и разработка описания поверхности атаки.
Косвенное использование. Анализатор PVS-Studio осуществляет поиск проблем на поверхности атаки, а не самой поверхности атаки (taint-анализ). Чтобы он хорошо это делал, необходима дополнительная разметка истоков и стоков данных (см. ГОСТ Р 71207—2024, п. 6.3.а). Подробнее.
8 — Формирование и поддержание в актуальном состоянии правил кодирования. Многие регламенты кодирования построены на основе таких стандартов, как CWE, MISRA C/C++, OWASP ASVS, SEI CERT. PVS-Studio поддерживает перечисленные стандарты и может в автоматическом режиме ещё до этапа обзора кода обнаружить многие дефекты, перечисленные в них.
9 — Экспертиза исходного кода.
Невозможна для больших объёмов кода без привлечения инструментов статического анализа.
10 — Статический анализ исходного кода.
PVS-Studio совместим с ГОСТ Р 71207—2024 (Статический анализ кода) и полностью закрывает 10-й процесс для языков C, C++, C# и Java. Сейчас идёт разработка ядер анализатора для Go, JS и TS.
17 — Проверка кода на предмет внедрения вредоносного программного обеспечения через цепочки поставок.
Это прерогатива композиционных анализаторов кода (SCA). Однако PVS-Studio также способствует безопасности, выявляя их в коде сторонних компонент потенциальные уязвимости (критические ошибки в терминологии ГОСТ Р 71207—2024).
24 — Поиск уязвимостей в программном обеспечении при эксплуатации.
Эта мера подразумевает более глубокую проверку проекта в том числе статическими анализаторами кода, запущенными в более педантичном режиме.
Отвечаю:
7 — Моделирование угроз и разработка описания поверхности атаки.
Косвенное использование. Анализатор PVS-Studio осуществляет поиск проблем на поверхности атаки, а не самой поверхности атаки (taint-анализ). Чтобы он хорошо это делал, необходима дополнительная разметка истоков и стоков данных (см. ГОСТ Р 71207—2024, п. 6.3.а). Подробнее.
8 — Формирование и поддержание в актуальном состоянии правил кодирования. Многие регламенты кодирования построены на основе таких стандартов, как CWE, MISRA C/C++, OWASP ASVS, SEI CERT. PVS-Studio поддерживает перечисленные стандарты и может в автоматическом режиме ещё до этапа обзора кода обнаружить многие дефекты, перечисленные в них.
9 — Экспертиза исходного кода.
Невозможна для больших объёмов кода без привлечения инструментов статического анализа.
10 — Статический анализ исходного кода.
PVS-Studio совместим с ГОСТ Р 71207—2024 (Статический анализ кода) и полностью закрывает 10-й процесс для языков C, C++, C# и Java. Сейчас идёт разработка ядер анализатора для Go, JS и TS.
17 — Проверка кода на предмет внедрения вредоносного программного обеспечения через цепочки поставок.
Это прерогатива композиционных анализаторов кода (SCA). Однако PVS-Studio также способствует безопасности, выявляя их в коде сторонних компонент потенциальные уязвимости (критические ошибки в терминологии ГОСТ Р 71207—2024).
24 — Поиск уязвимостей в программном обеспечении при эксплуатации.
Эта мера подразумевает более глубокую проверку проекта в том числе статическими анализаторами кода, запущенными в более педантичном режиме.
Проверки реализуются другими инструментами анализа или теми же инструментами, но с другими настройками конфигурации с целью обеспечения анализа с меньшей долей пропусков ошибок за счёт применения специализированных алгоритмов, привлечения больших вычислительных и временных ресурсов.
👍3❤2🔥2👏1
Тема неопределённого поведения (UB) в языке C++ освещается и обсуждается многие годы, но это не значит, что она исчерпала себя. Это плата, которую программисты отдают за эффективные оптимизации кода, такие как удаление ряда проверок. C++ - опасный инструмент, и не помешает лишний раз напомнить, как правильно держать его в руках.
Доклад коллеги Алексея на эту тему:
Неопределённое поведение: если про него не думаете, это не значит, что его нет.
P.S. Был задан вопрос про безопасные компиляторы (ГОСТ Р 71206—2024). Подробнее с этой темой можно познакомиться здесь: Использование безопасной системы сборки программного обеспечения.
Доклад коллеги Алексея на эту тему:
Неопределённое поведение: если про него не думаете, это не значит, что его нет.
P.S. Был задан вопрос про безопасные компиляторы (ГОСТ Р 71206—2024). Подробнее с этой темой можно познакомиться здесь: Использование безопасной системы сборки программного обеспечения.
👍4
Forwarded from PVS-Studio: поиск ошибок в коде
Быть тимлидом — это не только про процессы и задачи, но и про людей, ожидания и собственные сомнения.
На прошедшем вебинаре поговорили о том, кто такой менеджер в IT и зачем он вообще нужен, как выстраивать взаимодействие с командой, с какими ловушками сталкиваются новые лидеры и как не потерять себя.
Посмотреть можно тут:
- Наш сайт
- VK video
- Rutube
- YouTube
#вебинар
На прошедшем вебинаре поговорили о том, кто такой менеджер в IT и зачем он вообще нужен, как выстраивать взаимодействие с командой, с какими ловушками сталкиваются новые лидеры и как не потерять себя.
Посмотреть можно тут:
- Наш сайт
- VK video
- Rutube
- YouTube
#вебинар
❤2
Индустрия разделится на фабрики дешёвого мусора и компании, умеющие контролировать качество.
PVS-Studio - статический
💯3👍2
Forwarded from Кадровый Болт Генона
Компании в России судятся с работниками из-за нейросетей
https://kod.ru/ai-workers-sud
Буду ИИ-контролёром, кста. Не люблю нейрохрючево 🌝
https://kod.ru/ai-workers-sud
Российские компании судятся с сотрудниками, делавшими работу с помощью нейросетей. О новой судебной практике и трендах на рынке труда сообщает РБК.
По данным издания, работодатели пытаются взыскать убытки за плохой код, ошибочные стратегии и уродливый дизайн. Однако суды чаще всего встают на сторону работников.
Причина проста, отмечает РБК: в трудовых договорах нет прямого запрета на использование ИИ. Если компания приняла результат — в его низком качестве виновата она сама.
Показательный пример, который приводит издание: продакт-менеджер стартапа самостоятельно настраивал облачный сервис по инструкции чат-бота. В итоге он стёр почти все данные на серверах компании. Бизнес несколько дней не мог работать и понёс серьёзные убытки. Вместо ожидаемой экономии пришлось нанимать внешних специалистов для восстановления из бэкапа.
По данным исследования Ancor и Reforum Future Hub, 45% россиян уже применяют ИИ в работе, ещё 36% — очень активно. Чаще всего нейросетям поручают тексты, сбор данных и креативные задачи.
Как пишет РБК, результаты такого сотрудничества оставляют желать лучшего. В сданных проектах обнаруживаются нестыковки, повторы и грубые ошибки.
Один бизнесмен нанял консультанта для анализа нового направления — тот быстро сдал красивый отчёт на 50 страниц. При проверке выяснилось: данные заказчика проигнорированы, часть вопросов осталась без ответа, а стиль явно выдавал электронного помощника.
В маркетинге похожих случаев стало много, сообщает издание. Один подрядчик прислал стратегию, где конкуренты анализировались совсем не те.
Бездумное использование ИИ дорого обходится бизнесу: например, генерация картинок в стиле охраняемых авторским правом художников уже приводит к судебным искам.
Заказчики пытаются оспорить договоры и вернуть деньги, узнав об использовании алгоритмов. По данным РБК, суды последовательно им отказывают: оценивается лишь качество результата, а не инструменты исполнителя.
Особенно опасным трендом в издании называют атаку «нейроюристов». Предприниматели заменяют адвокатов чат-ботами — и получают документы со ссылками на несуществующие законы.
Нейросетями увлеклись даже чиновники, отмечает РБК. Патентный поверенный компании UserGate уже получает официальные отказы, написанные явно с помощью ИИ, — с сомнительными нормами и хромающей логикой.
По прогнозам экспертов, вскоре на рынке появится новая профессия — ИИ-контролёр. Индустрия разделится на фабрики дешёвого мусора и компании, умеющие контролировать качество.
Выиграют те, кто использует нейросети лишь как черновой инструмент, считают в издании. Настоящая экспертная работа живых людей превратится в штучный и дорогой товар.
Буду ИИ-контролёром, кста. Не люблю нейрохрючево 🌝
👍6😁3❤2
Forwarded from АК-ВС 3 | Анализатор кода
Как думаете, сколько времени занимает такая проверка?
if token == "secret_key":
allow_access()
Почти за мгновение. Но иногда эти миллисекунды могут выдать секрет.
Во многих реализациях строки сравниваются посимвольно.
Алгоритм обычно выглядит так:
1) Сравнить первый символ
2) Если совпал - второй
3) Если совпал второй - третий
И так далее
Если символ не совпал, тогда сравнение заканчивается.
Предположим секретный токен
A9F4K2
Если атакующий отправит
BXXXX
Сравнение закончится на первом символе.
Если отправить AXXXX, то проверка пройдет чуть дальше.
В результате время выполнения будет немного отличаться.
Если отправить много запросов и измерять время ответа, можно постепенно угадывать символы по одному.
Используют сравнение за константное время.
Алгоритм сравнивает все символы, даже если первый уже не совпал.
Для этого во многих языках есть специальные функции, например:
GO
subtle.ConstantTimeCompare(a, b)
JavaScript
crypto.timingSafeEqual(a, b)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14
Тихий враг или молчаливый союзник? Коротко о выравнивании в C++. Часть 3
PVS-Studio
Тихий враг или молчаливый союзник? Коротко о выравнивании в C++. Часть 3
Мы уже прошли через базовое выравнивание полей и изучили, как наследование наслаивает данные друг на друга. Казалось бы, теперь-то всё, все ловушки изучены. Но не тут-то было! Есть у этой темы ещё...
👌3
Самое быстрое — «хренак-хренак и в продакшн»: о статическом анализе и скорости выхода продукта
Иногда задают вопрос: "Как статический анализ ускорит Time to market?"
Никак. Статический анализатор не ускорит выход продукта/обновления на рынок. С ним будет дороже и медленнее. Причина — неправильный вопрос.
Аналогично можно спрашивать, как этап тестирования ускоряет Time to market? Точно так же — никак. Тестировщикам мало того, что надо деньги платить, так они ещё будут разработчиков багами отвлекать. Намного быстрее просто написать запускающийся код и выложить дистрибутив. Как говорится, "хренак-хренак и в продакшен". Это самый быстрый вариант.
Но про тестирование, в отличии от статического анализа, такой вопрос не задают. Все понимают, что тестирование — важный элемент создания ПО. Видимо, статический анализ — более молодая методология по сравнению с тестированием, и он просто ещё не стал неотъемлемой частью разработки. Хотя видится очевидным, что и то, и другое неразрывно связано с обеспечением необходимого качества создаваемых программных продуктов.
Какой вопрос правильный?
Как статический анализ ускоряет Time to market при выпуске продуктов заданного уровня качества и надёжности?
Другое дело. Если нужно выпустить качественный продукт, то статический анализ может выявить многие ошибки и дефекты безопасности быстрее и дешевле, чем другие методы. Некоторые виды дефектов лучше обнаруживаются статическим анализатором кода, чем юнит-тестами, динамическим анализом, ручным тестирование и так далее.
Впрочем, это свойство и других методик. Есть дефекты, которые наиболее эффективно будут обнаруживать юнит-тесты, поэтому профессиональные разработчики не пытаются выбрать какой-то один подход, а используют сразу несколько. Эти разные меры усиливают друг друга.
Статический анализ применяется на этапе конструирования, то есть написания кода, поэтому позволяет устранить многие ошибки ещё до этапа тестирования. Хотя на анализ предупреждений необходимо тратить время, это окупается сокращением числа дефектов, которые выявляются на других этапах проверки продукта и его эксплуатации. Известно, что чем раньше ошибка найдена, тем дешевле её исправление.
Иногда задают вопрос: "Как статический анализ ускорит Time to market?"
Никак. Статический анализатор не ускорит выход продукта/обновления на рынок. С ним будет дороже и медленнее. Причина — неправильный вопрос.
Аналогично можно спрашивать, как этап тестирования ускоряет Time to market? Точно так же — никак. Тестировщикам мало того, что надо деньги платить, так они ещё будут разработчиков багами отвлекать. Намного быстрее просто написать запускающийся код и выложить дистрибутив. Как говорится, "хренак-хренак и в продакшен". Это самый быстрый вариант.
Но про тестирование, в отличии от статического анализа, такой вопрос не задают. Все понимают, что тестирование — важный элемент создания ПО. Видимо, статический анализ — более молодая методология по сравнению с тестированием, и он просто ещё не стал неотъемлемой частью разработки. Хотя видится очевидным, что и то, и другое неразрывно связано с обеспечением необходимого качества создаваемых программных продуктов.
Какой вопрос правильный?
Как статический анализ ускоряет Time to market при выпуске продуктов заданного уровня качества и надёжности?
Другое дело. Если нужно выпустить качественный продукт, то статический анализ может выявить многие ошибки и дефекты безопасности быстрее и дешевле, чем другие методы. Некоторые виды дефектов лучше обнаруживаются статическим анализатором кода, чем юнит-тестами, динамическим анализом, ручным тестирование и так далее.
Впрочем, это свойство и других методик. Есть дефекты, которые наиболее эффективно будут обнаруживать юнит-тесты, поэтому профессиональные разработчики не пытаются выбрать какой-то один подход, а используют сразу несколько. Эти разные меры усиливают друг друга.
Статический анализ применяется на этапе конструирования, то есть написания кода, поэтому позволяет устранить многие ошибки ещё до этапа тестирования. Хотя на анализ предупреждений необходимо тратить время, это окупается сокращением числа дефектов, которые выявляются на других этапах проверки продукта и его эксплуатации. Известно, что чем раньше ошибка найдена, тем дешевле её исправление.
👍8
Сегодня мини-подборка под разный интерес:
1) Обзор PVS-Studio 7.42. Там говорится, что для студентов временно нет вариантов использования. Переработали разделы сайта, всё опять есть – Бесплатное использование PVS-Studio студентами и преподавателями.
2) Подводные камни регулярных выражений: катастрофический возврат, ReDoS-атаки и выявление уязвимостей. Немного РБПО теории. А вообще, напоминаю, что у нас есть про РБПО вот такая большая подборка – GOST56939.RU.
3) Запускаем цикл вебинаров, посвященных современному Gradle для Java-разработчика. Первый вебинар – Современный Gradle для Java-разработчика: один модуль — хорошо, несколько — лучше.
4) Продолжаем цикл подкастов "Разбаговка" – Контроль команды: как и зачем?
1) Обзор PVS-Studio 7.42. Там говорится, что для студентов временно нет вариантов использования. Переработали разделы сайта, всё опять есть – Бесплатное использование PVS-Studio студентами и преподавателями.
2) Подводные камни регулярных выражений: катастрофический возврат, ReDoS-атаки и выявление уязвимостей. Немного РБПО теории. А вообще, напоминаю, что у нас есть про РБПО вот такая большая подборка – GOST56939.RU.
3) Запускаем цикл вебинаров, посвященных современному Gradle для Java-разработчика. Первый вебинар – Современный Gradle для Java-разработчика: один модуль — хорошо, несколько — лучше.
4) Продолжаем цикл подкастов "Разбаговка" – Контроль команды: как и зачем?
Forwarded from PVS-Studio: поиск ошибок в коде
Единорог Коди и его товарищ Баг — узнаваемые маскоты PVS-Studio. Этих персонажей вы видели во многих сценариях: при археологических раскопках, в космосе, при ограблении банка, в саду и в сточной канаве. Но как вообще появился этот единорог, и как же он выглядел на заре времён?
Давайте посмотрим хронологию взросления Коди в новой статье, а также изучим самые занятные иллюстрации с его участием! Переходите по ссылке❤️
#статья #PVS_Studio
Давайте посмотрим хронологию взросления Коди в новой статье, а также изучим самые занятные иллюстрации с его участием! Переходите по ссылке
#статья #PVS_Studio
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5
Понравилась очередная статья Сергея Кушниренко и решил ссылкой здесь поделиться – Про 10x программистов.
P.S. А для тех, кто ещё не видел, приглашаю вот на такой раздел у нас на сайте – С++ квиз от PVS-Studio и Сергея Кушниренко.
P.S. А для тех, кто ещё не видел, приглашаю вот на такой раздел у нас на сайте – С++ квиз от PVS-Studio и Сергея Кушниренко.
Хабр
Про 10x программистов
Есть такая старая и немного протухшая дискуссия про 10x программистов. То ли они существуют, то ли это миф стартаперов, то ли это просто мечтания менеджеров про «давайте наймем одного волшебника...
Продолжаем развивать Go анализатор. Про новую диагностику в PVS-Studio для выявления классического паттерна опечаток. Как можно ошибиться при обработке ошибок в Go.
Forwarded from PVS-Studio: поиск ошибок в коде
Мы открыли ранний доступ для анализатора TypeScript 🔥
Если вы оставляли заявку, проверьте почту — вам должны были прийти инструкции по тестированию. Если вдруг инструкции не обнаружите, напишите нам в поддержку.
А для тех, кто впервые узнал о разработке нами TS анализатора, вот ссылочка на регистрацию и участие в EAP❤️
#eap #TS
Если вы оставляли заявку, проверьте почту — вам должны были прийти инструкции по тестированию. Если вдруг инструкции не обнаружите, напишите нам в поддержку.
А для тех, кто впервые узнал о разработке нами TS анализатора, вот ссылочка на регистрацию и участие в EAP
#eap #TS
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
PVS-Studio в CMake: теперь официально
Если у вас кроссплатформенный проект на C или C++, то, как правило, вы не завязываетесь на одну систему сборки, а используете генератор сценариев для сборочных систем. Самый распространённый из них, CMake, недавно получил официальную интеграцию со статическим анализатором PVS-Studio для этих языков.
❤🔥8❤2👍2
В социальных сетях вирусится высказывание Бьёрна Страуструпа про то, что ИИ в С++ не особо так успешен. Пожалуй, да… Пожалуй, да.
💯5
У меня сегодня День Рождения. Приобретайте лицензии на PVS-Studio. Мне будет приятно! 🎂❤️
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18🏆7❤5😐2
Дайте посмотреть на нормальный С++ проект, созданный вайб-кодингом
Чтобы корректировать развитие PVS-Studio я заинтересован смотреть C++ проекты, созданные с использованием генеративного AI или, по-простому, вайб-кодинга. Но вот незадача: все кругом пишут про этот самый вайб-кодинг, но я не знаю, как и где искать такие открытые проекты.
Мне попадается какая-то белиберда типа enhance-client, сгенерированная за $15. Но это даже смотреть несерьёзно. По присутствию в репозитории
Если немного поправить и проверить, что удалось собрать, то там лезут перлы вида:
Предупреждение PVS-Studio: V522 [CWE-476, CERT-EXP34-C, SEC-NULL] Dereferencing of the null pointer 'env' might take place. autototem.cpp 757
Явное разыменование нулевого указателя.
Или бессмысленные сравнения значения типа
Предупреждение PVS-Studio: V674 [CWE-682, CERT-FLP36-C] The '0.1f' literal of the 'float' type is compared to a value of the 'int' type. shield_breaker.cpp 628
Такие ляпы нет смысла серьёзно разбирать и описывать.
Можно спросить: "А что ты хочешь от поделок за 15$?" Да, в общем-то, ничего, но вместо нормальных проектов попадаются они. Мне интересно изучить большие открытые проекты нормального качества, при написании которых используется GenAI. А то пока ощущение, что термин "вайб-кодинг" есть, а C++ проектов нет. Или за них стыдно? :)
Если вы знаете подобные большие проекты, то присылайте ссылки на них в комментарии. Заранее спасибо.
Чтобы корректировать развитие PVS-Studio я заинтересован смотреть C++ проекты, созданные с использованием генеративного AI или, по-простому, вайб-кодинга. Но вот незадача: все кругом пишут про этот самый вайб-кодинг, но я не знаю, как и где искать такие открытые проекты.
Мне попадается какая-то белиберда типа enhance-client, сгенерированная за $15. Но это даже смотреть несерьёзно. По присутствию в репозитории
.obj, .iobj, .ipdb файлов и прочего мусора видно, что автор не понимает, что он делает. Проект не компилируется по разным причинам, например, из-за того, что заложен какой-то огрызок файла bytes.hpp (у массива нет конца).Если немного поправить и проверить, что удалось собрать, то там лезут перлы вида:
void enhance::modules::autototem::run()
{
....
auto env = enhance::instance->get_env();
if (!env)
{
env->DeleteLocalRef(player);
return;
}
....
}
Предупреждение PVS-Studio: V522 [CWE-476, CERT-EXP34-C, SEC-NULL] Dereferencing of the null pointer 'env' might take place. autototem.cpp 757
Явное разыменование нулевого указателя.
Или бессмысленные сравнения значения типа
int с константой 0.1f:int sdk::minecraft_client::get_attack_cooldown() { .... }
void enhance::modules::shield_breaker::run()
{
....
if (sdk::instance->get_attack_cooldown() > 0.1f)
....
}Предупреждение PVS-Studio: V674 [CWE-682, CERT-FLP36-C] The '0.1f' literal of the 'float' type is compared to a value of the 'int' type. shield_breaker.cpp 628
Такие ляпы нет смысла серьёзно разбирать и описывать.
Можно спросить: "А что ты хочешь от поделок за 15$?" Да, в общем-то, ничего, но вместо нормальных проектов попадаются они. Мне интересно изучить большие открытые проекты нормального качества, при написании которых используется GenAI. А то пока ощущение, что термин "вайб-кодинг" есть, а C++ проектов нет. Или за них стыдно? :)
Если вы знаете подобные большие проекты, то присылайте ссылки на них в комментарии. Заранее спасибо.
👍7😁1
Появилась публичная запись доклада моих коллег с C++Russia 2025. Юрий Минаев, Олег Лысый – Семантика C++ изнутри компилятора.
Смотреть: VKvideo, Youtube, Cppconf.
Смотреть: VKvideo, Youtube, Cppconf.
Поговорим о семантике C++ с точки зрения статического анализатора или фронтенда компилятора. Рассмотрим, как устроена таблица символов и как происходит поиск имен, а также как семантика влияет на парсинг. Поговорим о том, как происходит выбор перегрузок и каким образом компилятор находит функции, которые даже не видны в текущей точке программы. Еще затронем тему шаблонов и их инстанцирования.
👍7