LINUX.ORG.RU

Я снова пришел поблевать на единорога

 ,


1

4
#include <zlib.h>
...
    if (method == FEN_COMPRESS_TYPE_GZIP)
        idata->ret = inflateInit2(&idata->strm, FEN_ENABLE_GZIP);
# pvs-studio report:
./projects/shared/libfenrir/code/utils/fen_gzip.c:140:1: warn	V1031 The 'inflateInit2' function is not declared. Passing data to or from this function can be affected.
./projects/shared/libfenrir/code/utils/fen_gzip.c:142:1: warn	V1031 The 'inflateInit2' function is not declared. Passing data to or from this function can be affected.

zlib.h:

#  define inflateInit2(strm, windowBits) \
          inflateInit2_((strm), (windowBits), ZLIB_VERSION, \
                        (int)sizeof(z_stream))

Ну то есть понятно, да? Оно даже не пытается разворачивать макросы/препроцессить. Тупо видит xxx() - считает это функций.

600 000-∞р/год (в зависимости от того насколько вы большая компания) за херобору которая даже gcc -E не делает чтобы получить список актуальных функций.

Я понимаю, что когда делаешь сложный технический продукт можно чего-то не учесть, типа какие-нибудь auto shared_ptr с лямбдами и блекджеком. Но получение списка функций - это базовый функционал, епт!

P.S. косвенную проверку указателя на NULL также все еще не научились. «Либо == NULL либо её у вас нет.»

Кто там из клоунов незабаненный остался? @PVS-Studio_engineer, @Andrey_Karpov_2009, @AndreyKarpovN, @Andrey_Karpov_2020

Перемещено anonymous_incognito из talks

★★★

Ответ на: комментарий от seiken

Может ты его не настроил

А его нечем настраивать. Оно перехватывает вызовы gcc и смотрит его параметры само. GCC собирает проект, проблемы нет.

Где сравнение с 100500 другими тулзами?

gcc, clang-analyzer, cppcheck - все умеют разворачивать макросы.

PPP328 ★★★ ()

Ну то есть понятно, да?

clang-tidy, clazy & Co тоже спотыкаются на коде zlib. Давно пора эту поделку переписать по заветам C++20.

600 000-∞р/год

Анализаторы из комплекта clang бесплатны, и уже перегнали эту поделку по возможностям.

Suigintou ★★★★ ()
Ответ на: комментарий от Suigintou

тоже спотыкаются на коде zlib.

Я бы понял, если бы это была развертка, скажем, xmacro или, например, variadic. Но это же просто одноуровневая развертка. В libxml конструкции экспорта функций и то сложнее. Такое ощущение что у них хэдер zlib стоит в исключении.

И это все притом, что в их лживой рекламе они заявляют:

C/C++. На данный момент проаннотировано 6570 функций (стандартные библиотеки C и C++, POSIX, MFC, Qt, ZLib и так далее).

PPP328 ★★★ ()
Ответ на: комментарий от seiken

fortify такой херни даже 5 лет назад не делал насколько я помню. Да что там fortify - ссаный clang-tidy подобными проблемами не страдает. Сабжем - никогда не пользовался, так что насколько адекватная предъява на фоне всего остального - х3, но вроде как бага и правда довольно печальная для платного инструмента не один год на рынке.

pon4ik ★★★★★ ()

Ну то есть понятно, да?

Это еще смешнее, чем в прошлый раз с проверкой указателей.

600 000-∞р/год (в зависимости от того насколько вы большая компания) за херобору которая даже gcc -E не делает чтобы получить список актуальных функций.

Успешный бизнес. Вот чем надо заниматься.

wandrien ()
Ответ на: комментарий от seiken

Судя по некоторым отзывам, анализатор шланга будет покруче pvs, а он бесплатный.

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

wandrien ()
Ответ на: комментарий от Suigintou

Анализаторы из комплекта clang бесплатны, и уже перегнали эту поделку по возможностям.

Хорошо. Как-нибудь попробую свой велосипед прошерстить этим вашим клангом. И сравню.

seiken ★★★★★ ()

600 000-∞р/год

люди реально платят за это 600 тыр, ещё и в год, а не один раз купили и используют? а что это за люди такие, частный бизнес или с государственным участием?

а где ты взял, тоже купил? а зачем?

anonymous ()
Ответ на: комментарий от anonymous

а где ты взял, тоже купил? а зачем?

Если в начале файла написать «деар френдз лец ми спик фром май харт» - то оно не спрашивает лицензию. Но добавляет sleep 1 к времени анализа каждого файла

PPP328 ★★★ ()
Ответ на: комментарий от PPP328

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

но всё таки, где находятся те люди которые за это платят 600 тыр?

anonymous ()
Ответ на: комментарий от anonymous

платят кек

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

anonymous ()
Ответ на: комментарий от fsb4000

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

где-то можно найти пруфики?

anonymous ()
Ответ на: комментарий от anonymous

А я не знаю ничего насчёт пруфов.

Я из тех кто использует бесплатно с помощью коментариев в коде:

// This is an independent project of an individual developer. Dear PVS-Studio, please check it.
// PVS-Studio Static Code Analyzer for C, C++, C#, and Java: http://www.viva64.com
fsb4000 ★★★★ ()
Ответ на: комментарий от anonymous

не могу понять ты тралишь или нет,

Не тралю. У них есть «типа» бесплатный вариант, если в начала файла написать хвалебную оду их студии. Сначала они везде писали что это легально, потом что засудят всех кто так будет делать не на опенсорс проекты. Перегружать sleep не пробовал, но факт в том, что файлы любого размера анализируются ровно 1 секунду.

А вот так они походу пришли к этому:

IlVin
4 октября 2013 в 13:39
+3
Торгуйте скоростью анализа: Сделайте версии, которые анализируют код очень медленно и версии, которые анализируют код быстро.
Как сделать медленно — напихайте лишних циклов, заюзайте 32 битный режим, один поток/ядро.
И получится, что за дешево — очень долго, а приемлемая скорость только за большие деньги.
PPP328 ★★★ ()
Ответ на: комментарий от PPP328

бл*дь, ну и бред. а что вам, пацаны, мешает написать скрипт на баше который делает cat это параши + исходный файл, пишет это всё во временный файл в /tmp, отдаёт то, что получилось на проверку, ну и выложить этот скрипт на гитхаб под gpl?

они вообще в адеквате? 1 секунда - это долго если время компиляции проекта измеряется десятками минут или часами? на кого вообще расчитана эта ху*та?

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

anonymous ()
Ответ на: комментарий от anonymous

я раньше не слышал чтобы там где я нашёл знакомые имена это использовалось.

а у тебя прямая связь с техлидами всех этих контор и они тебе регулярно телеграфируют, типа, «дорогой аноним зпт сегодня закупили лицензий на сумму Х»?

seiken ★★★★★ ()
Ответ на: комментарий от seiken

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

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

было бы здорово всё таки увидеть какие-то пруфики в силе «pvs studio уже 5 лет как интегрировано в наше ci».

anonymous ()
Ответ на: комментарий от anonymous

У нас контора купила. Но продлять уже не будем. Ибо реально бестолковая хрень. На билд серверах какая-то опенсорсная щас крутится и она сильно больше отлавливает, чем единорог.

anonymous ()
Ответ на: комментарий от anonymous

но всё таки, где находятся те люди которые за это платят 600 тыр?

У нас контора >1000 человек. 600к рублей это ж около 8.5к евро. Ну и как бы не деньги совсем, да. меньше ЗП одного сеньора (или даже мидла хз).

anonymous ()
Ответ на: комментарий от anonymous

было бы здорово всё таки увидеть какие-то пруфики в силе «pvs studio уже 5 лет как интегрировано в наше ci».

Зачем им рекламировать PVS, если они ее уже купили?

seiken ★★★★★ ()
Ответ на: комментарий от anonymous

т.е. ты предполагаешь, что это делается тайно?

нет. Мой поинт в том, что если ты чего-то не слышал, это ничего не значит само по себе. Ты спрашивал у них? У тебя есть инсайт?

И вообще, структура компании может быть такая, что все эти CI у подрядчика или вообще в аутсорсе, а шильдик там амазоновский или еще какой-то известной конторы. И всем им до фени, есть ли они в списке на сайте pvs или их там нет.

seiken ★★★★★ ()
Ответ на: комментарий от anonymous
    mkdir -p "$_DIR_PVSANALYZE"
    cp -rT . "$_DIR_PVSANALYZE"
    cd "$_DIR_PVSANALYZE"
    local c_files=$(find . -name "*.c" && find . -name "*.cpp")
    for f in $( echo "$c_files" ); do
        echo "$f" | xargs -I '{}' sed -i '1s/^/ *\/\n\n /' {}
        echo "$f" | xargs -I '{}' sed -i '1s/^/ * PVS-Studio Static<...>

Ну ты понел, да?

PPP328 ★★★ ()
Последнее исправление: PPP328 (всего исправлений: 1)
Ответ на: комментарий от anonymous

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

anonymous ()
Ответ на: комментарий от seiken

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

а кто-то из вас нашёл там знакомые имена? можете подтвердить, что они действительно являются клиентами пвс?

anonymous ()

Оно даже не пытается разворачивать макросы/препроцессить. Тупо видит xxx() - считает это функций.

даже gcc -E не делает чтобы получить список актуальных функций.

https://www.viva64.com/ru/m/0029/#ID8B1FD8D431

сам command-line анализатор по принципу своей работы очень схож с компилятором — он вызывается для каждого из проверяемых файлов с параметрами, включающими в себя, в том числе, и оригинальные параметры компиляции этого файла. Затем анализатор вызывает необходимый ему препроцессор (опять, в соответствии с препроцессором, используемым при компиляции проверяемого файла) и производит непосредственный анализ полученного препроцессированного временного файла, т.е. файла, в котором раскрыты все include и define директивы.

static_lab ★★★★★ ()
Ответ на: комментарий от vedowi6419

потрясающе запутанная история. вы никогда чтоли не видели как на сайтах пишут: «что наши клиенты говорят о нас» и вставляют цитаты. это же элементарная вещь, а тут целый детектив на ровном месте. зато в клиентах пол мира где каждый может найти знакомое имя, но либо первый раз про это узнают, либо кто-то что-то вымутил.

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

anonymous ()

хрень этот ваш pvs, упор делается на ошибки копипасты и всякую муть которую нормальный человек и не пишет. всяких clang-tidy, cppcheck хватает, а реальные проблемы работы кода выявляют санетайзеры из clang, а не эта приблуда.

если проект опенсорц то есть coverity scan. но да никто тебе не запретит поднять виртуалку без интернета и проверять в нем хоть коммерческий проект тупо добавляя эти строчки кода скриптом.

bhfq ★★★★★ ()
Последнее исправление: bhfq (всего исправлений: 1)
Ответ на: комментарий от paramon

всё что нужно для чего? если например реализация f() в одном файле, а реализация g() в другом файле, f() вызывает g() или наоборот, то что он сможет проверить кроме совпадения количества и типов параметров, что компилятор в общем-то и без него сделает?

зачем вообще нужен этап линковки после компиляции?

anonymous ()
Ответ на: комментарий от anonymous

зачем вообще нужен этап линковки после компиляции?

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

Harald ★★★★★ ()
Ответ на: комментарий от PPP328

А как оно тогда умудряется считать, что это функции а не макросы? Значит макросы не развернуты.

Я же не телепат и не знаю, какой у тебя там проект, как он собирается и как ты запускаешь единорога.

static_lab ★★★★★ ()
Последнее исправление: static_lab (всего исправлений: 1)

У zlib используются трюки с префиксами имён. Ищи макросы Z_PREFIX, Z_PREFIX_SET. И смотри файл zconf.h. Вполне может случиться, что макроса inflateInit2 у тебя действительно не объявляется.

i-rinat ★★★★★ ()