Состоялся (http://frama-c.com/frama-clang.html) релиз fragma-clang 0.0.5, плагина для Сlang на базе свободной платформы для статического анализа кода Fragma-C (http://frama-c.com/). Несмотря на то, что проект существует около года, он уже является рабочим полнофункциональным анализатором кода, написанного на языках Си и Си++, выявляющим возможные проблемы в файлах .cpp, .c++, .C, .cxx, .cc и .ii (файлы препроцессора). Плагин Fragma-C для Clang поставляется под смешанной лицензией LGPL/BSD.URL: http://frama-c.com/frama-clang.html
Новость: https://www.opennet.me/opennews/art.shtml?num=48174
"Гори-гори ясно, чтобы не погасло!"
Гори оно огнём, если там шланг.
> Гори оно огнём, если там шланг.Fragma-C отдельный статический анализатор. fragma-clang отдельный плагин для Clang. Мухи отдельно, котлеты отдельно.
Он не fragma, а frama.
Пардон за оффтоп. А в чем проблема шланга? 4 года использую, как основной компилятор на работе и дома и за это время не уловил, чем он принципиально хуже гцц. Поясните, плз, если не сложно.
Мол, несвободный в сымсле ГПЛ.
Странная история. У них годная свободная лицензия - свободная, в том числе, от ограничений копилефта. Не вижу проблемы здесь.
> Не вижу проблемы здесь.А она есть.
Мы помним чем закончилась BSDшная свобода, кода всякими проприетарными бздами руки выворачивали. А потом пришел GPLный Linux - и наконец стало хорошо. Без произвола полутора корпораций.
мы все помним как GPL-ный линукс умолял дать им лицензию на дрова к ath wifi, OpenBSD дал.
А потом этот самый линукс зажал отдавать правки, вот же жлобы..
> мы все помним как GPL-ный линукс умолял дать им лицензию на дрова
> к ath wifi, OpenBSD дал.А что значит умолял? Если BSDшную шапку не удалять, никакие лицензии не нарушаются. А то что линуксоиды пишут свой код под GPL, логично. Это и не дает им превратиться в дамп токсичных корпоративных отходов типа всяких freebsd. Куда отработанный код сливают в абы каком виде а майнтайнит это потом пусть А.С.Пушкин. А OpenBSD это вообще отличный образец - нихрена не работает, сервера оплачивает чуть ли не лично Тео, а проприетарные паразиты растаскивают код себе в норы. Так что потом Тео же и плакается выклянчивая деньги, потому что иначе дескать счета за электричество оплачивать нечем. Наверное именно так и надо взаимодействовать, когда апстрим на котором все держится - пресмыкается. Но знаете, апстриму однажды может надоесть работать работу и пресмыкаться. И тут халява для акул бизнеса может резко и внезапно закончиться.
> А потом этот самый линукс зажал отдавать правки, вот же жлобы..
Если вы хотели коммиты назад, наверное лицензию надо было писать иначе. А так - "лицензия позволяет". Так что если проприерасам можно, то и остальным тоже. Задолбали со своими двойными стандартами, когда перед проприетарщиками ноги раздвигаются, а остальным почему-то фига. Лицензии для всех одинаковые, ниипет. Если хотите чего-то иное, вот и пишите в лицензии именно это. Формализация пожеланий спасает от кучи проблем.
> Если BSDшную шапку не удалять, никакие лицензии не нарушаются.
> А то что линуксоиды пишут свой код под GPL, логичноhttp://lkml.org/lkml/2007/8/28/157
> The files are available only under GPLv2 since now.И шапку удалил и лицензию сменил, забыв спросить авторов )
> Если вы хотели коммиты назад, наверное лицензию надо было писать иначе. А
> так - "лицензия позволяет". Так что если проприерасам можно, то и
> остальным тоже. Задолбали со своими двойными стандартами, когда перед проприетарщиками
> ноги раздвигаются, а остальным почему-то фига. Лицензии для всех одинаковые, ниипет.
> Если хотите чего-то иное, вот и пишите в лицензии именно это.
> Формализация пожеланий спасает от кучи проблем.http://lkml.org/lkml/2007/9/5/131
> I'm the author of the free hardware driver layer for wireless Atheros devices in OpenBSD, also known as "OpenHAL".
> Some time ago, I got repeated requests to change the license of the code to GPL or to dual-license it but I always rejected these requests. I clearly explained my reasons against dual-licensing in the past. It needed some time, but it had seemed to me that the involved people had finally accepted my decision.Ответ на вопрос автора
>> - Are there any plans to release the "ath5k" code using a modified/"extended" license?
> No.Смотрите дети внимательно! Двойные стандарты, это теперь вот так!
Главное, не забыть первым упрекнуть в использовании двойных стандартов )
Clang производит объектный код, который медленнее и больше чем объектный код, производимый GCC. Особенно для не-х86.Немного пруфлинков:
https://github.com/android-ndk/ndk/issues/495
https://github.com/android-ndk/ndk/issues/21
https://github.com/android-ndk/ndk/issues/133
Выглядит не очень убедительно. По одной ссылке просела скорость, а про размер ничего не говорится. По другой вырос размер, но скорость увеличилась. По третьей тоже вырос размер, но гораздо меньше. Логично предположить, что это нормальные флуктуации; у кого-то наверняка с clang стало лучше, но они, естественно, не идут на это жаловаться в багтрекер.
Мой опыт подтверждает, что Clang генерит код хуже, чем GCC. И по скорости, и по размеру. Итого, у меня есть мой опыт и 3 ссылки, а у вас только недоверие к моим ссылкам.У Мозиллы на Андроиде бинарник на 30% больше с Clang-ом, чем с GCC - это неубедительно? Ну ОК.
Если хотите, чтоб было убедительно - проведите свои тесты, опубликуйте результаты, всем будет полезно.
У нас комплексное приложение, которое требовательно по части производительности и по потреблению памяти (embedded). Так вот, ощутимой разницы между gcc и clang абсолютно никакой нет. Даже при программировании микроконтроллеров никто не задумывается о тестировании разных компиляторов (при реальной разработке), - берут то, что работает.Не могу представить, чем нужно заниматься, чтобы примерно +/-1% разницы играл роль, при том, что в общей сумме всей частей приложения скорее всего разница будет стремиться к нулю.
> У нас комплексное приложение,Понятно, с этого надо было начинать - в отличие от конкретных пруфлинков мы не увидим от вас никакой конкретики, зато маркетингового булшита - будет.
> никакой нет. Даже при программировании микроконтроллеров никто не задумывается о тестировании
> разных компиляторов (при реальной разработке), - берут то, что работает.Странно, почему же я тогда прогнал бенчи на cortex M3 с разными версиями gcc и ключами? Может быть, потому что мне нужен и компактный и быстрый код? И желательно все и сразу? Особенно на микроконтроллере, где камень с дополнительным объемом флеша стоит дороже :)
> Не могу представить, чем нужно заниматься, чтобы примерно +/-1% разницы играл роль,
Какой к черту 1%? В зависимости от флагов, набора команд, и того бреда который компилер выдал разница может быть до 30% по коду и до пары раз по скорости. И это в пределах одного семейства компилеров, в зависимости от того насколько компилятор в неудачном месте ступил.
> при том, что в общей сумме всей частей приложения скорее всего
> разница будет стремиться к нулю.Гугля вон в своем кодеке давится за 0.03% улучшений а вам, значит, 1% не величина? Ну вот поэтому где гугл, а где вы. Хотя кто б спорил - впарить гамна за много денег любители "комплексных приложений" размахивающие BSDшными свободами любят.
А зажатый сорц вам случайно нужен не для того чтобы клиентура не догадалась как вы их нае...ете феерично? :)
> А зажатый сорц вам случайно нужен не для того чтобы клиентура не
> догадалась как вы их нае...ете феерично? :)В этом все больные GPL-мозга. Все им кажется что их ... . это болезнь батенька.
Сходите к психиатру - он вылечит.
Кто и кого вылечит - это мы еще будем посмотреть. GPL изменил мир и не буду скрывать - очень приятно когда проприетарных жлоборасов выносит в пользу открытых решений, которые не заюимают никому ничего и не устраивают внезапные кидки. А сам факт открытости проекта как-то стал гарантировать определенные зрительские симпатии с самого начала. Давая солидные репутационные преимущества относительно жадных м...ков.
>> может быть до 30%Здесь есть люди, которые знакомы с математикой, статистикой и пределами. Поэтому частные "может быть" здесь вряд ли таковых впечатлят. Сделайте комплексное приложение из хотя бы 5 процессов (в каждом из которых ещё и потоки работают), придумайте, как замерять его производительность (выполнение конечной задачи), тогда и хвалитесь своими парой процентов.
Не погаснет, я думаю. :-) В отличии от проприетарных продуктов, здесь есть полная возможность для развития (как плагина для Сlang, так и Fragma-С) силами сообщества. :-)
Силами сообщества можно развивать что-то небольшое, а такие крупные вещи как компилятор только сообществом не разовьешь. Вот и получается, что корпорасты забирают то что делает сообщество, а свое держат при себе. В том-же GCC вечно патчи то от Intel, то еще от кого появляются.
Тот-же illumos сильно силами сообщества развивается?
Классная штука, но похоже задолбаешься собирать
А под какой дистрибутив надо?
centos 6
Успехов проекту!
Как оно в сравнении со scan-build?
Да вроде не делал никто таких сравнений. Ниша свободна, можете попробовать fragma-clang и отписаться по результатам. Будьте первопроходцем. :-)
Не, не буду. Вспомнил, что пробовал его безо всяких шлангов. Чтобы был толк, надо добавлять в код ACSL-аннотации, иначе вывалит кучу фолсов. То есть годится только при написании новых проектов с нуля, если готов заморочиться.
PVS-Studioкапец?
ещё с момента появленияcppcheck -q -x c --enable=all --suppress=missingIncludeSystem .
прост у cppcheck отдел маркетинга послабее
нету такой опции -x
--language=<language>, -x <language>
Forces cppcheck to check all files as the givencppcheck-1.80-1.fc26.x86_64
> прост у cppcheck отдел маркетинга послабееcppcheck — искючительно примитивный инструмент. Какие-то элементарные ошибки он вылавливает, конечно, но это совершенно не та весовая категория. Вот scan-build вполне может с пивасом потягаться.
cppcheck умеет согласно Wikipedia (https://ru.wikipedia.org/wiki/Cppcheck)
Проверяет выход за пределы.
Обнаруживает утечки памяти.
Обнаруживает возможное разыменовывание NULL-указателей.
Обнаруживает неинициализированные переменные.
Обнаруживает неправильное использование STL.
Проверяет обработку исключительных ситуаций на безопасность.
Находит устаревшие и неиспользуемые функции.
Предупреждает о неиспользуемом или бесполезном коде.
Находит подозрительные участки кода, которые могут содержать в себе ошибки.+ можно писать модули расширения га ЛЮБЫЕ проверки
> согласно WikipediaТо есть на практике ты его применять не пробовал.
Прямо сейчас использую. Мои новичковые ошибки ловит.
Новичковые ловит, да. В хелловорлдах. Когда доходит до хитрой разветвлённой логики — ловит уже хуже.
Я не к тому, что cppcheck не надо использовать. Польза от него есть. Но надо и понимать его ограниченность.
> Новичковые ловит, да. В хелловорлдах. Когда доходит до хитрой разветвлённой логики —
> ловит уже хуже.
> Я не к тому, что cppcheck не надо использовать. Польза от него
> есть. Но надо и понимать его ограниченность.Используем на практике. Каждый коммит автоматом проходит проверку. Не проходит, - нет коммита. Находит простые утечки памяти, а с появлением новых версии находит всё более интересные вещи. Например, как-то выяснилось, что не было гарддов у заголовочных определённых файлов, правда из сообщения об ошибке это было очень сложно понять. Особенно незаменимая вещь, когда в команду приходит новенький.
Но надо сказать, что сейчас он уже ничего не находит, - люди научились не делать примитивные ошибки. Все остальные ошибки выявляются автоматическим тестированием с включённым ASAN. Находит все остальные случаи утечек памяти и ошибки связанные с памятью.
https://habrahabr.ru/company/pvs-studio/blog/346128/Удачи с Cppcheck... :)
> PVS-Studioкапец?Ой. Я такие вопросы уже много лет слушу... :) Не бойтесь, мы очень быстро разиваем анализатор. Вот сейчас в процессе символьные вычисления, поддержка Java, учимся искать уязвимости ( https://www.viva64.com/ru/w/v1010/ ).
> PVS-Studioкапец?Не люблю я подобных фраз. А вот если бы как у frama удалось бы стать open & free software с возможностью коммерческой поддержки - тогда бы точно цены не было!
> Не люблю я подобных фраз. А вот если бы как у frama
> удалось бы стать open & free software с возможностью коммерческой поддержки
> - тогда бы точно цены не было!Они отстали лет на цать. Кейл они блин поддержали и IAR :). Самые кривые да еще и платные компилеры. Вообще не понимаю зачем ими пользоваться когда gcc есть. Он бесплатный и код генерит очень даже.