Инструменты статического анализа кода ушли далеко вперёд. Это вовсе не те "линтеры", которые активно применялись 20 лет тому назад. Однако многие по-прежнему относятся к ним как к очень простым инструментам. Обидно. Обидно как за методологию анализа кода в целом, так и за инструмент PVS-Studio.
Рубрика «статический анализ кода» - 2
Обидно за мнения про статические анализаторы кода
2020-10-12 в 13:30, admin, рубрики: C, c++, pvs-studio, Блог компании PVS-Studio, Программирование, Си, статический анализ кода, статический анализатор кодаКак внедрить статический анализатор кода в legacy проект и не демотивировать команду
2020-06-20 в 14:05, admin, рубрики: devops, DevSecOps, pvs-studio, Блог компании PVS-Studio, информационная безопасность, качество кода, Программирование, Совершенный код, старый код, статический анализ кода, статический анализатор кода, Управление продуктом
Попробовать статический анализатор кода легко. А вот, чтобы внедрить его, особенно в разработку большого старого проекта, потребуется умение. При неправильном подходе анализатор может добавить работы, замедлить разработку и демотивировать команду. Давайте кратко поговорим, как правильно подойти к интеграции статического анализа в процесс разработки и начать его использовать как часть CI/CD.
Читать полностью »
Начало коллекционирования ошибок в функциях копирования
2020-04-04 в 8:37, admin, рубрики: bugs, C, c++, memcpy, static code analysis, баги, Блог компании PVS-Studio, ошибки в коде, Си, статический анализ кода
Уже несколько раз замечал, что программисты допускают ошибки в простых функциях копирования данных. Эта тема потребует в будущем ещё много времени для изучения и подбора материала, чтобы написать основательную статью. Но захотелось поделиться парой примеров, недавно замеченных мною.
Читать полностью »
NoVerify: PHP-линтер, который работает быстро
2020-03-17 в 10:10, admin, рубрики: linter, noverify, open source, php, phprussia, Блог компании Конференции Олега Бунина (Онтико), Программирование, Разработка веб-сайтов, статический анализ кодаДля PHP есть хорошие утилиты статического анализа: PHPStan, Psalm, Phan, Exakat. Линтеры хорошо выполняют свою работу, но очень медленно, потому что почти все написаны на PHP (или Java). Для личного использования или небольшого проекта это нормально, но для сайта с миллионами пользователей — критический фактор. Медленный линтер замедляет CI pipeline и не даёт возможности использовать его в качестве решения, интегрируемого в текстовый редактор или IDE.
Сайт с миллионами пользователей — это ВКонтакте. Разработка и добавление новых функций, тестирование и починка багов, ревью — все это должно проходить быстро, в условиях жестких дедлайнов. Поэтому хороший и быстрый линтер, который сможет проверять кодовую базу на 5 млн строк за 5−10 секунд, незаменимая вещь.
Подходящих линтеров на рынке нет, поэтому Юрий Насретдинов (youROCK) из ВКонтакте написал свой в помощь командам разработки — NoVerify. Это линтер для PHP, который написан на Go. Он работает в 10-30 раз быстрее аналогов, может находить то, о чем не предупредит PhpStorm, легко расширяется и хорошо интегрируется в проекты, в которых раньше не слышали о статическом анализе.
Об этом линтере расскажет Искандер Шарипов. Под катом:как выбирали линтер и предпочли написать свой, почему NoVerify такой быстрый и как устроен изнутри, почему написан на Go, что может находить и как расширяется, на какие компромиссы пришлось пойти ради него и что можно построить на его базе.
Читать полностью »
Ноль, один, два, Фредди заберёт тебя
2020-02-14 в 8:39, admin, рубрики: bugs, C#, c++, code review, coding horror, coding style, dev, java, programming, pvs-studio, SAST, static code analysis, баги, Блог компании PVS-Studio, Программирование, статический анализ кода
Перед вами продолжение серии статей, которую можно озаглавить «ужасы для программистов». В этот раз речь пойдёт о типовом паттерне опечаток, связанном с использованием чисел 0, 1, 2. Неважно, пишите вы на C, C++, C# или Java. Если вы используете константы 0, 1, 2, или если эти числа содержатся в именах переменных, то, скорее всего, Фредди заглянет к вам ночью в гости. Читайте и не говорите потом, что вас не предупреждали.
Читать полностью »
Статическое тестирование безопасности опенсорсными инструментами
2020-02-04 в 8:58, admin, рубрики: bugs, findbugs, java, SAST, security, sonarqube, Блог компании Одноклассники, информационная безопасность, одноклассники, ок.tech, статический анализ кода, Тестирование IT-систем, Тестирование веб-сервисов
Уязвимости в своём коде хочется находить как можно быстрее, а значит нужно автоматизировать этот процесс. Как именно автоматизировать поиск уязвимостей? Существует динамическое тестирование безопасности, существует статическое — и у обоих свои преимущества и недостатки. Сегодня подробно разберёмся со статическим на опыте его применения в Одноклассниках.
По каким принципам можно выбирать инструмент для статического тестирования? С какими сложностями сталкиваешься, когда уже выбрал? Как писать собственные правила анализа, расширяющие стандартную функциональность? Я занималась всеми этими вопросами — и теперь делюсь с Хабром тем, что узнала.
Речь пойдёт о Java, веб-приложениях, SonarQube и Find Security Bugs, но рассказанное применимо также для других языков и технологий.
Использование машинного обучения в статическом анализе исходного кода программ
2020-01-16 в 12:23, admin, рубрики: artificial intelligence, big data, BigData, Clever-Commit, CodeGuru, Commit Assistant, DeepCode, Embold, github, Infer, mashine learning, ml, pvs-studio, SapFix, Sapienz, static code analysis, static code analyzer, Блог компании PVS-Studio, Большие данные, искусственный интеллект, машинное обучение, Программирование, статический анализ кода, статический анализатор
Машинное обучение плотно укоренилось в различных сферах деятельности людей: от распознавания речи до медицинской диагностики. Популярность этого подхода столь велика, что его пытаются использовать везде, где только можно. Некоторые попытки заменить классические подходы нейросетями оканчиваются не столь уж успешно. Давайте взглянем на машинное обучение с точки зрения задач создания эффективных статических анализаторов кода для поиска ошибок и потенциальных уязвимостей.
Читать полностью »
Топ 10 ошибок в проектах C++ за 2019 год
2019-12-19 в 12:53, admin, рубрики: C, c++, pvs-studio, баги, Блог компании PVS-Studio, ошибки, статический анализ, статический анализ кода, топ
Ещё один год стремится к окончанию, поэтому настало время заварить себе кофе и перечитать обзоры ошибок за прошедший год. Конечно, на это уйдёт много времени, поэтому эта статья и была написана. Предлагаю взглянуть на наиболее интересные темные места проектов, которые встретились нам в 2019 году в проектах, написанных на C и C++.
Читать полностью »
Статический анализатор кода PVS-Studio как защита от уязвимостей нулевого дня
2019-11-28 в 7:19, admin, рубрики: 0day, CVE, cwe, DevSecOps, information security, pvs-studio, SAST, static analysis, static code analysis, zero-day, Блог компании PVS-Studio, информационная безопасность, статический анализ кода, уязвимость нулевого дня
Угроза нулевого дня (англ. zero day) – это термин, обозначающий уязвимости, допущенные при разработке, которые еще не были обнаружены. Такие уязвимости могут использоваться злоумышленниками, что в итоге затронет и репутацию компании. Перед разработчиками стоит задача максимально сократить количество дефектов в коде, которые могут стать причиной такой уязвимости. Одним из инструментов, помогающих выявить дефекты безопасности, является статический анализатор кода PVS-Studio для C, C++, C#, Java.
Читать полностью »
Причины внедрить в процесс разработки статический анализатор кода PVS-Studio
2019-11-25 в 8:56, admin, рубрики: ci, devops, DevSecOps, pvs-studio, SAST, Блог компании PVS-Studio, информационная безопасность, Программирование, статический анализ, статический анализ кода, статический анализатор кода, тестирование, тестирование по
PVS-Studio – это инструмент для поиска ошибок и потенциальных уязвимостей в исходном коде программ, написанных на языках C, C++, C# или Java. PVS-Studio относится к классу инструментов статического тестирования защищённости приложений (Static Application Security Testing, SAST). Анализатор ориентирован на практику непрерывной интеграции (CI) и позволяет выявлять ошибки на самых ранних этапах, когда их исправление почти ничего не стоит.
Читать полностью »