Pull to refresh

Comments 85

Это замечательно. Ждем ебилды.

http://www.viva64.com/ru/m/0036/
И со средами разными интеграцию сделали. Молодцы! Проделали огромную работу!
Помнится, года три назад вы открещивались от Линукс версии по причине «никому будет не нужно». Молодцы, что передумали.
Репозитории есть! Но на данный момент тестируются.
UFO just landed and posted this here
В репозитории многих дистрибутивов (тот же Debian) не принимают проприетарное ПО.
Кроме того, разработчики сабжа неоднократно подчёркивали, что не продают PVS-Studio частным лицам.

Поэтому, скорее всего, репозиторий у них будет свой.
В debian нет никаких проблем добавить свой репозиторий. И проприетарное ПО там принимают в non-free раздел кстати
>>разработчики сабжа неоднократно подчёркивали, что не продают PVS-Studio частным лицам
Есть какой либо прогресс в этой области?
Думаю, что многим, как и мне интересен этот продукт, но смотреть на продукт, который тебе все равно не продадут — зачем?

Жаль, что рекламу на Хабре перестали даже маскировать под статьи. Могли бы хотя бы сравнение запилить с существующими до этого аналогами на линуксе. А то они бедные прозябали столько лет во тьме.

Поможете нам сделать такую статью, чтобы было больше объективности? Лицензию предоставим, с методологией подскажем.
Ты сам знаешь чей это ответ.
UFO just landed and posted this here

Печально конечно, что на Хабре нельзя высказать свою точку зрения, если это не вылизывание причинного места. На ЛОРЕ линуксоиды уже высказали свое отношение. Но наверно это неправильные линуксоиды, и не для них предназначено.

Так здесь было всегда. Я знал на что шел шутя эту шутку.

А на ЛОРе на что угодно админы локалхоста пишут "не нужно". Вот это круто!

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


Тем более, что люди продолжали просить линукс-версию. В том числе, и на лоре, где контингент довольно специфический и на отдельных "ярких представителей" я бы равняться не стал.

Я пишу статьи на темы, которые мне интересны. С какой стати я должен помогать рекламировать их продукт, существование которого для меня безразлично? Я захожу почитать статьи на технические темы, которыми славится Хабр а не рекламу. И высказал свое недоумение по этому поводу.


на лоре, где контингент довольно специфический

Весь их контингент такой, начиная с Торвальдса. И именно этому контингенту предназначен продукт.

Зачем рекламировать? Разнеси их в пух и прах, если получится, конечно. Опять же, странно жаловаться на рекламу: они ведь в свой блог пишут — всё это так или иначе будет рекламой.


Не интересен продукт? Тогда что в этой теме делать вообще? Вроде, по первым строкам и, тем более, картинке должно быть понятно о чём речь пойдёт.


Весь их контингент такой, начиная с Торвальдса.

Ничего подобного. Во первых, "даже" на лоре есть вполне адекватные и не фанатичные люди. И если на то пошло, то я лор регулярно почитываю, как раз благодаря более живым комментариям. Впрочем, это палка о двух концах.


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

UFO just landed and posted this here

Ваш комментарий тоже не имеет для меня ценности.

UFO just landed and posted this here
Попросите дедфуда :-)
UFO just landed and posted this here
Если бы вся рекламы была бы такой, то и всякие плагины типа AdBlock, RequestPolicy и NoScript не нужны были бы!

Какой такой? Покупайте наш новый пантин прови, теперь с активной формулой. В чем отличие?

Ура-ура! Тестировал бету, был очень доволен. Вы молодцы!
Приятно смотреть на то, что процесс всё же развиваеться) жаль пока не могу сам протестировать.
А вы уже проверили Linux-версию PVS-Studio с помощью Linux-версии PVS-Studio и сообщили разработчикам о найденных ошибках?
UFO just landed and posted this here
Да. Несколько минорных версий назад мы отказались от 32-битных версий. Слишком мал процент пользователей, чтобы заниматься с этой версией.

Бидапичаль. Рабочий проект прибит гвоздями к debian jessie i386, с кучей статических библиотек. Понятно, что x86 давно уже рудимент. Но менять десятки тысяч единиц оборудования никто не будет :-(

Кстати, а в чём сложность поддержки 32 бит? Уж вы то переносимый код писать умеете.

Если кратко, то:

  • Полный тестовый прогон это тяжкий процесс. Мы прогоняем PVS-Studio на 115 C++ открытых проектах и 50 C# открытых проектах. Все эти проекты прогоняются под Visual Studio 2010, 2012, 2013, 2015. Это много часов. Если надо прогнать ещё и 32-битную версию, это в 2 раза дольше. Плюс ещё под Linux теперь около 30 проектов.
  • Собираемая статистика сказала нам, что количество запусков на Win32 системах меньше 4% (точное значение не помню). И дальше этот процент все равно будет только уменьшаться. А что касается клиентов, так вообще никого. Получается, что проблемы нет.

UFO just landed and posted this here
Так ваши клиенты просят, что бы у вас билд-сервера тоже все 32-битными были, или я не так понимаю?
UFO just landed and posted this here

И уж тем более машины разработчиков.
Я тут CLion с нетерпением ждал. А потом раз — и выпилили поддержку 32 бит.


Частично спасает lxc/docker, что бы элементарно иметь на машине свежие версии инструментов, от которых не зависит сборка (git, браузер, ssh и т.д.). Но IDE всё равно приходится запускать из окружения.

А с чем требования то такие связаны? Это какая то религиозная неприязнь к 64 битным процессорам, что не хотят, что бы продукта касалось своими грязными лапами хоть что-то 64 битное?

Нет. Просто у клиентов есть куча оборудования, которое не поддерживает 64 бита. Оборудование копилось годами, со своими функциями оно справляется на ура. Менять его поэтому никто не будет.

Ну и что? В чем проблема завести хотя-бы один 64-битный компьютер специально для такого софта, который уже не существует для x32 но тем ни менее мог бы быть полезен при разработке?

Ну вот смотрите. Нужен мне PVS-Studio для анализа проекта.
Проект имеет в зависимостях статическую библиотеку, исходников которой я не имею. Т.е. просто пересобрать под 64 бита у меня не выйдет, и пересобирать библиотеку мне никто не будет.


Выхода 3:
1) Сборка на таргет-системе. Но тогда я не смогу использовать PVS.
2) Кросс-компиляция. Придётся подготовить своими силами sysroot, своевременно следить за обновлениями. Большие костыли с запуском и отладкой.
3) Сборка с multilib. К сожалению, в debian multilib не для всех пакетов корректно реализован. При попытке установки 32-битных версий зависимостей, dpkg предлагает снести полсистемы из-за конфликтов, вплоть до DE.


Теперь у меня есть 64-битная машина. Как это мне поможет?

Простите, а зачем собирать проект на x64? PVS-студио это же статический анализатор, ему вообще никакие компиляторы для работы не требуются. Или проблема в том что он считает все проекты по умолчанию только 64-битными?
PVS-Studio анилизирует не тектовые файлы, а препроцессированные, а получить их можно либо интегрировав анализатор в сборочную систему, либо запустив Compiler Monitoring и «поймав» эти файлы во время сборки. Самой программе, понятно, компилятор не нужен, не без него очень трудно получить то, что она ожидает на вход.
Тогда понятно. Тяжелое наследие Си в виде препроцессора и здесь сказывается))
Поясню несколько спорных моментов.

  • Препроцессированные файлы — текстовые файлы.
  • Получить их можно и нужно, запустив компилятор (вот где он нужен) с нужными параметрами.
  • Правильная интеграция в сборочную систему позволяет правильно делать шаг, описанный выше.
  • Смотреть на препроцессированные файлы пользователю обычно нет необходимости.
  • Именно эти файлы являются исходными данными для анализа
Прошу прощения за неудачную формулировку, имел в виду «файлы с исходным текстом», а написал просто «текстовые».
Проект имеет в зависимостях статическую библиотеку, исходников которой я не имею. Т.е. просто пересобрать под 64 бита у меня не выйдет, и пересобирать библиотеку мне никто не будет.

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

Анализатор теперь только 64х битный, но анализировать он может любые компилируемые исходники, даже если компилятор 32х битный.

Я не спорю, это можно сделать. Но из нажатия одной кнопки запуск анализа превращается в целый квест.

Как-то так не сработает?


echo #!/usr/bin/ssh {x64host} > /usr/bin/pvs-studio


Ну и на {x64host} подмонтировать сетевую диру с исходниками :)

Способ интересный. Но pvs не через стандартный поток работает. Он вроде перехватывает системные вызовы, которые система сборки вызывает. А для этого его необходимо на той же машине запускать.

Так если в систему сборки встраивать — то перехват системных вызовов не нужен.

Но мне уже тут сказали, что линковка не влияет на анализ. Так что попробую запустить сборку на 64-битной машине.

Я последовал вашему совету. Запускал pvs через trace. Файлы компилируются успешно, но make прерывает сборку на этапе линковки. Лог-файл от pvs не создаётся.
Так же я пробовал интеграцию с qmake. Тоже никакой реакции.


Подскажите, лог создаётся после компиляции или во время?

Кто успел посмотреть видео? Поделитесь секретом, что там было?
Полная версия тут: https://www.youtube.com/watch?v=IpN76t_84h4
Наше выступление: https://www.youtube.com/watch?v=auHdiSIhG3g&feature=youtu.be
Спасибо, теперь ждем версию для MacOS и интеграцию с XCode. *подмигивает*
Да, кстати хотел это же написать (кстати интересно чего минусуют). Это, можно сказать, большая тройка десктопных операционных систем (а значит систем на которых разрабатывают софт). И если уж вы взялись за поддержку Линукса, то обойти Макось было бы нарушением вселенского равновесия.
Планируете ли добавить поддержку ObjC, Swift?
Планируете ли добавить поддержку других языков, скажем Java (судя по сайту C# вы поддерживаете)?
Планируете ли добавить поддержку ObjC, Swift?
Пока нет.

Планируете ли добавить поддержку других языков, скажем Java (судя по сайту C# вы поддерживаете)?
Java — пока нет (но разные фантазии бродят).

C# — да, поддерживаем.
Ну а про MacOSX так и не ответили ни да ни нет :) Можно ли из этого сделать какой-то вывод?
А ведь OSX и Java это пожалуй те технологии где больше всего крутится $$$: яболчная компания приучила своих пользователей за все платить, а java — это банковская сфера, которая всегда с деньгами.
UFO just landed and posted this here
UFO just landed and posted this here
Это ошибка программы strace, которая возникает не на процессах компиляции, а на каких-нибудь системных процессах, которые шуржат во время сборки. Поэтому на анализ и сборку не влияет.
Есть ли возможность интеграции с Qt Creator, но под Windows?
Проверять не Visual Studio проекты давно можно с помощью мониторинга компиляции, доступном в утилите Standalone.

Для интеграции в QMake/CMake/QtCreator/CLion мы разработали 2 модуля. С большой вероятностью они позволят выполнить аналогичную интеграцию и в Windows. Я проверю такую возможность, но чуть позже.

Получил 11 бету, всё никак не соберусь просмотреть все предупреждения, но от того, что видел общее впечатление «PVS плохо работает с пользовательскими макросами».


Установка сейчас очень простая: распаковать, создать ~/.local-pvs, sed -r -i -e 's@^PREFIX=.*@PREFIX="$HOME/.local-pvs/bin"@' install.sh (зачем вообще кто‐то захардкодил там $PREFIX?), ./install.sh (можно с таким же успехом просто сделать cp имеющихся исполняемых файлов: скрипт просто зовёт install для копирования файлов с изменением пользователя/прав доступа, насколько я понимаю задачу install).


Использование тоже просто: с https://github.com/neovim/neovim


git clone https://github.com/neovim/neovim
cd neovim
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$PWD/root -DJEMALLOC_USE_BUNDLED=1
path=( ~/.local-pvs/bin $path )  # То же, что и изменение $PATH
rehash
pvs-studio-analyzer trace -- make
pvs-studio-analyzer analyze --lic-file /path/to/PVS-Studio.lic -o ../PVS-Studio.log

plog-converter -t errorfile -o ../PVS-Studio.log.conv ../PVS-Studio.log
# или
plog-converter -t xml -o ../PVS-Studio.log.xml ../PVS-Studio.log

Первое выдаёт пригодные для того же Vim


/home/zyx/a.a/Proj/c/neovim/src/nvim/window.c:5138:1: error: V501 There are identical sub-expressions to the left and to the right of the '==' operator: (curtab) == curtab

, второе


<message>
        <trialMode>full</trialMode>
        <stringNumber>5138</stringNumber>
        <filePath>/home/zyx/a.a/Proj/c/neovim/src/nvim/window.c</filePath>
        <errorType>error</errorType>
        <errorCode>V501</errorCode>
        <errorText>There are identical sub-expressions to the left and to the right of the '==' operator: (curtab) == curtab</errorText>
        <isFalse>false</isFalse>
        <errorLevel>1</errorLevel>
        <prevString>  int count = 0;</prevString>
        <currentString>  FOR_ALL_WINDOWS_IN_TAB(wp, curtab) {</currentString>
        <nextString>    if (wp->w_buffer != NULL</nextString>
        <extendedString></extendedString>
</message>

. И это, как раз, пример сообщения об «ошибке» в макросах. Впрочем, из XML файла их легко убрать, просто не доходят руки написать фильтр. Ошибок PVS тоже немало нашёл, но шума от макросов куда больше.

Вы можете подавлять предупреждения в макросах, написав (рядом с макросами) комментарии специального вида. Подробнее про это рассказывается в документации. Если не хотите изменять исходные коды, то можно написать эти комментарии в файле конфигурации диагностик pvsconfig (см. тот-же раздел документации).

На ЛОРе пользователи в двух темах написали, что ваша студия статически линкуется с GPL кодом
http://www.linux.org.ru/news/proprietary/12967863/page4
http://www.linux.org.ru/forum/development/12896582/page2
Андрей Карпов живо откликается на многие вопросы, но на эти почему то не нашел времени ответить. Интересно было бы услышать комментарии

Наш продукт включает в себя библиотеку glibc, распространяемую под лицензией LGPL. В соответствии с лицензией LGPL, по запросу третьего лица, мы готовы предоставить объектные файлы, которые позволят перекомпоновать наш продукт с использованием другой версии glibc. Мы гарантируем работоспособность нашего продукта только с официальной версией glibc 2.23. Запросы на получение объектных файлов можно отправлять через форму обратной связи.
Утилита strace — один из нескольких универсальных способов проверить любой проект без интеграции анализатора в сборочную систему.

Сам анализатор довольно универсальное приложение, но не Linux-base системы мы пока поддерживать не планируем.
Что-то не понял как встроить анализатор в Clion. Должен ли я создать новую цель взамен основной или создать дополнительную с помощью команды pvs_studio_add_target? Не могли бы вы дать пример файла CMakeLists проекта, который изображен на скриншоте в документации?
UFO just landed and posted this here

Обращение ко всем пользователям Linux-версии PVS-Studio 6.10.


WARNING! Хочу обратить внимание, что сырой лог, полученный сразу после проверки использовать нельзя! Он не предназначен для просмотра и служит только как источник данных для программы plog-converter.


К нам стало приходить большое количество писем, что результатами работы PVS-Studio пользоваться невозможно. Программисты получают огромный файл, с тысячами одинаковых сообщений на один заголовочный *.h файл и прочим мусором. Мучаются, жалуются. Другие, наверное, не жалуются, а молча теряют интерес к PVS-Studio.


Эти файлы и не предназначены для просмотра. Для преобразования их в «человеческий» формат служит утилита plog-converter, описанная в документации. Эта утилита не только преобразует лог, но и удаляет в нём дубликаты для h-файлов, фильтрует сообщения и так далее. Например, есть смысл начать изучение отчета с предупреждений общего назначения первого и второго уровня (ключ -a GA:1,2). Это очень важно, так как иначе программист просто утонет в сообщениях.


В следующей версии, мы планируем изменить изначального формат лога, чтобы было понятно, что это некий бинарный формат и он не предназначен для просмотра. Это должно подсказать программисту, что с этим файлом надо ещё что-то сделать и он, продолжив в чтение документации, будет узнавать про plog-converter.

Sign up to leave a comment.