Pull to refresh

Comments 45

Совсем офтопик — О графах и графоманах или Почему я не люблю Льва Толстого. Прошу прощения за цитату: "В этих сорока шести строчках, словно свет в дивно ограненном алмазе собраны, кажется, все возможные языковые и сюжетные ляпы" — Андрею впору ее использовать как эпиграф к статьям о PVS Studio.
ох и разложили в Вашем оффтопике Льва Толстого! Где бы комментарии к статье почитать?
После прочтения статьи по вашей ссылке появилось непреодолимое желание воткнуть вилку в глаз Логинову. Вы нарушили мое душевное спокойствие! :)
Да, мне всегда казалось что Лев Толстой писал в формате XML.
Начало первого предложения опуса: «Прежде чем начать рассуждение о творчестве Льва Толстого необходимо сформулировать несколько до идиотизма элементарных истин».
Дальше не читал.
А вы хоть отправляете авторам Apache и прочих исследованных программ багрепорты?
Или вас только продажи интересуют?
Автор во всех предыдущих статьях отвечал на этот вопрос, отправляет по мере возможности.
Знаете, Вы подняли очень важную и ещё неосвященную тему. Именно как Вы, вопрос ещё никто не формулировал. :)
Были разные варианты, но именно такого вопроса пока ещё не было:
  1. А можно узнать, были ли разработчики Qt уведомлены о найденных ошибках? [1]
  2. А вы в хромиум багрепорты\патчи отправили? [2]
  3. Разработчики в курсе? ) [3]
  4. Поворчу: Вы сделали багрепорты в проекты, указанные в Ваших примерах? [4]
  5. Сформировали письмо с результатами тестирования для команды WinMerge? :) [5]

  6. В общем я затрудняюсь сейчас ответить на вновь поставленный вопрос. Сил нету… :)
>Знаете, Вы подняли очень важную и ещё неосвященную тему.

Хорошая иллюстрация к тому, что проверка орфографии (как и статический анализ ;)) может давать сбои: слово «освященный» является вполне корректным прилагательным, которое вполне может использоваться в данном предложении (если бы речь шла о совершении религиозного ритуала над данной темой), однако в данном контексте должно было быть использовано прилагательное «освещенный» (то, на что «пролили свет»), а «святость» тут никаким боком :)
Надо перед каждый постом преамбулу типа при подготовке данного материала не пострадала ни одного бага или все собранные во время акции баги перечислены в фонд борьбы с энтропией
Вопрос вполне уместен — у него есть подтекст — человек хочет знать, писать об этих багах разработчикам или уже не нужно. Т.е. все были бы вам благодарны, если вы в каждой статье сообщали какова судьба этих багов — отправлялись ли они разработчикам, есть ли перевод статьи, сам отчёт.
Многие готовы сами написать об этих багах разработчикам
Да ладно, никто не хочет сам писать разработчикам…
Если бы в статье было написано, что мол у нас нет времени писать разработчикам, вот баги решайте сами, я бы написал разработчикам сам.
Сделайте доброе дело — напишите отзыв про использование PVS-Studio. Поможем чем сможем.
1) Сегодня появился перевод статьи и я отправил разработчикам багрепорт: issues.apache.org/bugzilla/show_bug.cgi?id=51542
2) Всё равно другой никто не сделает это за меня. Это только на словах все молодцы, правильные и т.п. Легко, проходя мимо, дать совет, что надо делать мир лучше, помогать открытым проектам и что надо отписать про ошибки. И идти дальше читать Хабр. Хоть бы раз кто взял и отписал баги. Или попросил ключ для PVS-Studio, чтобы проверить сторонний открытый проект и отписать авторам про ошибки. Я пока только одного такого человека знаю, который проверял Tortoise SVN свежей версией PVS-Studio и сообщал им.
1. Благодарю вас за помощь открытым проектам
2. > Хоть бы раз кто взял и отписал баги.
так и спрашивают чтобы знать писать или нет, если вы скажите, что вам религия не позволяет писать баги разработчикам, напишу (только пните, не всегда читаю хабр), хотя понятно что так как вы проанализировать не смогу

> Или попросил ключ для PVS-Studio
это нужно не только ms windows иметь, да ещё и VS, это далеко не у всех есть — у меня не винда, но идея не плохая, подумаю
С Visual Studio Express работает?
Visual Studio Express Edition не поддерживает подключаемые модули расширений. Это сделано специально разработчиками из MS, чтобы был смысл пользоваться платными редакциями Visual Studio.
Тогда мне не доступен ваш продукт, я не использую крякнутый софт и у меня только один, из не сильно удалённых, знакомый пользует VS, но его не интересует анализ свободных проектов, он продался MS.
У VS Professional есть триал-период в N дней (не помню, сколько), который потом можно продлить через сайт. Поставьте в виртуалке и прогоните pvs-studio. Я так и сделал у себя.
Благодарю за подсказку, а то от этих рабов майкрософта доброго слова не дождёшься, только обещают помощь, а на деле только оскорблять умеют
На словах он Лев Толстой… а как дошло до дела — нашлась «уважительная» причина.
Т.е. сначала вы предлагает помощь, а потом оскорбляете, отличный подход к пользователям, при таком подходе коммерческий успех обеспечен.
Хорошо хоть пользоваетель VladX подсказал вариант, так что дорогой мой знаток тюремных стишков — высылай ключ, через пару недель может будет время
А на книжке Донцовой пробовали запускать?
Если проводить аналогию между книгами Донцовой и программами, то пожалуй в таких проектах статический анализ не нужен и даже вреден. Нет никакого смысла анализировать код iPhone приложения, жизненный цикл которого составляет пару месяцев. Народ поскачивал, потыкал и пошел за новой програмулькой. А то что баги, так и так сойдёт. Там никто качеством или поддержкой не заворачивается. Анализ только сделает разработку более дорогой.
Тут надо работать по честному: раз она их пишет на автомате — значит автоматом и проверять
Ждем анализ кода PVS-Studio при помощи PVS-Studio
Тык, это мы каждую ночь делаем. Впрочем, идея интересная. Как накопится интересное, пройдусь по истории и составлю подбородку.
Большое спасибо за посты, а можно узнать, как сделана PVS студия в общих чертах. Какая математическая основа, какую часть работы она делает сама, а какую перекладывает на стандртные компоненты? Например, содержит ли она парсер C++ или кто-то парсит за нее? Если бы вам захотелось сделать ее для дргого языка, какие части остались бы неизменными, а какие поменяли. Сама студия, судя по всему, написана на С++ — а почему не на, каком-нибудб более строгом языке типа ML?

Конечно, если на эти вопросы можно ответить, не выболтав ноухау.
Вначале хотел написать ответ, но понял, что он будет весьма объёмен. Думаю, его вполне можно оформить в виде заметки “PVS-Studio изнутри”. Обещаю написать ёё в обозримом времени и ответить на все прозвучавшие вопросы. Кстати, желающие могут заранее задать других вопросов, на которые я обстоятельно отвечу.
так планируется ли поддержка других языков? например PHP
По-моему очевидно, что не планируется. PVS-Studio сильно завязан на Visual Studio, максимум что можно ожидать, это C#. Вот если бы разработчики сделали stand-alone версию PVS-Studio, было бы круто. Не все используют Visual Studio как основную среду для разработки, а статический анализ нужен всем.
Кстати да, не учёл это. Так что фиг я такую заметку смогу сделать. Если только хватит того, что раньше успело накопиться.
мы по-прежнему предоставляем ключи для разработчиков бесплатных open-source проектов

Я разрабатываю открытый проект (goo.gl/4AGTN), очень интересно попробовать PVS-Studio. На сайте ничего про это не нашёл. Нужно вам на почту писать, или как получить ключ? Заранее извиняюсь, если чего-то недосмотрел/не нашёл.
Ошибки это часть любого кода и даже человека. Совершать ошибки это часть человеческой природы, не нужно бороться с самим фактом ошибочности нашей природы нужно бороться с последствиями ошибок. Не имеет значения сколько ошибок содержится в коде если код работает исправно. Важен результат труда, и если результат труда не содержит ошибок, то лучше не исправлять ошибки в инструменте труда. Наше восприятие ошибки во многом субъективно. То что является ошибкой в одном коде, не будет таковым в другом коде, и то что является правильным в одном случае, может привести к ошибке в другом случае. В оценке ошибок готового продукта важно не качество конкретного участка кода, а его вклад в интегральное значение для системы целиком. И таким критерием должен являться результат работы системы. И рискуя быть обвиненным в ралятивизме я все таки хочу постулировать главное правило поиска ошибок — «работает — не трогай».

Конечно это не отменяет необходимости модульного тестирования на этапе разработки, когда еще система не может быть оценена с токи зрения внешнего наблюдателя, по результатам её работы.
«Работает — не трогай» — спорный постулат, когда мы говорим о программном коде. Подобный подход справедлив, если мы говорим о некой замороженной, никак не развивающейся системе. Однако мир программ не таков. Обновляются операционные системы и как следствие изменяется среда обитания программы. Да и сама программа постепенно модифицируется, собирается новыми компиляторами. И странно считать, что программу не надо исправлять, если она жёстко создает свои временные файлы в «C:\temp». Если раньше, сложно было представить компьютер без диска «C:\», то теперь запросто.
Другим примером может быть неопределённое поведение программы. Прошли разные тесты, всё работает, значит и трогать ничего не надо. А потом мы меняем компилятор, изменяется поведение гадкого кода и мы получаем увлекательные часы в отладчике. В общем, спорно, спорно…
Динамические системы обладают тем свойством, что результат труда и работы системы перестает удовлетворять потребителя. А следовательно можно сказать, что система перестала работать, хотя внутри ничего не поменялось. А значит она стоит того, что бы её трогать. Можно я опять впаду релятивизм? :): — Есть правильные вещи, есть вещи которые были правильными вчера, но являются неправильными сегодня, есть вещи, которые еще не являются, но вскоре станут правильными. А есть вещи которые не были и не будут правильными никогда. Оценить что есть правильно, а что нет, и есть главная головная боль специалиста по тестированию.
Задача специалиста по программированию/тестированию оценить что есть правильно, а что нет. А также то, что со временем станет неправильно! Ну хотя бы попытаться это сделать. Если они это не делают, то их надо уволить. Подход «сейчас работает, а потом видно будет» колоссально убыточен, так как вместо развития продукта придётся заниматься вечными правками. Лучше сразу писать "%windir%" вместо «C:\Windows». Может пример не самый удачный, но смысл, думаю понятен.
Да я вами не спорю. Я философствую. Оценка ошибочности кода вещь зачастую очень субъективная. Когда-то Николас Вирт пытался реализовать систему автоматического доказательства разрешимости алгоритма в паскале. Но это наложило такие огромные ограничения на язык, что все производители компиляторов на базе виртовского паскаля, просто игнорировали эту часть его идеи.

И хотя возможность писать код работоспособность, которого на всех наборах данных будет гарантироваться компилятором вещь безусловно сногсшибательная, но для программистов лучше иметь возможность забить в переменную «C:\Windows» потому что, даже использование "%windir%", не спасет, когда в программе понадобится "/etc/bin" :) Поэтому программирование все еще остается искусством, а тестирование это искусство в квадрате. Потому что оценивать произведения искусства может только тот кто умеет создавать более совершенные произведение искусства. Инструменты помогают или мешают это делать ровно нас только на сколько человек сумел их освоить и извлечь пользу. Компиляторы иногда могут находить логические ошибки, но бывает так что программист намерено сделал такой код, который был воспринят как ошибочный. Тут нужно либо жестко ограничивать программиста в свободе кодирования, либо смириться с тем, что человеческий фактор в программировании будет чрезвычайно огромен.
было бы клево увидеть ошибки у nginx
Оказывается, не один я провожу какие-то параллели между книгой «Война и Мир», статическим анализом и Apache. Надо же, как бывает! Случайно наткнулся вот на этот текст: Hackers bite the (static analysis) dust: Part 2.

Цитата оттуда:

According to Wikipedia, Microsoft Windows source base consists of about 50,000,000 lines of source code. That sounds like a huge number, but what does it actually mean? Consider a huge novel " «War and Peace» comes to mind. Leo Tolstoy's masterpiece depicting 19th century Russia is a mere 1,500 pages " that is about 100,000 lines of text, or my new unit: one WAP («War And Peace»).
That makes Windows source base about 500 WAPs. Imagine reading and intimately understanding five hundred books that rival «War and Peace» in size and complexity. No offense to Tolstoy, but that sounds like a literature-class nightmare.
A smaller application, like the Apache web server, will come in at about 1.5 WAPs. Among popular operating systems, Linux Debian source base takes the top prize at 2,000 WAPs.

Sign up to leave a comment.