Есть ли какой-нибудь сверхбыстрый «проверить синтаксис моего кода, но не компилировать режим» для g++/clang? Где единственная цель - просто проверить, является ли код, который у меня есть, действительным кодом С++?
g++/clang сверхбыстрый анализ, но не режим компиляции?
Ответы (3)
-fsyntax-only для GCC, это, вероятно, должно работать и для Clang, поскольку они эмулируют параметры командной строки GCC. Независимо от того, значительно ли это быстрее, вам нужно время.
person
Dan Olson
schedule
05.04.2010
Проблема скорости на самом деле заключается в том, сколько времени тратится на чтение исходного ввода-вывода, проверку синтаксиса, сколько времени компилируется и сколько времени выполняется ввод-вывод вывода объекта. Я подозреваю, что при достаточном количестве исходных кодов ввод-вывод чтения может составлять большую часть, и вы увидите минимальную выгоду только от проверки синтаксиса.
- person Mark B; 05.04.2010
@Mark: По моему опыту, кэширование скомпилированного вывода с помощью ccache почти всегда имело смысл. И не забывайте, что C++ может также включать шаблоны, которые могут резко увеличить время чистой компиляции.
- person Benjamin Bannier; 20.06.2010
Обратите внимание, что в 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