g++/clang сверхбыстрый анализ, но не режим компиляции?

Есть ли какой-нибудь сверхбыстрый «проверить синтаксис моего кода, но не компилировать режим» для g++/clang? Где единственная цель - просто проверить, является ли код, который у меня есть, действительным кодом С++?


person anon    schedule 05.04.2010    source источник


Ответы (3)


-fsyntax-only для GCC, это, вероятно, должно работать и для Clang, поскольку они эмулируют параметры командной строки GCC. Независимо от того, значительно ли это быстрее, вам нужно время.

person Dan Olson    schedule 05.04.2010
comment
Проблема скорости на самом деле заключается в том, сколько времени тратится на чтение исходного ввода-вывода, проверку синтаксиса, сколько времени компилируется и сколько времени выполняется ввод-вывод вывода объекта. Я подозреваю, что при достаточном количестве исходных кодов ввод-вывод чтения может составлять большую часть, и вы увидите минимальную выгоду только от проверки синтаксиса. - person Mark B; 05.04.2010
comment
@Mark: По моему опыту, кэширование скомпилированного вывода с помощью ccache почти всегда имело смысл. И не забывайте, что C++ может также включать шаблоны, которые могут резко увеличить время чистой компиляции. - person Benjamin Bannier; 20.06.2010
comment
Обратите внимание, что в g++ это только анализирует код, а не создает экземпляры, поэтому вы можете пропустить много ошибок. clang++ останавливается после создания экземпляра, что может занять немного больше времени, но более полезно. Кроме того, некоторые предупреждения g++ создаются на этапе оптимизации кода, так что вы их тоже пропустите. - person Marc Glisse; 10.01.2013

Вы можете посмотреть gcc-xml ( http://www.gccxml.org/HTML/Index.html ), который повторно использует внешний интерфейс gcc для создания XML-описания источника.

Другой вариант — использовать внешний интерфейс edg ( http://www.edg.com/index.php?location=c_frontend ), но он не с открытым исходным кодом и далеко не дешевый.

person tonio    schedule 05.04.2010

Возможно, вам подойдет cppcheck? Я не знаю точно, какой результат вы хотите. cppcheck не является чистой проверкой синтаксиса. И если cppcheck будет достаточно быстрым.

person jpyllman    schedule 05.04.2010