другая возможность - настроить свой собственный инструмент путем расширения существующего компилятора C ++
Существует два компилятора, которые вы можете расширить:
- LLVM & Clang (но я не могу помочь, потому что я их мало знаю).
- GCC (версия 4.6 пожалуйста) можно расширять с помощью плагинов или кодируя расширение MELT MELT - это высокоуровневый домен-специфический язык для расширения компилятора GCC;проще кодировать ваше расширение в MELT, чем в плагин на C. [Я являюсь основным автором MELT]
Расширение GCC, на мой взгляд (предвзято), является хорошим способом сделать это.Но я признаю, что (даже с помощью MELT) это нетривиально, потому что вам нужно частично понять основные внутренние представления GCC (Gimple, Tree) и внутренние проходы.(Я предполагаю, что у вас та же проблема с LLVM / Clang: чтобы расширить его, вам нужно это понять).
Расширения GCC (в MELT) или плагины (в C) в основном работают с представлениями Gimple (послерасширение шаблона).
Если вы заинтересованы в использовании MELT, не стесняйтесь спрашивать меня.
Существуют некоторые дорогостоящие проприетарные инструменты, например, coverity - но есть и такиедорого, что я понятия не имею, на что они способны.