Долгое время меня беспокоили статьи в интернете, в которых делалась попытка на основе проверки небольших проектов, судить о пользе использования статических анализаторов кода.
PVS-Studio
Статический анализ кода для C, C++, C# и Java
Сначала показывать
PVS-Studio: отзывы
14 мин
3.1KРешил собрать в одном месте отзывы различных людей, касающиеся нашего статического анализатора кода PVS-Studio. Некоторые отзывы приведены целиком, другие частично. С оригинальными отзывами можно познакомиться, перейдя по соответствующим ссылкам.
0
Хочу свой Луна-Парк с Fortran и Си
4 мин
4.6KДругим названием этой заметки может стать «Почему мне больше не интересно быть российским MVP в номинации Visual C++». Первая ассоциация, которая может возникнуть у читателя, что мне больше не интересен отживший своё язык. Такие ассоциации меня очень огорчают. C++ живее всех живых. К сожалению, в России многие про это не знают и уверены, что весь мир давно программирует только на C#, PHP, Python и иных новомодных языках. Это очень странно, и я чувствую себя в этой пустыне одиноко. Про это и будет моя статья.
+45
Не бойтесь маленького бизнеса
3 мин
2.8K![Маленький бизнес](https://habrastorage.org/getpro/habr/post_images/e6c/4dc/857/e6c4dc8570af9c9a0bbaea148519cf7a.jpg)
В последнее время мне часто стали попадаться статьи, где ставится знак равенства между малым бизнесом и неудачниками. Пример одной из последних подобных статей: "Сергей Белоусов о зомби-стартапах от которых никакого толку, а избавиться жалко". Краткий смысл: если компания живет, но не развивается, то значит это провальный проект и пора переходить к новому. Я не согласен с таким направлением мысли. Не могут все компании расти и быть грандиозно успешными. И в этом нет ничего плохо. Если компания живет, это уже хорошо. Они не зомби, а просто нашедшие свою нишу компании. Малый бизнес это замечательно.
+93
Что общего у статического анализа и поисковиков? Хороший «top»!
5 мин
1.3KРазработчики поисковиков типа Google/Яндекс и разработчики инструментов статического анализа кода решают в каком-то смысле очень похожую задачу. И те, и другие должны предоставить пользователю некоторую выборку с ресурсами, которые «отвечают» желаниям пользователя. Нет, конечно, в идеале разработчики поисковиков хотели бы ограничиться кнопкой «Мне повезет!» (I'm Feeling Lucky). А разработчики инструментов анализа кода хотят выдавать только список реальных ошибок в коде. Но реальность как всегда накладывает ограничения. Хотите узнать, как мы сражаемся с жестокой реальностью при разработке PVS-Studio?
+17
Не зная брода, не лезь в воду. Часть третья
8 мин
12K![Сдвиги](https://habrastorage.org/getpro/habr/post_images/844/f4f/a16/844f4fa161ce2a621da993672f2415f3.png)
Продолжу рассказы о том, как программисты ходят по краю, даже не подозревая об этом. Поговорим об операциях сдвига <<, >>. Принципы работы операторов сдвига очевидны и многие программисты даже не знают, что их использование согласно стандарту Си/Си++ может приводить к неопределенному или к неуточненному поведению (undefined behaviour/unspecified behavior).
+100
Изучение способов привлечения на сайт программного продукта
11 мин
3.9K![](https://habrastorage.org/getpro/habr/post_images/e4b/b98/4a2/e4bb984a217c1048d0195f83f199da1a.jpg)
Аннотация
Эта статья будет интересна тем, кто продвигает свои собственные программные продукты в интернете. Статья исключительно практическая. Она представляет собой отчёт о некоторых действиях, которые мы осуществляли в последнее время для продвижения продукта PVS-Studio. Я расскажу, что работает, что не работает и поделюсь сопутствующими мыслями.
+81
Повторная проверка проекта Notepad++
7 мин
2.3K![PVS-Studio vs Notepad++](https://habrastorage.org/getpro/habr/post_images/6b8/225/84c/6b822584cdd6f5a45c7b7bcc41c57cdd.png)
Прошло более года, как мы проверили Notepad++ с помощью PVS-Studio. Интересно посмотреть, насколько анализатор PVS-Studio стал лучше, и что было исправлено в Notepad++ из прежних ошибок.
+57
Не зная брода, не лезь в воду. Часть вторая
8 мин
10K![Ужасный printf](https://habrastorage.org/getpro/habr/post_images/03d/9f4/f39/03d9f4f39df2cb34ea8bb815cf5cf8bc.png)
В этот раз я хочу поговорить о функции printf. Все наслышаны об уязвимостях в программах, и что функции наподобие printf объявлены вне закона. Но одно дело знать, что лучше не использовать эти функции. А совсем другое — понять почему. В этой статье я опишу две классических уязвимости программ, связанных с printf. Хакером после этого вы не станете, но, возможно, по-новому взгляните на свой код. Вдруг, вы реализуете аналогичные уязвимые функции, даже не подозревая об этом.
СТОП. Подожди читатель, не проходи мимо. Я знаю, что ты увидел слово printf. И уверен, что автор статьи сейчас расскажет банальную историю о том, что функция не контролирует типы передаваемых аргументов. Нет! Статья будет не про это, а именно про уязвимости. Заходи почитать.
+117
Не зная брода, не лезь в воду. Часть первая
3 мин
4K![Не зная брода, не лезь в воду](https://habrastorage.org/getpro/habr/post_images/e5b/5bb/9c6/e5b5bb9c61297ab0942366a34c09358e.jpg)
Захотелось написать несколько небольших заметок о том, как программисты на Си/Си++ играют с огнем, не подозревая об этом. Первая заметка будет про попытки явно вызвать конструктор.
+90
Как уменьшить вероятность ошибки на этапе написания кода. Заметка N4
9 мин
1.7K![PVS-Studio vs Firefox](https://habrastorage.org/getpro/habr/post_images/dae/10d/dd2/dae10ddd2cad34afdb87b27b23fa0c7b.png)
Это уже четвертая заметка, где я хочу поделиться полезными наблюдениями о паттернах ошибок и том, как можно с ними бороться. В этот раз я затрону такую тему, как обработка редких и аварийных ситуаций в программах. Рассматривая множество программ, я пришел к выводу, что код обработки ошибок в Си/Си++ программах — одно из самых ненадежных мест.
К чему приводят такие дефекты? Программа, вместо того, чтобы выдать сообщение «файл X не найден», падает и заставляет пользователя гадать, что он не так делает. Программа для работы с базой данных выводит невразумительное сообщение, вместо того, чтобы сообщить, что неверно заполнено одно из полей. Попробуем сразиться с этой разновидностью ошибок, которые досаждают нашим пользователям.
+44
Путь в мастера программирования Intel
2 мин
13K![PVS-Studio and black belt](https://habrastorage.org/getpro/habr/post_images/4fd/551/7a5/4fd5517a56d5b07d2f47f806619f40c7.png)
Компания Intel проводит множество программ, связанных с обучением, организует конкурсы по программированию, приглашает на встречи и бесплатные конференции. К сожалению, часто это проходит мимо, и человек, случайно потом, узнав про уже завершившееся мероприятие, огорчается, что не принял в нём участие. Кстати, участие в конкурсах Intel часто приводит к тому, что и сам участник потом оказывается в Intel. Уже пару раз сам наблюдал такую картину. На одной встрече человек приехал за призом, а на следующий год — раз, и уже сам с бейджиком «Сотрудник Intel». Так что имейте в виду. :)
Однако, чтобы получить внимание со стороны Intel, необязательно сражаться на олимпиадах, есть и другие интересные и полезные пути. Например, можно стать участником сообщества Intel Software Network (ISN) и автоматически начать участие в конкурсе «Мастер программирования». Именно про эту программу я и хотел немного рассказать.
+37
PVS-Studio: анализируем код Doom 3
6 мин
3.5K![Doom 3 and PVS-Studio](https://habrastorage.org/getpro/habr/post_images/4ce/9a8/02c/4ce9a802c0b99ab92b9b33e577a148cf.jpg)
Компания id Software имеет лицензию на PVS-Studio. Тем не менее, мы решили проверить исходные коды Doom 3, которые недавно были выложены в сеть. Результат — ошибок найдено мало, но всё-таки найдено. Я предполагаю, что это можно объяснить так.
Часть кода Doom3 используется и сейчас и, наверное, там ошибки уже исправлены. Часть кода устарела и не используется. Скорее всего, именно там и найдены подозрительные участки кода.
Для тех, кто интересуется данной тематикой, предлагаю вниманию фрагменты кода, на которые указал анализатор PVS-Studio. Как всегда напоминаю, что рассматриваю только некоторые предупреждения. Другие участки проекта требуют знания структуры программы, и я их не изучал.
+86
Разрушаем мифы о статическом анализе кода
8 мин
4.4KОбщаясь с людьми на форумах, я заметил несколько стойких заблуждений, касающихся методологии статического анализа. Я хочу развеять следующие мифы:
![Разрушаем мифы о статическом анализе](https://habrastorage.org/getpro/habr/post_images/bc1/d86/aa6/bc1d86aa680283756defa1275c8232f9.jpg)
![Разрушаем мифы о статическом анализе](https://habrastorage.org/getpro/habr/post_images/bc1/d86/aa6/bc1d86aa680283756defa1275c8232f9.jpg)
- Статический анализатор это продукт разового применения.
- Профессиональные разработчики не допускают глупых ошибок.
- Динамический анализ лучше чем статический.
- Программисты хотят добавлять свои правила в статический анализатор.
+12
Проверка Intel IPP Samples for Windows — продолжение
7 мин
968![PVS-Studio vs IPP Samples. Continue.](https://habrastorage.org/getpro/habr/post_images/aa2/2c0/21c/aa22c021c9014b14737fbd464504b5ef.gif)
Прогресс не стоит на месте. Развивается и мой любимый статический анализатор кода PVS-Studio. И недавно я понял, что те проекты, которые мы уже проверяли, можно вполне проверять заново. Писать про это новые статьи как-то странно и вряд ли они получатся интересными. Однако одну такую статью я всё-таки думаю надо сделать. Она станет еще одним аргументом в пользу утверждения, что настоящую пользу от статического анализа можно получить только при его регулярном использовании, а не при проверках от случая к случаю. Итак, посмотрим, что же удалось найти нового интересного в проекте Intel IPP Samples.
+29
PVS-Studio: анализируем код операционной системы ReactOS
9 мин
3.9K![PVS-Studio vs ReactOS](https://habrastorage.org/getpro/habr/post_images/06e/005/d1a/06e005d1a29ce0c46fc523d93d5e96e6.png)
Проверив код ReactOS, я смог исполнить сразу три своих желания. Во-первых, давно хотелось написать статью об обыкновенном проекте. Не интересно проверять код таких проектов, как Chromium. Он слишком качественен и, на поддержание этого качества тратятся ресурсы, недоступные в обыкновенных проектах. Во-вторых, появился хороший пример, на котором можно показать, как необходим статический анализ в большом проекте, особенно если он разрабатывается разнородным распределенным коллективом. В-третьих, я получил подтверждение, что PVS-Studio становится всё лучше и полезнее.
+148
PVS-Studio vs Clang
7 мин
3.3K![PVS-Studio vs CLANG](https://habrastorage.org/getpro/habr/post_images/0ad/a37/bde/0ada37bdeebcd31ee97280912f357e14.png)
Мы случайно проверили проект Clang. Думаю, результат будет любопытен ряду разработчиков. Подробности под катом.
+45
Разработчики Intel тоже говнокодят
5 мин
2.7K![PVS-Studio vs IEC SDK](https://habrastorage.org/getpro/habr/post_images/e4f/f39/3c6/e4ff393c6c9c55b00d99c50f7c6784b9.png)
В последнее время, рассказывая о проверке очередного проекта, я всё время повторял, что это очень качественный код и ошибок в нём практически не найдено. Примером может служить анализ таких проектов, как Apache, MySQL, Chromium. Почему мы выбираем такие приложения, я думаю понятно. Про них всех знают и никому не интересно, какие ужасы можно найти в дипломной работе студента Васи. Однако иногда мы поверяем и те проекты, которые просто случайно попали под руку. Некоторые такие проекты оставляют тяжёлые впечатления в моей тонкой и ранимой душе. В этот раз мы проверили Intel® Energy Checker SDK (IEC SDK).
+62
Лев Толстой и статический анализ кода
5 мин
2.9K![PVS-Studio vs Apache HTTP Server](https://habrastorage.org/getpro/habr/post_images/bc4/c2c/225/bc4c2c225ed26e5c8a4b04164d39d5b7.png)
В этот раз с помощью PVS-Studio мы проверили Apache HTTP Server. Как и ожидалось, нашли в нём ошибки. Ошибок мало. Это тоже ожидаемо.
С этой же ситуацией сталкиваются и другие разработчики, испытывая PVS-Studio на своих проектах. К сожалению, первый вывод, который хочется сделать, увидев только несколько ошибок, что такой инструмент ему малополезен. Сейчас я придумал хорошую аналогию, которая поясняет, почему это не так.
+47
+57