The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги | ]

28.07.2017 19:19  Итоги проверки Tizen в статическом анализаторе PVS-Studio (реклама)

Заявление, что при помощи статического анализатора PVS-Studio можно выявить около 27 тысяч ошибок в мобильной платформе Tizen вызвало много вопросов и критических замечаний, в основном связанных с тем, что фактически проверка затронула только 2.4 млн строк кода из имеющихся в 72.5 млн строк с последующей экстраполяцией результатов. Разработчики PVS-Studio опубликовали итоговую статью, в которой попытались прояснить свою позицию в отношении некоторых вопросов.

На замечания о недостаточном размере проверочной выборки (3.3%) для экстраполирования результатов на весь проект, разработчики PVS-Studio отметили то, что выборка в 3.3% для проектом масштаба Tizen не такая и маленькая и включает около 2.4 млн строк, по которым вполне можно сделать приблизительные общие выводы. Кроме того, в эти 2.4 млн строк вошли компоненты совершенно разных частей ОС, выбранных случайно, от типичных alsa-lib, efl, enlightenment, bluetooth-frwk и aspell до capi-maps-service, org.tizen.download-manager и других специфичных для Tizen компонентов.

На основе проведённой проверки показатель качества кода Tizen составил 0.37 ошибок на 1000 строк кода, что можно отнести к среднему уровню. Например, для проекта Notepad++ этот показатель составил 2 ошибки на 1000 строк кода, для Far Manager for Linux - 0.46, а для Tor - 0 (вообще не выявлено ошибок). По поводу ложных срабатываний на примере анализа кода библиотек EFL показано, что статический анализатор PVS-Studio выдаёт около 10-15% ложных срабатываний.

Идея переписать всё на языке Rust, предоставляющем средства безопасной работы с памятью, рассматривается как малореалистичная с учётом огромной кодовой базы проектов на С/С++ и вероятности внесения новых ошибок в процессе портирования. Отмечается, что в крупных проектах значение языка не так велико, а многие библиотеки на C или C++ давно отлажены.

  1. Главная ссылка к новости (https://www.viva64.com/ru/b/05...)
  2. OpenNews: Анализатор PVS-Studio бесплатно доступен экспертам по безопасности (реклама)
  3. OpenNews: Эксперимент по выявлению уязвимостей во FreeBSD при помощи PVS-Studio (реклама)
  4. OpenNews: Использование PVS-Studio для поиска дефектов безопасности (реклама)
  5. OpenNews: Методы работы и история возникновения анализатора кода PVS-Studio (реклама)
  6. OpenNews: PVS-Studio доступен для бесплатного использования открытыми проектами (реклама)
Лицензия: CC-BY
Тип: К сведению
Ключевые слова: viva64, pvs-studio
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Ajax/Линейный | Раскрыть все сообщения | RSS
 
  • 1.1, nii (?), 19:47, 28/07/2017 [ответить] [показать ветку] [···]    [к модератору]
  • +/
    Упоминание о том, что в торе 0 ошибок сразу над новостью о том, что в торе только что исправили критическую ошибку.
     
     
  • 2.2, A.Stahl (ok), 19:51, 28/07/2017 [^] [ответить]    [к модератору]
  • +15 +/
    Анализатор анализирует ошибки связанные с языком, а не с корявостью логики.
    Программа, которая запускает rm если параметров больше 3 может быть синтаксически корректной, но адекватной её назвать сложно.
     
     
  • 3.5, anonymous (??), 19:55, 28/07/2017 [^] [ответить]     [к модератору]
  • +1 +/
    Странно, мне казалось что UD в си работает именно по такому принципу - вместо то... весь текст скрыт [показать]
     
     
  • 4.6, A.Stahl (ok), 20:02, 28/07/2017 [^] [ответить]    [к модератору]  
  • +8 +/
    UD -- да. А Поттеринг, например, пишет: "Если имя пользователя начинается с цифры, то запускаем что попало из-под рута". Это UD? Нет. Это ошибка, которую можно вычислить в терминах языка? Нет. Это логическая ошибка. И программный код этой логической ошибки -- корректный и пушистый.
     
     
  • 5.20, номия (?), 01:13, 29/07/2017 [^] [ответить]     [к модератору]  
  • –3 +/
    ващет он сказал что добавлять проверку а не обходит ли кто-то стандарты безопасн... весь текст скрыт [показать]
     
     
  • 6.26, Аноним (-), 07:07, 29/07/2017 [^] [ответить]    [к модератору]  
  • +1 +/
    В системном компоненте проверки нужны. И как раз эта ошибка с цифрой тому показательный пример.
     
     
  • 7.31, борис эйк (?), 10:49, 29/07/2017 [^] [ответить]    [к модератору]  
  • –1 +/
    дада а ещё ножи надо запретить продавать или как минимум лицензию ввести. а ещё аспирин и валерианку по рецепту... и воду не более 2х литров в руки - а то ведь человек умереть может!
     
  • 7.33, борис эйк (?), 10:51, 29/07/2017 [^] [ответить]     [к модератору]  
  • –2 +/
    из-за вас _няшек_ всякие упыри и запрещают всё подряд а вы жрёте и нахваливаете... весь текст скрыт [показать]
     
  • 6.61, kamiram (?), 01:23, 01/08/2017 [^] [ответить]     [к модератору]  
  • +/
    А есть которые проверяют Взрыватель РГН взводится только через 1,3 8212 1,8 с ... весь текст скрыт [показать]
     
  • 4.16, Олег (??), 22:56, 28/07/2017 [^] [ответить]    [к модератору]  
  • +/
    Может имеется ввиду UB (undefined behaviour)?
     
     
  • 5.17, A.Stahl (ok), 22:58, 28/07/2017 [^] [ответить]    [к модератору]  
  • +/
    > Может имеется ввиду UB (undefined behaviour)?

    Разумеется.


     
     
  • 6.18, anonimus (?), 00:24, 29/07/2017 [^] [ответить]    [к модератору]  
  • +1 +/
    Почему тогда 5 раз указан UD?
     
     
  • 7.28, A.Stahl (ok), 08:14, 29/07/2017 [^] [ответить]    [к модератору]  
  • +5 +/
    Потому что 5 раз ошиблись при написании.
     
  • 2.3, kachsheev (ok), 19:53, 28/07/2017 [^] [ответить]    [к модератору]  
  • +1 +/
    Там новость про браузер же, а тут скорее подразумевается демон.
     
  • 2.32, crypt (ok), 10:50, 29/07/2017 [^] [ответить]     [к модератору]  
  • +2 +/
    Я уже вел большую дискуссию с автором на лоре и спрашивал, почему его анализато... весь текст скрыт [показать]
     
     
  • 3.40, Andrey_Karpov (ok), 14:29, 29/07/2017 [^] [ответить]     [к модератору]  
  • –2 +/
    Жаль, что на лоре такой Butthur на упоминание PVS-Studio Впрочем, с другой стор... весь текст скрыт [показать]
     
  • 2.34, crypt (ok), 10:53, 29/07/2017 [^] [ответить]     [к модератору]  
  • +1 +/
    короче, цель этой софтины не в том, чтобы на самом деле предотвращать реальные п... весь текст скрыт [показать]
     
     
  • 3.48, Аноним (-), 02:24, 30/07/2017 [^] [ответить]    [к модератору]  
  • +/
    Цыц, противный! Щас какой-нить директор тебя прочитает чего доброго!
     
  • 2.53, Аноним (-), 18:10, 30/07/2017 [^] [ответить]     [к модератору]  
  • +/
    Если быть более точным - в браузере в firefox А если быть еще более точным,... весь текст скрыт [показать]
     
  • 1.4, Аноним (-), 19:55, 28/07/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    А что таки помешало на всём коде тизена запустить эту чудо-штуку?
     
     
  • 2.7, Andrey_Karpov (ok), 20:09, 28/07/2017 [^] [ответить]    [к модератору]  
  • +/
    Ничего не помешало. Просто не было смысла это делать. Т.е. работал бы анализатор долго, а смотреть я бы всю гору отчётов всё равно бы не стал.
     
     
  • 3.29, Аноним (-), 08:38, 29/07/2017 [^] [ответить]    [к модератору]  
  • +2 +/
    Завтра конец света и надо срочно выкатить хоть что-то?
     
  • 2.8, Аноним (-), 20:11, 28/07/2017 [^] [ответить]    [к модератору]  
  • +7 +/
    Желание заработать на кусок хлеба с маслом. Мол, мы вам бесплатно показываем, что мы можем найти в вашем коде, а вы смотрите, интересно вам это или нет, и если интересно — давайте разговаривать более предметно. В принципе, в любом случае все стороны в выигрыше. :)
     
  • 1.9, Zoolander (?), 20:28, 28/07/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Tizen - капиталисты, PVS-студио - капиталисты. Ну и фиг с вами.
     
     
  • 2.10, ы (?), 20:39, 28/07/2017 [^] [ответить]    [к модератору]  
  • –1 +/
    написал демагог
     
     
  • 3.12, Zoolander (?), 21:00, 28/07/2017 [^] [ответить]    [к модератору]  
  • +1 +/
    Тьфу на тебя
     
     
  • 4.21, номия (?), 01:15, 29/07/2017 [^] [ответить]    [к модератору]  
  • –1 +/
    > Тьфу на тебя

    ещё раз.

     
  • 4.35, Алексей (??), 12:08, 29/07/2017 [^] [ответить]    [к модератору]  
  • +5 +/
    Алишер, опять ты?
     
  • 2.11, Led (ok), 21:00, 28/07/2017 [^] [ответить]    [к модератору]  
  • +4 +/
    > PVS-студио - капиталисты.

    Врядли... Среди капиталистов явные идиоты не выживают.

     
     
  • 3.13, Zoolander (?), 21:01, 28/07/2017 [^] [ответить]    [к модератору]  
  • +/
    >> PVS-студио - капиталисты.
    > Врядли... Среди капиталистов явные идиоты не выживают.

    А-ха-ха-ха!

     
  • 3.14, Анонец (?), 21:37, 28/07/2017 [^] [ответить]    [к модератору]  
  • +1 +/
    Светодиод как всегда в теме, знает о чем говорит
     
     
  • 4.30, Аноним (-), 08:39, 29/07/2017 [^] [ответить]    [к модератору]  
  • +2 +/
    > Светодиод как всегда в теме, знает о чем говорит

    Он что ли не выжил?

     
  • 2.24, KonstantinB (ok), 06:04, 29/07/2017 [^] [ответить]    [к модератору]  
  • +1 +/
    > капиталисты

    Вы так говорите, как будто это что-то плохое.

     
  • 2.25, Sabakwaka (ok), 07:03, 29/07/2017 [^] [ответить]    [к модератору]  
  • –1 +/
    >> PVS-студио - капиталисты. Ну и фиг с вами.

    Отчего всех тупиц так бесит такой прекрасный инструмент, как PVS?
    Что с вами не так?

     
     
  • 3.27, ы (?), 07:08, 29/07/2017 [^] [ответить]    [к модератору]  
  • –1 +/
    У работников макдональдса принято всё хаять
     
  • 1.15, Вы забыли заполнить поле Name (?), 21:58, 28/07/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • +1 +/
    > Отмечается, что в крупных проектах значение языка не так велико, а многие библиотеки на C или C++ давно отлажены.

    Если значение не велико, то зачем постоянно пиарят этот PVS-Studio и говорят, что постоянно нужно его прогонять.

    Все статические анализаторы от проблем в языке. Просто с Rust PVS-Studio будет не нужен и, соответственно, авторам данного инструмента придется искать другие источники заработка.

     
     
  • 2.19, Comdiv (ok), 00:27, 29/07/2017 [^] [ответить]     [к модератору]  
  • –1 +/
    Это излишне оптимистичное заявление Статический анализатор может выявлять более... весь текст скрыт [показать]
     
     
  • 3.46, Vkni (ok), 02:03, 30/07/2017 [^] [ответить]     [к модератору]  
  • +/
    Я проверил, такое даже GHC не ловит, хотя в Хаскеле это вообще бессмысленная чеп... весь текст скрыт [показать]
     
     
  • 4.52, Vkni (ok), 16:32, 30/07/2017 [^] [ответить]    [к модератору]  
  • +/
    Блин, кроме случаев, когда a = NaN :: Double, конечно. :-)
     
  • 3.60, Вы забыли заполнить поле Name (?), 00:49, 01/08/2017 [^] [ответить]     [к модератору]  
  • +/
    Попробуйте сначала проверить прежде чем глупости писать https play rust-lang ... весь текст скрыт [показать]
     
     
  • 4.62, Vkni (ok), 06:23, 01/08/2017 [^] [ответить]     [к модератору]  
  • +/
    У вас не на то предупреждение warning unnecessary parentheses around if cond... весь текст скрыт [показать]
     
  • 1.23, Аноним (-), 06:03, 29/07/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    Господи, дадут какой-нибудь группе китайцев внутри компании выполнить проверку через Trial версию PVS и все исправить. Они пойдут судиться с самсунгом? Чем докажут собственно?
     
  • 1.39, Аноним9563 (?), 13:48, 29/07/2017 [ответить] [показать ветку] [···]     [к модератору]  
  • –3 +/
    программист из меня конечно чуть лучше чкем никакой, но зашел насайт для интерес... весь текст скрыт [показать]
     
     
  • 2.41, Andrey_Karpov (ok), 14:37, 29/07/2017 [^] [ответить]    [к модератору]  
  • +2 +/
    Такие ошибки хорошо видны, когда соответствующие фрагменты кода вот так представлены. В коде проекта такие ошибки могут благополучно переживать несколько Code-Review, что собственно они и делают.

    По поводу проделанной работы процитирую фрагмент статьи:
    Рассказывать о всех найденных и исправленных нами ошибках в Unreal Engine я не буду, а выделю только несколько, которые, на мой взгляд, заслуживают внимания. Желающие могут ознакомиться с другими ошибками, заглянув в pull request на GitHub - https://github.com/EpicGames/UnrealEngine/pull/3462 . Для доступа к исходному коду и указанному pull request у вас должен быть доступ к репозиторию Unreal Engine на GitHub. Для этого необходимо иметь учётные записи GitHub и EpicGames, которые должны быть связаны на сайте unrealengine.com. После этого нужно принять приглашение на вступление в сообщество Epic Games на GitHub - https://github.com/EpicGames/ . Инструкция: https://www.unrealengine.com/ue4-on-github

    Псевдобаги мы никогда не придумывали. Ну разве что для документации или для пояснения каких-то моментов. Всё примеры мы берём из реальных проектов. Благо их у нас тысячи - https://www.viva64.com/ru/examples/

     
     
  • 3.42, недовольный (?), 15:15, 29/07/2017 [^] [ответить]    [к модератору]  
  • –2 +/
    Убедительно, но не совсем...
    Но быть может в анриле кодят слепые люди?
    Нет, мы конечно все понимаем что когда  перед глазами  куча  файлов на тысячи строк, то вззгляд "замыливается" сильно, так что не видно даже самых дурацких  ошибок.  Но  изпримеров  анонима видно что кстрокабыла скопирована минимум  1 раз а тои все  4, просто покакой-то причине  впоследне не заменили знаки.. Ятаких больших программ не писал, но не ужели все настолько плохо?
    Если так то понятно почему все чаще становятся актуальны  такие  программы как ваша  - Народ разучился кодить. Напрочь.  И забыл что такое Внимательность. Все только быстрее быстрее  лишь бы  выпустить програму в продакшен и бабло огрести...
     
     
  • 4.43, Comdiv (ok), 15:50, 29/07/2017 [^] [ответить]    [к модератору]  
  • +1 +/
    >Ятаких больших программ не писал, но не ужели все настолько плохо?

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

     
  • 4.44, Andrey_Karpov (ok), 16:11, 29/07/2017 [^] [ответить]    [к модератору]  
  • +3 +/
    Прошу пролистать вот эту статью:

    Зло живёт в функциях сравнения - https://www.viva64.com/ru/b/0509/

    Прошу обратить внимание, в каких проектах нами были найдены эти банальные ошибки. Это не лабораторные работы студентов. Это MongoDB, Chromium, Unreal Engine, LibreOffice, Qt, Mono, CryEngine, GCC, Roslyn, MSBuild, WinMerge и так далее.

    О чем это говорит? О том, что программировать сложно. И нет ничего зазорного, чтобы использовать дополнительные средства страховки (юнит-тесты, регрессионные тесты, статические анализаторы, динамические анализаторы и так далее).

    Точно так-же, как нет ничего зазорного в том чтобы пристегнуться ремнями безопасности. Особенно, если вы профессионал и водите спортивную машину (разрабатываете профессиональный софт). Примечание. Гонщики Формулы 1 пристегиваются в кокпите 6-точечными ремнями безопасности, так же, как и пилоты истребителей.

     
  • 4.47, Vkni (ok), 02:08, 30/07/2017 [^] [ответить]    [к модератору]  
  • +/
    > Ятаких больших программ не писал

    Ага.

    > Народ разучился кодить.

    Нет, просто там объёмы большие. Такие большие, что любой хоть раз, да запнётся.

     
  • 4.57, Ordu (ok), 18:55, 31/07/2017 [^] [ответить]    [к модератору]  
  • +/
    > Но  изпримеров  анонима видно что кстрокабыла скопирована минимум  1 раз а тои все  4, просто покакой-то причине  впоследне не заменили знаки..

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

    Такое случается иногда. Нечасто, но достаточно часто для того, чтобы со временем развивалась привычка проверять, перепроверять и ещё раз перепроверять вот такие вот строки кода, полученные копипастом. Иногда даже возникает мысль, что проще было бы без копипаста набить целиком выражение. Единственное что останавливает -- не факт, что набирая руками не налепишь ещё больше ошибок.

    > Народ разучился кодить. Напрочь.  И забыл что такое Внимательность.

    Угу. Современному программисту доступен мощный тулкит, который расслабляет. Надо выкинуть из него операции copy и paste. Кстати PVS-Studio, если его применять на регулярной основе, приучит ещё меньше напрягать внимание, и расслабляться ещё больше. Поэтому не надо им пользоваться. А, и надо ещё выкинуть компилятор C из тулкита -- только ассемблер, только хардкор -- потому что компилятор C выполняет статические проверки типов, что позволяет программисту довольно безалаберно общаться с этими типами: компилятор ведь поправит.

     
  • 1.49, 123 (??), 10:28, 30/07/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • +/
    >>Идея переписать всё на языке Rust, предоставляющем средства безопасной работы с памятью, рассматривается как малореалистичная с учётом огромной кодовой базы проектов на С/С++ и вероятности внесения новых ошибок в процессе портирования

    Все верно - те кто пытался навести порядок в классовой иерархии проекта поймут без объяснений причин.

     
  • 1.54, northbear (??), 19:01, 30/07/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    Про Rust ребята ожидаемо слукавили. Конечно, если народ нечнёт переводить проекты на другие языки, то плоды их трудов станут ненужными.
    То что такие инструменты must have для серьезных критичных коммерческих проектов, это факт. Это не имеет смысла обсуждать.
     
  • 1.55, Kodir (ok), 22:20, 30/07/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    Tizen - когда там успели так много настрочить?? Я думал, это мобильная ОСь, где как раз НЕ НУЖНО столько кода - это ж не ПК, где подключают мириады периферии и где количество задач зашкаливает! Это просто мобила, пальцетык с кучей перделок "под пальцы". Походу, там тоже сидят космические архитекторы, желающие написать "одно, подо всё и для всех". Win 10 тому печальный пример...
     
     
  • 2.56, Led (ok), 22:36, 30/07/2017 [^] [ответить]    [к модератору]  
  • +/
    > Я думал

    Опять врёшь?

     
  • 1.58, Andrey_Karpov (ok), 19:14, 31/07/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    А вот обещанная ранее статья: Характеристики анализатора PVS-Studio на примере EFL Core Libraries, 10-15% ложных срабатываний - https://www.viva64.com/ru/b/0523/
     
     
  • 2.59, Led (ok), 22:15, 31/07/2017 [^] [ответить]    [к модератору]  
  • +/
    Ух ты! Картинка-в-картинке^WРекламка-в-рекламке!
     
  • 1.63, Kodir (ok), 19:02, 03/08/2017 [ответить] [показать ветку] [···]    [к модератору]  
  • –1 +/
    С таким уровнем ошибок для _встроенного_ПО_ сасунг может смело катиться к чертям! Это неприемлемо!
     

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:


      Закладки на сайте
      Проследить за страницей
    Created 1996-2018 by Maxim Chirkov  
    ДобавитьПоддержатьВебмастеруГИД  
    Hosting by Ihor