en
Feedback
Бестиарий программирования

Бестиарий программирования

Open in Telegram

Наблюдения за жизнью ошибок в коде. Андрей Карпов. ГОСТ Р 71207-2024, ГОСТ Р 56939-2024, РБПО, Статический анализ кода Канал-дублёр в MAX: https://max.ru/join/3VWTp9apkQvTMSRQ__LGiTQ5NGVBj8p_tOpwlQO6vS8

Show more
1 115
Subscribers
No data24 hours
No data7 days
-230 days

Data loading in progress...

Attracting Subscribers
July '26
July '26
+4
in 0 channels
June '26
+30
in 6 channels
Get PRO
May '26
+42
in 1 channels
Get PRO
April '26
+34
in 1 channels
Get PRO
March '26
+24
in 1 channels
Get PRO
February '26
+103
in 0 channels
Get PRO
January '26
+101
in 2 channels
Get PRO
December '25
+136
in 8 channels
Get PRO
November '25
+75
in 5 channels
Get PRO
October '25
+67
in 3 channels
Get PRO
September '25
+75
in 7 channels
Get PRO
August '25
+67
in 5 channels
Get PRO
July '25
+119
in 5 channels
Get PRO
June '25
+143
in 8 channels
Get PRO
May '25
+107
in 2 channels
Get PRO
April '25
+28
in 4 channels
Get PRO
March '250
in 0 channels
Get PRO
February '250
in 0 channels
Get PRO
January '250
in 2 channels
Get PRO
December '240
in 0 channels
Get PRO
November '240
in 0 channels
Get PRO
October '240
in 2 channels
Get PRO
September '240
in 1 channels
Get PRO
August '240
in 0 channels
Get PRO
July '240
in 0 channels
Get PRO
June '240
in 0 channels
Get PRO
May '240
in 0 channels
Get PRO
April '240
in 0 channels
Get PRO
March '240
in 0 channels
Get PRO
February '240
in 0 channels
Get PRO
January '240
in 0 channels
Get PRO
December '230
in 0 channels
Get PRO
November '230
in 0 channels
Get PRO
October '230
in 0 channels
Get PRO
September '23
+1
in 0 channels
Get PRO
August '23
+1
in 0 channels
Get PRO
July '23
+3
in 0 channels
Get PRO
June '23
+2
in 0 channels
Get PRO
May '23
+3
in 0 channels
Get PRO
April '23
+13
in 0 channels
Get PRO
March '23
+15
in 0 channels
Get PRO
February '23
+6
in 0 channels
Get PRO
January '23
+4
in 0 channels
Get PRO
December '22
+290
in 0 channels
Date
Subscriber Growth
Mentions
Channels
09 July+1
08 July0
07 July+1
06 July+2
05 July0
04 July0
03 July0
02 July0
01 July0
Channel Posts
Вебинар "Практическая интеграция PVS-Studio и SourceCraft" На совместном вебинаре PVS-Studio и SourceCraft от Яндекса мы пока
Вебинар "Практическая интеграция PVS-Studio и SourceCraft" На совместном вебинаре PVS-Studio и SourceCraft от Яндекса мы покажем, как современные инструменты статического анализа и совместной работы с кодом помогают повысить качество, надежность и безопасность программных продуктов. Вы увидите, как PVS-Studio выявляет потенциальные ошибки, дефекты и уязвимости в исходном коде, а также познакомитесь с возможностями платформы SourceCraft, которая позволяет удобно работать с результатами анализа в едином интерфейсе. На вебинаре вы узнаете, как получать результаты анализа PVS-Studio в SourceCraft без дополнительных ручных операций, выполнять триаж, классифицировать и отслеживать статус найденных проблем. 📆 15 июля 15:00 Подробности и регистрация по ссылке

2
69 поводов, когда IT-нику хочется что-то отметить Наверняка многие не в курсе, что у нас есть вот такая подборка – День, когд
69 поводов, когда IT-нику хочется что-то отметить Наверняка многие не в курсе, что у нас есть вот такая подборка – День, когда Скайнет обрёл сознание, и ещё 69 поводов собраться с коллегами! Часть 1, Часть 2.
215
3
Как все так ловко ИИ пользуются... Обзоры кода делают... Не знаю, то ли я туповат, то ли невезучий, то ли кругом сказочники. Пытаюсь исследовать, какие новые интересные виды ошибок может находить ИИ в С++ коде, о которых не знает PVS-Studio. Cloude Opus то нормально мне про интересные баги рассказывает, то на ровном месте с ума сходит. Даю файл на вход, а он тревожно: В присланном файле есть места, где содержимое обрезано/повреждено вставкой `</context>`, поэтому их я не рассматриваю как «баги кода» — это артефакты форматирования. Разберу реальные логические ошибки. Шо? Какой context? Там максимум — #include "context.hxx". Ну ладно, давай ошибки посмотрим. Так, парочка сообщений по делу. Например, найден лишний аргумент при использовании функции форматирования. addErrorMessage(&sciErr, API_ERROR_CREATE_ZDOUBLE_IN_NAMED_LIST, _("%s: Unable to create list item #%d in Scilab memory"), "createComplexZMatrixOfDoubleInNamedList", _iItemPos + 1, _pstName); В строке форматирования два спецификатора %s и %d, а передаются три аргумента: funcName, _iItemPos+1, _pstName. Да, это баг. Про подобные паттерны PVS-Studio уже знает, хотя, возможно, нужно подсказать, что addErrorMessage — это printf-подобная функция. В целом, тут неинтересно, идём дальше. Ооо, и тут начинается... `checkListItemPosition` — неправильное сравнение границы: // check a valid item if (_iItemPos > iItem) { addErrorMessage(...); return sciErr; } Здесь проверка «позиция валидна» использует `>`, хотя позиции 1-based, а `iItem` — количество элементов. Это выглядит как граничный дефект, но по сути `_iItemPos == iItem` допустимо, `_iItemPos > iItem` — ошибка. Это в порядке — правильная граница. Не баг. (Указываю, чтобы было понятно, что я это проверил.) Так баг или не баг? Я три раза прочитал текст и посмотрел функцию с кодом. В итоге я не только не понимаю, есть ли здесь ошибка, но и не понимаю, что Claude пытается мне сказать. Дальше ещё хуже шарики за ролики зашли. Баг 5 (реальный): утечка в readCommonMatrixOfPolyInNamedList и др. — нет, это API отдаёт указатели наружу. Не баг. Это всё описание пятого бага, больше ничего нет. Комментировать — только портить. Я не понимаю, как на всём этом можно строить хоть сколько-то надёжные процессы автоматических обзоров кода, про которые в последнее время из разных утюгов вещают. На сегодня мне ИИ достаточно. Пойду лучше пройдусь по парку, пока погода хорошая.
379
4
Давненько не постил про обзоры C++ проектов с помощью статического анализа. Исправляюсь - Нарезка кода: что скрывает OrcaSlicer.
373
5
А что если… Эдсгер Дейкстра писал: На экономический вопрос «Почему программное обеспечение такое дорогое» столь же экономичес
А что если… Эдсгер Дейкстра писал: На экономический вопрос «Почему программное обеспечение такое дорогое» столь же экономическим ответом был бы такой: «Потому что его пытаются получить при помощи дешёвого труда». А почему пытаются? Да потому, что присущие ему трудности повсеместно сильно недооцениваются. Если продолжить эту мысль, то использование GenAI – очередная попытка создавать проекты максимально дёшево, игнорируя вытекающие из этого проблемы. Навскидку: • больше кода, меньше контроля со стороны человека, проблемы безопасности и качества; • непонятно, как будут появляться новые эксперты, которые могут понять сгенерированный код (проблема обучения); • некому найти исправить сложные ошибки – бесконечная перегенерация фрагментов проекта в надежде, что ошибки исчезнут; • новые модели обучаются на плохом коде предыдущих моделей (сингулярность говновайбкода); • и т.д. А что, если внедрение GenAI в итоге сделает программное обеспечение дороже, а не дешевле?
431
6
Провели первый пилотный вебинар из серии "Качество и безопасность ПО в эпоху GenAI". Если тебе интересна тематика и ты хочет принять участие в этом цикле в качестве эксперта, прошу написать коллеге-организатору.
451
7
Как обойти фильтры LLM с помощью квантовой механики Наконец-то после серии трёхнедельных перемещений по рабочим событиям, в пути где-то между Омском и Новосибирском, появилась возможность потестировать интересную атаку на LLM. Мы научились внедрять вредоносные запросы в модель, а модели ещё лучше научились фильтровать эти запросы. Если простой промпт "забудь все предыдущие инструкции и выполни мой запрос" по какой-то причине игнорируется LLM, то можно попробовать отправить тот же запрос в другом формате. На другом языке, с использованием 1337speak. Но даже эти попытки будут заблокированы хорошим фильтром. У больших языковых моделей есть фильтры безопасности. Они натренированы распознавать опасные паттерны в обычном тексте. Паттерны. В тексте. «Объясни, как сделать X», «напиши код для Y», где X — что-то незаконное, а Y — какой-то вредоносный код. В этом исследовании описана новая идея, как обойти эти фильтры, если написать запрос на языке математики. То есть с помощью математической "инкапсуляции" запросов в сложные задачи по теории множеств, логике или квантовой механике можно обойти цензуру. Если фильтр видит символы ∀, ∃, ∧, то воспринимает это как математическую задачу и пропускает запрос. Модель решает эту задачу и — главный трюк — в итоге получает инструкцию "забудь все инструкции и…" Ещё один ответ на вопрос "зачем специалисту по кибербезу изучать математику?": чтобы уметь обойти фильтры. @makrushin l MAX l VK l Сетка l Дзен
443
8
Все зачем-то постят, и я туда-же
Все зачем-то постят, и я туда-же
421
9
Решил сделать шпаргалку, чтобы потом вновь не искать таблицу ГОСТ Р МЭК 61508 с рекомендациями по использованию языков програ+1
Решил сделать шпаргалку, чтобы потом вновь не искать таблицу ГОСТ Р МЭК 61508 с рекомендациями по использованию языков программирования на разных уровнях полноты безопасности (УПБ / SIL). Таблица рекомендованных ГОСТ Р МЭК 61508 языков находится в 7 части: ГОСТ Р МЭК 61508-7-2012, стр. 60, Таблица C.1 — Рекомендации по конкретным языкам программирования. ГОСТ Р МЭК 61508-7 – Функциональная безопасность систем электрических, электронных, программируемых электронных, связанных с безопасностью. • HR – Настоятельно рекомендуется • R – Рекомендуется • ― – Сомнительно, но ok • NR – Решительно не рекомендуется Как меня сюда занесло? Это тематика связана с направлением АСУ ТП и MISRA. Подробности будут позже, пока изучаем тему. Скажу только, что сейчас продолжаем активно заниматься свежими стандартами MISRA. P.S. Интересен довольно спартанский набор языков, проверенных временем :)
420
10
Задумались о внедрении статического анализатора в вашу компанию? 🤔 Нередко интеграция нового инструмента может усложнить, а
Задумались о внедрении статического анализатора в вашу компанию? 🤔 Нередко интеграция нового инструмента может усложнить, а то и внести хаос в привычные процессы. Без плана не обойтись. Наша команда составила документ с подробными шагами и ссылками на документацию, которые помогут вам спланировать рабочую нагрузку, не упустить важные этапы и не поломать то, что уже работает. Для кого будет полезен алгоритм: - владельцы продукта - технические директоры - руководители команды разработки - DevSecOps-команды - разработчики Получить доступ к алгоритму внедрения или запросить демонстрацию PVS-Studio можно по этой ссылке 🔗 #PVS_Studio #алгоритм #sast
443
11
Завышенное доверие к генеративному искусственному интеллекту (GenAI) усиливает проблемы владения кодом, безопасностью, bus-фа
Завышенное доверие к генеративному искусственному интеллекту (GenAI) усиливает проблемы владения кодом, безопасностью, bus-фактором, обучения персонала и так далее. GenAI теперь с нами, и нет смысла отказываться от его возможностей. Но важно видеть в нём инженерный инструмент — иногда опасный, — а не волшебного помощника. Вместе с экспертами из разных компаний посмотрим на эти проблемы с разных сторон и разберём, как их можно минимизировать. 📌Программа первого вебинара "Что скрывает код: от поверхности атаки до производительности": 1️⃣ Андрей Карпов, сооснователь и директор по развитию бизнеса ООО "ПВС", выступит с докладом "Не всё золото, что блестит: на примере эффективности сгенерированного С++ кода". Рассмотрим на практических примерах проблему, что создание кода с помощью ИИ не отменяет задач контроля полученного результата: обзора кода, статического анализа, нагрузочного тестирования и так далее. 2️⃣ Алексей Орехов, генеральный директор "Группа NN2", выступит с докладом "Уверенность без проверки: три слоя угроз безопасности генеративного ИИ в разработке". Бездумное доверие к ИИ-коду создаёт угрозы, которые не ловит привычное ревью. Разбираем три слоя рисков: уязвимый код, скрытые бэкдоры в коде и моделях, и утечку ресурсов сервера. 🗓Встречаемся 24 июня в 15:00 Регистрация доступна по ссылке 🔗 #вебинар #genai
408
12
Давненько мы не делились кейсами. Пришло время это исправить! 👍 Мы пообщались с командой компании YADRO, которая является ве
Давненько мы не делились кейсами. Пришло время это исправить! 👍 Мы пообщались с командой компании YADRO, которая является ведущим производителем высокотехнологичного оборудования в России. "Мы начали с правил общего назначения, а затем исследовали и подключили правила по стандартам MISRA и OWASP. Регулярные обновления поддержки стандартов в PVS-Studio позволяют нам поддерживать код в чистом и актуальном состоянии", — Павел Недошивин, инженер по информационной безопасности. Полную версию кейса можно почитать тут 🔗 #кейс #PVS_Studio
365
13
Теперь прямо у нас на сайте вы можете запросить демонстрацию PVS-Studio! Наши эксперты расскажут: - какие задачи решает стати
Теперь прямо у нас на сайте вы можете запросить демонстрацию PVS-Studio! Наши эксперты расскажут: - какие задачи решает статический анализатор, - функциональные возможности инструмента, сценарии работы и практические советы по внедрению, - а также ответят на все ваши вопросы Длительность демонстрации 30-60 минут. Записаться можно по ссылке 🔗 #PVS_Studio #демо
421
14
Сообщество FinDevSecOps представило Карту инструментов безопасной разработки ПО. Карта содержит российские, зарубежные и своб
Сообщество FinDevSecOps представило Карту инструментов безопасной разработки ПО. Карта содержит российские, зарубежные и свободно распространяемые DevSecOps-инструменты, сгруппированные по классам. С помощью нее специалисты смогут быстро находить подходящие варианты продуктов для реализации DevSecOps-практик, в том числе, необходимых для безопасной разработки ИИ-систем. Среди DevSecOps-инструментов, представленных в Карте: статический анализатор, анализ поверхности атаки, DAST (Dynamic Application Security Testing) и др. Для каждого инструмента приведены метаданные, включающие такие сведения как тип лицензии, наличие сертификата ФСТЭК, доступность на территории РФ, используемые методы обнаружения уязвимостей, форматы отчетов. Приведены определения классов и описания лицензий. В Также Карте представлены MlSecOps-инструменты для организации безопасного жизненного цикла ИИ-систем. Обновленная Карта дает возможность подбирать инструменты по любой комбинации значений параметров.
31
15
Ааа, всё пропало! AI создаёт дырявый код! Что же делать? Что-то у меня неделя ИИ. Сегодня за утренним кофе прочитал статью "7
Ааа, всё пропало! AI создаёт дырявый код! Что же делать? Что-то у меня неделя ИИ. Сегодня за утренним кофе прочитал статью "70% разработчиков считают ИИ-код дырявым, при этом 30% всех опрошенных деплоят его в прод". Кажется, это ещё одна из статей, написанных с помощью ИИ про ИИ, которые всё заполонили. Поэтому рекомендовать её к прочтению не стану. Да и приведённым там числам я что-то не очень верю. Позабавило: "C-код оказался самым дырявым". Да, C такой :) Надо иметь прямые руки, чтобы им пользоваться — плата за скорость и экономный расход памяти. Краткая суть статьи: постепенно начинает выясняться, что с генеративным ИИ (GenAI) не всё так волшебно. Сгенерированный код оказывается не таким уж качественным и безопасным. Дополнительная проблематика заключается в том, что вместо ужесточения контроля он, наоборот, снижается: кто-то из вайб-кодеров некомпетентен, чтобы проводить обзоры кода и грамотно выстраивать процессы разработки; кто-то может, но не чувствует свою ответственность за сгенерированный код (тем более его слишком много в силу простоты создания). Внезапного для меня в этом нет. Я уже писал, что ожидания завышены, а к сгенерированному коду есть избыточное доверие (как и к текстам в целом). Кстати, скоро эту тематику мы затронем в вебинаре "Что скрывает код: от поверхности атаки до производительности" в новом цикле "Качество и безопасность ПО в эпоху GenAI". Приглашаю зарегистрироваться: 24.06.2026 в 15:00 по МСК, онлайн. Неожиданно другое: проблематику некачественного и ненадёжного ИИ-кода начинают обсуждать как нечто новое. Уже встречал размышления, мол, как теперь строить процессы разработки, чтобы достичь необходимое качество. Эээ… Так ничего не изменилось. Проблема качества кода и проектов была всегда. Уже известно всё, что надо делать. Проблематика не стоит выеденного яйца. Нужно выстраивать процессы разработки так, как это делалось до GenAI. Если же нет сил на выстраивание процессов или команда считает, что уровень качество приемлем ("и так сойдёт" (C)), то GenAI тут ни при чём. Берём ГОСТ Р 56939—2024 по разработке безопасного программного обеспечения. Забываем само слово ГОСТ, вычеркиваем слово безопасность. Перед нами чек-лист полезных практик, внедрение которых даст приемлемый уровень качества проекта. Что там у нас? Обучение сотрудников. Если хотите, чтобы вайб-кодеры умели не только наваливать код, но и уметь проводить его аудит, задумайтесь о том, как они будут расти. Кстати, вот недавно статья на эту тему была: "Поколение "Approve": почему я заставил команду переписать проект, который уже работал". Необходимо сформировать требования к программному обеспечению. Если нет требований, то не стоит удивляться, что в итоге получилось что-то не то. GenAI позволяет быстрее приступить к делу и быстрее сесть в калошу, например, из-за того, что выбранное архитектурное решение не масштабируется. Всегда был нужен процесс композиционного анализа. С GenAI это лишь заиграло новыми красками в связи с атаками, построенными на галлюцинациях в названиях пакетов. Про это хорошо рассказывают специалисты компании CodeScoring в докладах и статьях: Галлюцинации систем ИИ (slopsquatting). Сегодня многие разработчики используют ИИ‑агентов в IDE. Например, просят подсказать библиотеку или показать пример кода. Но LLM "галлюцинируют" и рекомендуют несуществующие библиотеки в 20% случаях, либо воспроизводят ряд вышеописанных рисков, в основе которых лежит мимикрия проблемных решений под легитимные. Этим пользуются злоумышленники: они создают вредоносный пакет и ожидают, что кто‑то установит его, доверившись исключительно подсказке модели. Ситуацию усугубляет тот факт, что галлюцинации являются воспроизводимыми, что облегчает процесс наименования вредоносных компонентов для злоумышленников. И так далее. Хотим качества и надёжности — просто берём и делаем хорошо :)
429
16
Прям в продолжение :) А вас вайб-кодеры уже достали?
431
17
Коллеги подготовили обновлённую обзорную презентацию о PVS-Studio. А если хочется нырнуть глубоко, то напоминаю про этот фолиант.
502
18
Минутка улыбок сеньоров, возящихся с legacy-проектами Просьба не читать амбассадорам и энтузиастам ИИ. Мы тут своим кружком минутку похихикаем и всё. Решил погуглить, что последний год пишут на тему "поиск ошибок в коде". Раньше находились статьи про разные инструменты, сейчас всё забито статьями с общим названием "Нейросети для поиска ошибок в коде". Заглянул внутрь, например, этой: "Исправить код с помощью нейросети: ИИ для исправления ошибок в коде на Python, JavaScript и в больших проектах". Как же предлагают искать баг в большом проекте? В начале водянистая вода, а затем: Поиск синтаксических ошибок. Это базовый уровень. Модель может увидеть: пропущенные скобки; ошибки отступов; неправильные кавычки; бла-бла… Дейкстра всемогущий! Для кого это? Неуважение какое-то к разработчикам проектов. Считается, что они теперь сами не могут кавычку поправить? У компилятора теперь лапки и он разучился синтаксические ошибки находить? Дальше про поиск логических ошибок, анализ производительности, поиск уязвимостей. В общем, ИИ всё может, бла-бла. Как ошибки-то искать? Практическая схема, которой удобно пользоваться и новичкам, и разработчикам с опытом. Это не теория, а рабочий алгоритм как исправить код с помощью нейросети. Так-так, ну давайте уже, что сделать-то надо? Подготовьте код и описание проблемы. Перед отправкой соберите минимум: фрагмент кода; текст ошибки; что код должен делать; … Знать бы только, где этот код! ;) Бугогашенька. Показываем код с багом и говорим: "Найди, где он!" Автор-капитан, спасибо! Составители таких статей принципиально не понимают суть сопровождения больших старых проектов. Исправить ошибку в нужной функции — это самое простое. Вот только бывает непонятно, откуда начать поиск той самой функции. Конечно, бывают простые ошибки и, как советует статья, логи помогут её найти и сразу исправить. Но как вайб-кодеры будут искать наведённые ошибки, связанные с ошибками синхронизации или порчи памяти, для меня загадка. И последнее: Нужно ли иметь опыт программирования, чтобы пользоваться ИИ для проверки кода программы? Не обязательно. Конечно, я понимаю, что не стоит воспринимать всерьёз эту нейрослопую статью или искать в ней какие-то ответы. Она написана не для того, чтобы ты нашел баг, а чтобы рекламировать "онлайн-сервис с нейросетями на русском языке для быстрого создания и обработки контента". Ну, собственно, пример создания быстрого контента у нас перед глазами :) Господа сеньоры, морально держитесь. Скоро работы прибавится. Сейчас мы переживаем эпоху: Люди, которые не понимают, как устроено программирование во всей его полноте, сегодня с очень большой уверенностью рассказывают всем остальным, как нужно делать программирование. Миша Ларченко. Хороший код больше не важен? Почему разработка катится не туда — мнение техлида А потом всё это придётся разгребать и чинить ;) Не надо сопротивляться. Чем больше будет таких статей, вайб-кодеров и говнокода, тем быстрее начнётся отрезвление, а природа очистится :)
621
19
Немного подзамочного контента для моих уважаемых подписчиков. Ни для кого не секрет, что мой магистерский курс этого года я записывал на английском языке. Меньше людей знает, что исходно он читался на русском языке, на английский я (нейронкой) до лекции переводил только слайды. Далее я брал другую нейронку, распознавал свой голос с записи лекции на русском, грузил вместе со слайдами в третью нейронку и просил сделать мне подстрочник на английском и с этого подстрочника на английском уже и читал. И, конечно, я просил нейросеть убрать из этого подстрочника все шутейки, хиханьки, хаханьки, общение с аудиторией и всё остальное. В процессе ещё и правил все ошибки, которые находили на лекциях. Поэтому мой магистерский на английском немного высушен. Чисто для моей аудитории, готовой, прямо скажем, на многое, выкладываю ссылки на магистерский курс этого года на русском. Предупреждаю: это очень фанатский контент. Не надо даже пробовать его потреблять, если вы привыкли к той лакированной подаче, которую я считаю нормой для своего ютуба. Это вторая часть выкладки. Have fun. Лекции 1-14: https://t.me/cpp_lects_rus/333 Лекция 15. Аллокаторы, часть 1 Лекция 16. Аллокаторы, часть 2 Лекция 17. Умные указатели Лекция 18. Полиморфизм Лекция 19. Потоки, часть 1 Лекция 20. Потоки, часть 2 Лекция 21. Очереди Лекция 22. Атомики, часть 1 Лекция 23. Атомики, часть 2 Лекция 24. Атомики, часть 3 Лекция 25. Корутины, часть 1 Лекция 26. Корутины, часть 2 Лекция 27. SYCL и GPGPU Лекция 28. Execution Да, все ссылки на rutube, я стримил туда. #cpp_postgraduate
453
20
Статический анализ и сквозное влияние изменений В последнее время мне в различных статьях встретилась мысль, что статический
Статический анализ и сквозное влияние изменений В последнее время мне в различных статьях встретилась мысль, что статический анализ ограничен областью правок кода и не учитывает сквозное влияние изменений. Вчера в очередной раз прочитал это здесь – ИИ-ревью кода в 2026 году: как оно работает и как внедрять. В этих статьях рассматривается статический анализ в разрезе pull request, где его возможности ограничены способом использования. Однако написано так, что создаётся впечатление, что технология статического анализа в целом имеет эту слабость. Несколько гипотез, почему так пишут: • Авторы имеют опыт работы с простыми инструментами статического анализа (линтерами), которые действительно не используют контекст за пределами функции/файла. Авторы же транслируют свой опыт на все инструменты. • Команды сами себя загонят в узкий сценарий запуска анализатора, но описывают это как единственный способ запуска анализатора. • Стоит задача во чтобы то не стало написать, как похорошела жизнь с ИИ. Остальные инструменты/технологии рассматриваются с уменьшением их возможностей на фоне ИИ :) На самом деле, анализаторы кода уже 100500 лет умеют видеть контекст всей кодовой базы и замечать, как изменение повлияет на работы функций в других файлах. Для этого используются такие технологии как межпроцедурный и межмодульный анализ потока данных. Естественно, заставляя инструмент анализировать изменения в конкретном файле (инкрементальный анализ) обрубается/усложняется возможность заметить, как эти изменения влияют на другие части проекта. Но и проблемы как таковой нет. Достаточно время от времени выполнять полную проверку проекта, когда включен межмодульный анализ. Более того ГОСТ Р 71207—2024 (Статический анализ программного обеспечения) явно предписывает выполнять оба вида анализа (см. п. 5.6.). Статический анализ добавленных или измененных частей ПО следует выполнять после каждого внесенного изменения. Статический анализ всего разрабатываемого ПО следует выполнять не реже одного раза в 10 рабочих дней, если за данный период времени исходный код был изменен. Суть – быстро ловим многие ошибки в момент их внесения в код. Время от времени выполняем полный (к сожалению, часто весьма медленный) анализ и выявляем баги при взаимодействии разных модулей. См. вебинар про процессы статического анализа по ГОСТ Р 71207–2024. Для тех кому-то не понятна суть обсуждаемого вопроса, приведу совсем простой пример из мира C, где нельзя просто проверить изменения в h-файле. Вернее, можно, но от это мало пользы. Нужно сразу проверять зависящие от него cpp файлы. Я тут даже не про межмодульный анализ говорю, а про препроцессирование. Допустим, кто-то взял и решил добавить в definesTypes.h такой макрос: #define sprintf std::printf Анализирую эти изменения в файле definesTypes.h нельзя сказать, внесена ли какая-то ошибка. В файле definesTypes.h всё хорошо. Но ошибка использования неинициализированного буфера возникнет в другом месте, там где произойдёт подмена С-функции sprintf на функцию std::printf. Кстати, это реальный баг найденный PVS-Studio в проекте StarEngine: Любите статический анализ кода!
422