Clang Static Analyzer

50 views
Skip to first unread message

Dmitry Chestnykh

unread,
Jul 30, 2008, 6:02:20 PM7/30/08
to sellm...@googlegroups.com
Clang -- это фронтэнд для LLVM. Это опен-сорсные проекты, над ними
работают несколько людей из Apple и эти две штуки в будущем заменят
GCC в Mac OS X.

Уже сейчас можно попробовать GCC-LLVM в Xcode 3.1, но пока оно в бете,
и у меня не работает для 32-битной x86 link-time optimization.

Пока Clang не готов, но уже есть полезная штука на его основе -- Clang/
LLVM Static Analyzer. Это статический анализатор кода, который ищет
баги.

http://clang.llvm.org/index.html

Я хотел про него написать заметку в блог, но перед этим запостил
ссылку на reddit, и его обнаружили другие fellow Mac devs и сами
написали заметки, поэтому мне не пришлось мучиться :)

http://www.rogueamoeba.com/utm/2008/07/14/the-clang-static-analyzer/

Пример отчета для Aduim:

http://trac.adiumx.com/wiki/StaticAnalysis

- Дмитрий Честных.

hellra1ser

unread,
Aug 18, 2008, 11:01:51 AM8/18/08
to sellme-dev
а можно простым русским языком объяснить, зачем менять GCC на LLVM?

Dmitry Chestnykh

unread,
Aug 18, 2008, 2:11:59 PM8/18/08
to sellme-dev
On Mon, 18 Aug 2008, hellra1ser wrote:

> а можно простым русским языком объяснить, зачем менять GCC на LLVM?

Clang+LLVM, когда будут готовы, дадут следующее:

* Компиляция в два раза быстрее.

* Улучшенные сообщения об ошибках (намного!)

* Лучшая интеграция с Xcode -- GCC под GNU лицензией, поэтому его не могут
встроить в Xcode без открытия исходников последнего под той же лицензией.
У Clang/LLVM - лицензия BSD.

* Оптимизация при линковке. По предварительным грубым оценкам, это дает до
десятка процентов улучшения скорости выходного кода.

Простым английским языком:

http://llvm.org/devmtg/2008-08/ -- слайды и видео с недавней конференции
по LLVM/Clang.

- Dmitry Chestnykh

hellra1ser

unread,
Aug 18, 2008, 2:23:09 PM8/18/08
to sellme-dev
> * Лучшая интеграция с Xcode -- GCC под GNU лицензией, поэтому его не могут
> встроить в Xcode без открытия исходников последнего под той же лицензией.
> У Clang/LLVM - лицензия BSD.
а зачем встраивать компилятор прямо в IDE? что это даст, по сравнению
с нынешним вариантом(когда IDE всего-лишь запускалка компилятора и
дебаггера)?

Dmitry Chestnykh

unread,
Aug 18, 2008, 3:06:35 PM8/18/08
to sellme-dev
On Mon, 18 Aug 2008, hellra1ser wrote:

Целый компилятор может и не надо -- но его части нужны для рефакторинга,
подсветки синтаксиса, обнаружения синтаксических ошибок сразу при вводе
кода и прочих интересных штук.

Дебаггер тоже было бы неплохо поменять -- по сравнению со всеми
остальными, которые я использовал (в винде :), gdb и его GUI в Xcode --
тормоз.

- Dmitry Chestnykh

hellra1ser

unread,
Aug 18, 2008, 4:00:29 PM8/18/08
to sellme-dev
> Дебаггер тоже было бы неплохо поменять -- по сравнению со всеми
> остальными, которые я использовал (в винде :), gdb и его GUI в Xcode --
> тормоз.
да то, что тормоз, это ничего. Вот то, что он страшно кривой и иногда
немного неадекватно себя ведет - это бесит. По сравнению с
дотнетовским дебаггером в вижуал студии, икскодовский фронтэнд к gdb
тихо курит в стороне

Dmitry Chestnykh

unread,
Aug 18, 2008, 4:34:32 PM8/18/08
to sellme-dev
On Mon, 18 Aug 2008, hellra1ser wrote:

Согласен.

В любом случае, дебаггинг - для идиотов, которые не умею писать код.

- Dmitry Chestnykh

Vitaly Ovchinnikov

unread,
Aug 18, 2008, 4:44:10 PM8/18/08
to sellm...@googlegroups.com
я вот сегодня в пяти потоках ловил deadlock. и дебаггер был очень
кстати: показывал дампы стеков всех потоков. если бы ты утром написал
эту гениальную фразу, я бы наверное напихал NSLog'ов, чтобы не
казаться идиотом ;)

не, без NSLog'ов не обошлось полюбому, но дебаггер и дампы стеков дали
четко понять куда их ставить. так что не надо нас, идиотов, обижать ;)

2008/8/19 Dmitry Chestnykh <dmi...@codingrobots.com>:

Anton Sherstyuk

unread,
Aug 18, 2008, 5:08:25 PM8/18/08
to sellm...@googlegroups.com
Ога-ога. Только в чужом коде без дебаггера разбираться -- порой
сплошное удовольствие.

2008/8/18 Dmitry Chestnykh <dmi...@codingrobots.com>:

--
Thanks,
Anton

Dmitry Chestnykh

unread,
Aug 18, 2008, 5:46:08 PM8/18/08
to sellm...@googlegroups.com
On Tue, 19 Aug 2008, Anton Sherstyuk wrote:

> Ога-ога. Только в чужом коде без дебаггера разбираться -- порой
> сплошное удовольствие.

Вот я и говорю.

Дебаггишь свой код, нашел баг, и говоришь: "Вот я идиот!"
Дебаггишь чудой код -- и опять -- "Ну и идиот это писал!"

:-)

- Dmitry Chestnykh

Dmitry Chestnykh

unread,
Aug 19, 2008, 12:23:40 PM8/19/08
to sellme-dev
On Mon, 18 Aug 2008, hellra1ser wrote:

> а можно простым русским языком объяснить, зачем менять GCC на LLVM?

Кстати, диаграммки: http://clang.llvm.org/features.html#performance

- Dmitry Chestnykh

Victor Petrenko

unread,
Aug 20, 2008, 3:34:43 AM8/20/08
to Dmitry Chestnykh
Здравствуйте, Dmitry.

Вы писали 19 августа 2008 г., 20:23:40:

DC> On Mon, 18 Aug 2008, hellra1ser wrote:

>> а можно простым русским языком объяснить, зачем менять GCC на LLVM?

DC> Кстати, диаграммки: http://clang.llvm.org/features.html#performance

Судя вот по этому, С++ они еще не скоро доделают :-).
http://clang.llvm.org/cxx_status.html

Буду надеяться, что доделают до замены gcc на llvm.

--
С уважением,
Victor mailto:vpet...@gmail.com

Dmitry Chestnykh

unread,
Aug 20, 2008, 6:20:29 AM8/20/08
to Dmitry Chestnykh
On Wed, 20 Aug 2008, Victor Petrenko wrote:

>>> а можно простым русским языком объяснить, зачем менять GCC на LLVM?
>
> DC> Кстати, диаграммки: http://clang.llvm.org/features.html#performance
>
> Судя вот по этому, С++ они еще не скоро доделают :-).
> http://clang.llvm.org/cxx_status.html
>
> Буду надеяться, что доделают до замены gcc на llvm.

LLVM тут ни при чем -- она сама на C++ написана, и промежуточный код для
LLVM API -- на C++ (http://llvm.org/demo/). Уже есть фронтэнд LLVM-GCC
(поставляется с Xcode 3.1), который и C++ компилирует.

- Dmitry Chestnykh

Reply all
Reply to author
Forward
0 new messages