Habr<p>Разрабатываем собственный анализатор C++ программы в виде плагина для Clang</p><p>Есть много проектов, целью которых является превратить С++ более "безопасный" язык программирования. Но внесение изменений в синтаксис языка обычно нарушает обратную совместимость со старым кодом, который был написан до этого. Недавно вышла новая версия библиотеки memsafe для языка С++, которая превращает его в Rust с помощью плагина Clang добавляет в С++ безопасное управление динамической памятью и контроль инвалидации ссылочных типов данных во время компиляции приложения. Но данная статья не о библиотеке, а об особенностях разработки анализатора программы на С++ в виде плагина для Clang. Можно считать, что это подведение итогов по результатам сравнения нескольких разных способов создания плагина для компилятора С++ , а так же очередной Хабрахак для хранения результатов экспериментов и публикации итоговых выводов, которые я решил сохранить не только для себя, но и в виде статьи на Хабре, что бы результатами моего труда могли воспользоваться и другие хорошие люди :-), которым так же может потребоваться погрузиться в дебри парсинга исходного текста программ.</p><p><a href="https://habr.com/ru/articles/900224/" rel="nofollow noopener" translate="no" target="_blank"><span class="invisible">https://</span><span class="">habr.com/ru/articles/900224/</span><span class="invisible"></span></a></p><p><a href="https://zhub.link/tags/clang" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>clang</span></a> <a href="https://zhub.link/tags/clangquery" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>clangquery</span></a> <a href="https://zhub.link/tags/plugin" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>plugin</span></a> <a href="https://zhub.link/tags/memsafe" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>memsafe</span></a> <a href="https://zhub.link/tags/c" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>c</span></a>++ <a href="https://zhub.link/tags/attribute" class="mention hashtag" rel="nofollow noopener" target="_blank">#<span>attribute</span></a></p>