Компания СиПроВер подготовила новую версию статического анализатора PVS-Studio 6.22 (http://www.viva64.com/ru/pvs-studio/), который доработан для обеспечения проверки кода для встраиваемых устройств на базе архитектуры ARM. В частности, в новой версии появилась поддержка ARM Compiler 5 и ARM Compiler 6 в составе сред разработки Keil uVision 5 и Keil DS-MDK, а также поддержка IAR C/C++ Compiler for ARM в составе среды IAR Embedded Workbench.Для загрузки доступна (https://www.viva64.com/ru/pvs-studio-download-linux/) демонстрационная версия PVS-Studio для Linux. Так как многие проекты для встраиваемых систем являются небольшими и для них не всегда окажется целесообразным приобретать лицензию, разработчики предоставили для подобных проектов вариант бесплатной лицензии (https://www.viva64.com/ru/b/0457/). В том числе предоставленный вариант бесплатной лицензии позволяет использовать её не только в открытых, но и в закрытых проектах.
Для тестирования новых возможностей PVS-Studio была проведена проверка кода открытой операционной системы RT-Thread (https://www.rt-thread.org/), ориентированной на применения на IoT-устройствах на базе как микроконтроллеров (ARM Cortex-M0, Cortex-M3/4/7), так и процессоров ARM (ARM Cortex-A8 и ARM Cortex-A9 DualCore). Тестирование было проведено в режимах Keil и IAR, и результаты получились примерно одинаковыми.
Из выявленных предупреждений (http://cppfiles.com/rt-thread-html-log.zip) было отобрано 95 наиболее интересных проблем, среди которых:
- Запись во внешнюю структуру локальных переменных, которые перестанут существовать после выхода из функции, а в структуре останутся указатели уже на другие объекты в стеке;
- Логическая ошибка при построении условных операторов;
- Опечатки, в которых вместо двух операторов "&" дважды использовали оператор "&&", что приводит к постоянному возврату значения 0 или 1;
- Использование вместо оператора "‹‹" значения "‹";
- Применение всегда истинного условия "i ‹= 255" для переменной i с типом uint8_t, которое в коде приводит к зацикливанию;
- Использование условий вида (x !=0 || x != 1 || x != 2 || x != 3), которые всегда являются истинными;
- Использование при вызове memcpy(elementAddress, filter, sizeof(filter)) не размера всей структуры, а размера указателя на структуру;
- Разыменование указателя до его проверки;
- Неосмысленная перезапись переменной ("reg_value =" вместо "reg_value |=");
- Неполная инициализация массива (обнулялся только элемент с индексом 0, а остальные элементы остались неинициализированными);
- Тело цикла всегда выполняется только один раз и все условия внутри цикла бессмысленны, так как переменная i всегда равна 0;
- Переменная нигде не инициализируется перед чтением из неё значения.URL: http://www.viva64.com/ru/pvs-studio/
Новость: https://www.opennet.ru/opennews/art.shtml?num=48169
В СПО как-то все зарабатывают. Некоторые даже грантами на всякие глупости умудряются швыряться. У вас коммерческий проект, и тем не менее вы на столько опустились, что везде спамите. Как так?
Ну, справедливости ради, надо сказать, что давно их не было слышно. Тут во всяком случае.
Я лично видел уже с десяток постов на хабре и как минимум 3 здесь. Все уши прожужжали, какой у них крутой анализатор. Такая агрессивная реклама ничего кроме отвращения не вызывает.
Давайте все разработчики проприетарного софта тут начнут постить свою рекламу. Сайт, в конце концов, называется opennet или как?
Команда маленькая, если есть идеи как им по другому рекламу подешевле делать, то вперед и с песней.
Это не реклама. Эта антиреклама какая-то. В каждой их рекламе обсуждается сама реклама, а не продукт. При том в негативном ключе.
Да уж, рассуждать на портале по СПО про кейл и иар - весьма оригинально. Можно еще попробовать новую колбасу рекламировать на форуме у веганов, интересно наверное будет.
Если бы все так спамили, я бы даже uBlock выключилЛюбая ошибка -- это головная боль. Такие ошибки, как Race Condition, тестами не отловить. Ребята же предлагают решение, снимающее массу головной боли на старте. Это плохо?
Ребята использовали опенсорс как тестовый полигон: кода много самого разного качества, ошибки самые разнообразные. Что опенсорс от этого потерял?
Ребята пиарились отчётами об ошибках, попутно объясняя, как не наступить на некоторые грабли (например, memset). Что потерял пользователь от такой рекламы?
В результате опенсорс получал отчёты об ошибках, большая часть которых исправлялась (я оптимист). Что при этом терял опенсорс? Ну кроме ошибок и глюков.
Ребята пошли дальше навтречу опенсорсу и позволили проверять проекты, в шапке которых было несколько строк. Если у тебя нет денег на покупку продукта -- пользуйся им бесплатно. Я замечу, что сложность синтаксического анализа чуть выше, чем нарисовать кнопку на форме (ну то есть намного порядков, кто сарказма не видит). И результатами работы ребята позволили пользоваться бесплатно, если у вас нет денег на лицензию. Что при этом потерял опенсорс? Может, что-то при этом потеряли лично Вы?
Сейчас ребята выкатили апдейт: ARM. Это значит, что на Raspberry и ведроидах станет меньше глюков. Что при этом потерял опенсорс? Что потеряли лично Вы?
> Ребята пошли дальше навтречу опенсорсу и позволили проверять проекты, в шапке которых было несколько строк.Ребята пошли дальше и нашли способ спамить прямо в чужих исходниках.
>> Ребята пошли дальше навтречу опенсорсу и позволили проверять проекты, в шапке которых было несколько строк.
> Ребята пошли дальше и нашли способ спамить прямо в чужих исходниках.Напиши скрипт/fuse fs, вставляющий нужную йобу в файлы специально для анализатора.
Это запрещено в соглашении.
ну и покс
После ответа Карпова ниже мне уже действительно пoкс и на него самого и на его проприетарное пoделие.
В соседней новости поинтереснее этой рекламы.
А я его поддерживаю. Возьми и сам проверь. Привыкли людей на халяву напрягать. Я думаю, у него своих дел хватает и некогда бесплатно выполнять твои прихоти, то, что интересно только тебе.
Возможно, это дитя индиго думает, что существует волшебная команда "проверить последние исходники postfix и написать статью с анализом", а может просто считает, что все должны с радостью тратить несколько часов своего времени ради пары минут удовольствия дитятки.
Вот и я об этом)
В соглашении с кем? Я правлю СВОЙ код. Пишу туда, что хочу и как хочу.
В соглашении об использовании PVS-Studio. У тебя целых три варианта регулярного использования PVS-Studio для своего кода:
1. Честно добавить требуемые комментарии в код и использовать бесплатный вариант PVS-Studio
2. Честно купить PVS-Studio и не добавлять в код никаких рекламных комментариев
3. Возомнить себя кулхацкером, очень хитро поломавшим систему. И пофиг, что этот способ "взлома" описан прямо в лицензионном соглашении. Кулхацкеры такое не читают.
> 1. Честно добавить требуемые комментарии в код и использовать бесплатный вариант PVS-StudioУ тебя та же болезнь, что и у Карпова? Правка моего кода никак не связана с использованием этого продукта. Лицензия продукта А не может ограничивать мои права в отношении продукта Б. Пункт, предписывающий мне совершать телодвижения в отношении третьих лиц, не имеет юридической силы. Вы бы туда ещё добавили, @#$%&!, условие голосовать за правильного кандидата.
а если создать форк с дополнительной шапкой?
citation needed
> Ребята пошли дальше и нашли способ спамить прямо в чужих исходниках.Решение спамить или не спамить в исходниках какого-либо проекта принимают не разработчики PVS-Studio, а разработчики этого проекта. Так что если чё, все претензии к последним.
> Сейчас ребята выкатили апдейт: ARM. Это значит, что на Raspberry и ведроидах
> станет меньше глюков.Ты разуй глаза и прочитай, про что новость. Они поддержку каких-то проприетарных компилеров и IDE добавили. Никто в здравом уме ими софт для малины не собирает.
> Ты разуй глаза и прочитай, про что новость. Они поддержку каких-то проприетарных компилеров и IDE добавили. Никто в здравом уме ими софт для малины не собирает.GCC и clang всё ещё поддерживаются, а указанными выше Вас пользоваться никто не заставляет.
Хозяйке на заметку: основная функциональность этого продукта не зависит от компилятора
А что, с gcc и clang оно раньше не работало?
Я аж прослезился. Если Пивасик-Студия исчезнет, что при этом потеряет опенсорс, ничего.
Отвечу на твой вопрос, как минимум opensource потеряет хороший инструмент, который проверил уже не мало открытых проектов и нашел в них не мало ошибок.
А теперь ответь на мой вопрос что потеряет opensource если исчезнешь ты? Пустозвона, диванного аналитика, халявщика? Который не привнес в тот самый opensource ничего.
немало. извините
Не поверишь, но далеко не всем нужен PVS-Studio. А тем, кому нужен, уже 100% знают о нем из прошлых спам рассылок.
Для написания кода без ошибок есть Rust. А PVS-Studio - костыль.
> Для написания кода без ошибок есть Rust.Что, сажаешь любую обезьянку, и она фигачит код на rust без ошибок? Не верю!
Но то что без unsafe в котором себе все также можно отстрелить ногу, на Rust далеко не уедешь, ну если ты не пишешь одни HelloWorld'ы. Сударь упомянуть забыл, но скорей всего он этого и не знал, ибо на 10 фанов Rust приходится 1-2 программиста.
Ну да, только там заведомо известно, что там unsafe, в отличии от язычка для которого предназначено это изделие, и сам этот инструментик успешно показывает, что этот язычок сплошной unsafe.
От того что ты знаешь где у тебя unsafe меньше ошибок ты не допустишь (их ведь не специально допускают), ну и на Rust такого инструмента нет, да и скорость компиляции у Rust не торт, так что вопрос что сейчас лучше спорный :\ Ну и в довершение против Rust я ничего не имею, возможно когда ни будь добавлю его в свой рабочий инструментарий, но на данный момент я не вижу в нем смысла. Я даже опущу дикий синтаксический изврат который в нем периодически встречается.
У них анализатор стоит дороже Intel vtune + vc++ :)
Как раз к новым ноутам на арме и виндусе подоспели, очень хорошо.
IAR Embedded - это не про ноуты, а про железки самопальные
> Как раз к новым ноутам на арме и виндусе подоспели, очень хорошо.С нетерпением жду как ты кайлом и иаром под виндовые армы собирать будешь. На это шоу можно будет билеты продавать.
Проверьте пожалуйста проект Tor
Мои аплодисменты проекту Tor - https://www.viva64.com/ru/b/0507/
> Мои аплодисменты проекту Tor - https://www.viva64.com/ru/b/0507/
> Поздравляю авторов проекта Tor. Я не смог найти в этом проекте ошибок,
> проверив его с помощью статического анализатора PVS-Studio.Значит, действительно по заказу и под контролем спецслужб писали!
Полное отсутсвие ошибок специально задуманно, чтобы побольше людей верило в свою безопасность и поменьше ковырялось во внутренностях кода, с возможностью чисто случайно наткнуться на закладки!
Спецслужбы повсюду, спасает лишь одно - фольгированная шапочка, чтоб они не могли читать мои мысли как в 1984. Говорят, что рептилоиды улетят обратно в Нибиру, когда соберут все золото на Земле, но до этого еще не скоро, поэтому закупайтесь фольгой, господа. Поддерживаю комментатора сверху.
Ты ведь знаешь, что для экранирования мозголучей эффективна лишь золотая фольга?
> Ты ведь знаешь, что для экранирования мозголучей эффективна лишь золотая фольга?Не слушайте его, он глубоко внедренный агент рептилоидов!
Фольга помогает только против совсем слабых псионов!
Зато сквозь обычную (еще советскую) люминевую кастрюлю они даже с корабельным усилителем не смогут продраться!
Внимание! Только шапочки/кастрюли-шлема недостаточно, желательно защитить так же нижнюю мозговую полусферу!
Спасибо, записал
> читать мои мысли как в 1984Прежде чем с умным видом ссылаться на какую-то книгу, полезно эту книгу прочесть.
На этом форуме новость на тему tor относится к 2010му году, а сам проект впервые выкатили в 2001м. Может ли это говорить нам о том, что в предыдущих новостях было написано о том, что тор разрабатывает непосредственно АНБ, навроде селинукса или ещё какого-то опенсорца, посвящённого безопасности?
> Значит, действительно по заказу и под контролем спецслужб писали!
> Полное отсутсвие ошибок специально задуманно,А может все проще? И поскольку это сетевой сервис, который многим хочется разломать - приходится кодить его качественно? Или на выбор будут громкие факапы, с брызгами.
Поскольку у них изначально планка требований к безопасности высокая - приходится писать код нормально. Иначе хакерье разломает в момент а репутация проекта упадет в плинтус.
>> Значит, действительно по заказу и под контролем спецслужб писали!
>> Полное отсутсвие ошибок специально задуманно,
> А может все проще? И поскольку это сетевой сервис, который многим хочетсяПроще, проще. В следующий раз обязательно добавлю тег <ирония> для бронелобых.
> Мои аплодисменты проекту Tor - https://www.viva64.com/ru/b/0507/А свежие postfix и dovecot проверяли?
> А свежие postfix и dovecot проверяли?Оплатите регулярный мониторинг проекта?
>> А свежие postfix и dovecot проверяли?
> Оплатите регулярный мониторинг проекта?Интересу ради -- какой порядок величин?
> Интересу ради -- какой порядок величин?Нет какого-то прайса. Каждый раз это обговаривается отдельно, тем более, что обычно это крупные проекты. Примеры: https://www.viva64.com/ru/b/0342/ , https://www.viva64.com/ru/b/0330/ .
Если у кого-то есть конкретные предложения - приходите в почту, будем обсуждать. :) https://www.viva64.com/ru/b/0500/
> Оплатите регулярный мониторинг проекта?При наличии coverity который нахаляву открытые проекты сканит, так что даже бэджик на гитхабе можно вывесить - сами понимаете :)
> При наличии coverity который нахаляву открытые проекты сканит, так что даже бэджик
> на гитхабе можно вывесить - сами понимаете :)Так и для PVS-Studio существует бесплатный вариант лицензии: https://www.viva64.com/ru/b/0457/
Для бесплатного использования Coverity, требуется открыть исходники. PVS-Studio не требует открывать исходники, но нужно вставить комментарий. Два анализатора - два подхода со своими преимуществами и недостатками.
Хотел было высказать Карпову благодарность за то, что поведал о существовании ОС RT-Thread. Но открыл её сайт и передумал.
А чем отличаются arm компиляторы от x86 с точки зрения статического анализа?
> А чем отличаются arm компиляторы от x86 с точки зрения статического анализа?В основном разными расширениями языка. Плюс потребовалось учесть ряд разных низкоуровневых трюков, которые были подозрительны анализатору (ложные срабатывания), но для микроконтроллеров вполне себе нормальная практика.
А тем временем в далёкой-далёкой галактике... Вот -> https://www.opennet.ru/opennews/art.shtml?num=48174 что получилось. :-)
fragma-clang гораздо приятнее
Отличный продукт. А не нравится статья - не читайте.))) Да и где вы здесь спам увидили?))
Ты заходишь в почту и видешь рекламу заработать в интернете миллион бесплатно, без смс, за один день. Ты на это не подписывался, и тебе это не нужно. Это спам. Тут тоже самое. Ты заходишь на новостной ресурс открытого ПО и видешь рекламу проприетари, которая не соответсвует тематике ресурса, на которую не подписывался, и которая тебе не нужна. Всё тоже самое.
> Ты заходишь на новостной ресурс открытого ПО и видешь рекламу проприетари,Эта реклама явно помечена как реклама. И, заметьте, помечена не малозаметным тегом, а прямо в заголовке. Поэтому никто вас не заставляет увидев слово "реклама" открывать и читать текст, если он вам не интересен.
Сегодня опубликовали статью: Статический анализатор кода PVS-Studio 6.22 адаптирован для ARM-компиляторов (Keil, IAR) - https://habrahabr.ru/company/pvs-studio/blog/350314/
Андрей, ответьте не специалисту: как я понял для JAVA ваш анализатор может отлавливать ошибки связанные с многопоточностью. Это возможно благодаря тому, что в JAVA есть специальные языковые конструкции для написания многопоточного кода? И для C/C++ поиск подобных ошибок реализовать не удастся?
> как я понял для JAVA ваш анализатор может отлавливать ошибки связанные с многопоточностьюОткуда Вы это взяли? :)
Во-первых, Java анализатор вообще ещё только в разработке и про него не было ни одной статьи. Во-вторых, в первую очередь мы будем реализовывать аналоги диагностик, существующие в C++ анализаторе. По поводу диагностик для выявления ошибок многопоточности ничего сейчас сказать не могу, мы про это пока не думали.
Выявлять ошибки, связанные с многопоточностью в C/C++ вообще очень сложная задача для статического анализа. Есть два варианта. Или делать очень, очень сложный анализатор. Например, Intel в своё время делал такой анализатор, делал, да бросил. Не пошло. Второй вариант — это использовать аннотации, которые добавляет в код человек. В некоторых случаях такие аннотации уже могут быть, если речь идёт о OpenMP. Т.е. директивы OpenMP и есть те самые аннотации, которые нужны в качестве подсказок анализатору. Мы в своё время делали анализатор VivaMP, вот некоторые старые статьи на эту тему:
https://www.viva64.com/ru/a/0054/
https://www.viva64.com/ru/a/0044/
https://www.viva64.com/ru/b/0005/
Но анализатор не пользовался спросом, и мы закрыли это направление.
>Откуда Вы это взяли? :)Спутал с другим анализатором, от Фейсбука, кажется. :)
Зато вскрылась интересная информация :)
>Java анализатор вообще ещё только в разработке
> Но анализатор не пользовался спросом, и мы закрыли это направление.Правильно, gcc и clang запилили хренову кучу *san как часть компилятора. Там типовые проблемы ловятся, в том числе и для многопоточных программ. При том не статическим анализом, что mission impossible, а таки анализом в рантайме. Что явно перспективнее.
> Что явно перспективнее.Динамические анализаторы не заменять статические. И наоборот. Эти технологии не конкурируют, а дополняют друг друга. https://www.viva64.com/ru/b/0248/