Содержание
- 2. Статический анализатор кода PVS-Studio Выполняет анализ кода на языках: C, C++, C++/CLI, C++/CX, C# Поддерживаются проекты,
- 3. На начало 2017 года в PVS-Studio реализовано C, C++ диагностик: 349 C# диагностик: 130 Подробная on-line
- 4. Основные возможности Быстрый старт (мониторинг компиляции) Windows утилита: CLMonitoring Linux утилита: pvs-studio-analyzer Прямая интеграция анализатора в
- 5. Почему нужны анализаторы кода? Почему команда PVS-Studio выбрала C, C++ и C#?
- 6. Почему C и C++? Эффективные, но сложные языки, в которых легко допустить ошибку Причём, так дело
- 7. Ошибка в компиляторе Cfront (1985) Pexpr expr::typ(Ptable tbl) { .... Pclass cl; .... cl = (Pclass)
- 8. Прошло 30 лет Ничего не изменилось. Язык C++ всё так же сложен и опасен. Размер кодовой
- 9. Clang (ошибка найдена в октябре 2016) bool PPCDarwinAsmPrinter::doFinalization(Module &M) { .... MachineModuleInfoMachO &MMIMacho = MMI->getObjFileInfo ();
- 10. Почему C#? Быть может с C# ситуация лучше? Некоторые типы ошибок в C# невозможны Поэтому лучше,
- 11. Такие ошибки актуальны и для C# public CommandMetadata(CommandMetadata other) { .... _parameters = new Dictionary (
- 12. Мы можем очень долго демонстрировать подобные примеры Анализатор PVS-Studio легко находит ошибки в известных проектах: Linux
- 13. Диагностические возможности PVS-Studio
- 14. Ошибки при переносе кода на 64-битные платформы Эту ошибку мы нашли с помощью PVS-Studio в проекте
- 15. Адрес локальной переменной возвращается из функции по ссылке Эту ошибку мы нашли с помощью PVS-Studio в
- 16. Арифметическое переполнение, потеря значимости Эту ошибку мы нашли с помощью PVS-Studio в проекте OpenXRay V636 The
- 17. Выход за границу массива Эту ошибку мы нашли с помощью PVS-Studio в проекте Notepad++ V557 Array
- 18. Мёртвый код Эту ошибку мы нашли с помощью PVS-Studio в проекте Unreal Engine 4 V607 Ownerless
- 19. Недостижимый код Эту ошибку мы нашли с помощью PVS-Studio в проекте Linux Kernel V695 Range intersections
- 20. Неинициализированные переменные Эту ошибку мы нашли с помощью PVS-Studio в проекте Mono V3070 Uninitialized variable 'schema'
- 21. Неиспользуемые переменные и аргументы Эту ошибку мы нашли с помощью PVS-Studio в проекте Xenko V3065 Parameter
- 22. Некорректные операции сдвига Эту ошибку мы нашли с помощью PVS-Studio в проекте Bitcoin V629 Consider inspecting
- 23. Неопределенное поведение Эту ошибку мы нашли с помощью PVS-Studio в проекте Network Security Services V567 Undefined
- 24. Неправильная работа с типами Эту ошибку мы нашли с помощью PVS-Studio в проекте VirtualBox V745 A
- 25. Неправильное представление о работе функции/класса Эту ошибку мы нашли с помощью PVS-Studio в проекте Unity3D V3057
- 26. Отсутствие виртуального деструктора Все примеры длинные и их сложно поместить в презентацию. Поверьте, мы ищем такие
- 27. Оформление кода не совпадает с логикой его работы Эту ошибку мы нашли с помощью PVS-Studio в
- 28. Ошибки при работе с исключениями Эту ошибку мы нашли с помощью PVS-Studio в проекте OpenMW V596
- 29. Переполнение буфера Эту ошибку мы нашли с помощью PVS-Studio в проекте FreeBSD V512 A call of
- 30. Проблемы безопасности Эту ошибку мы нашли с помощью PVS-Studio в проекте PostgreSQL V597 The compiler could
- 31. Путаница с приоритетом операций Эту ошибку мы нашли с помощью PVS-Studio в проекте Linux Kernel V502
- 32. Разыменование нулевого указателя / нулевой ссылки Эту ошибку мы нашли с помощью PVS-Studio в проекте LibreOffice
- 33. Ошибки синхронизации Эту ошибку мы нашли с помощью PVS-Studio в проекте Unity3D V3083 Unsafe invocation of
- 34. Целочисленное деление на 0 Эту ошибку мы нашли с помощью PVS-Studio в проекте Inkscape V609 Divide
- 35. Опечатки и Copy-Paste Анализатор PVS-Studio эффективно выявляет опечатки и последствия неудачного Copy-Paste В анализаторе реализовано много
- 36. Опечатки и Copy-Paste (пример N1) Эту ошибку мы нашли с помощью PVS-Studio в проекте Clang V501
- 37. Опечатки и Copy-Paste (пример N2) Эту ошибку мы нашли с помощью PVS-Studio в проекте GCC V501
- 38. Опечатки и Copy-Paste (пример N3) Эту ошибку мы нашли с помощью PVS-Studio в проекте MySQL V525
- 39. Опечатки и Copy-Paste (пример N4) Эту ошибку мы нашли с помощью PVS-Studio в проекте PowerShell V3001
- 40. Опечатки и Copy-Paste (пример N5) Эту ошибку мы нашли с помощью PVS-Studio в проекте Roslyn V3004
- 41. Опечатки и Copy-Paste (пример N6) Эту ошибку мы нашли с помощью PVS-Studio в проекте MonoDevelop V3012
- 42. Мы показали вам малую часть того, что может находить анализатор PVS-Studio Подробная таблица диагностических возможностей: http://www.viva64.com/ru/w/
- 43. Демонстрация возможностей PVS-Studio Для демонстрации возможностей анализатора мы проверяем открытые проекты. На начало 2017 года нами
- 44. Демонстрация возможностей PVS-Studio Благодаря нашей команде и анализатору PVS-Studio, в открытых проектах исправили более 10000 ошибок
- 45. Демонстрация возможностей PVS-Studio В среднем, в одном открытом проекте мы нашли 10700 / 280 = 38
- 46. Демонстрация возможностей PVS-Studio Мы добились колоссальных результатов в устранении ошибок в мире open-source проектов, не ставя
- 47. Правильный сценарий использования Конечно, интересно и полезно запустить анализатор PVS-Studio и найти ошибку, которую до этого
- 48. Правильный сценарий использования Статический анализатор приносит пользу, когда он используется регулярно Два основных варианта: Автоматический анализ
- 49. Кратко о внутреннем устройстве PVS-Studio
- 50. Используемые технологии На примерах было продемонстрировано, что PVS-Studio эффективно выявляет разнообразные типы ошибок Кратко перечислим технологии,
- 51. Используемые технологии Сопоставление с шаблоном (pattern-based analysis) на основе абстрактного синтаксического дерева применяется для поиска мест
- 52. Используемые технологии Вывод типов (type inference) на основе семантической модели программы позволяет анализатору иметь полную информацию
- 53. Используемые технологии Символьное выполнение (symbolic execution) позволяет вычислять значения переменных, которые могут приводить к ошибкам, производить
- 54. Используемые технологии Аннотированние методов (method annotations) предоставляет больше информации об используемых методах, чем может быть получено
- 55. Используемые технологии Для разработки эффективных диагностик наша команда использует большой набор регрессионных тестов Написан специальный инструментарий
- 56. Используемые технологии Тестовая база: C++ Windows (Visual C++): 120 проектов C++ Linux (GCC): ещё 34 проекта
- 57. Использование PVS-Studio
- 58. Думаю, вы уже устали, поэтому минутка юмора Кратко суть статического анализа кода сводится к следующему: Опять
- 59. Использование PVS-Studio: внедрение Бывает непросто начать использовать статический анализ в большом проекте Непонятно, что делать с
- 60. Использование PVS-Studio: подавление ложных срабатываний Различные способы подавить ложные срабатывания в конкретных строках кода Подавление ложных
- 61. Использование PVS-Studio: исключение из анализа Возможность исключить из анализа файлы по имени, папке или маске Интерактивная
- 62. Использование PVS-Studio: автоматический анализ файлов после их перекомпиляции Наиболее эффективно исправить ошибку сразу после того, как
- 63. Использование PVS-Studio: масштабируемость Поддержка многоядерных и многопроцессорных систем с настройкой количества используемых ядер Поддержка IncrediBuild
- 64. Использование PVS-Studio: непрерывная интеграция Запуск из командной строки для проверки всего решения: позволяет интегрировать PVS-Studio в
- 65. Использование PVS-Studio: прочее Удобная online-справка по всем диагностикам, которая доступна и из программы, и на сайте,
- 66. Использование PVS-Studio: Linux С PVS-Studio легко работать в Linux Но, чтобы не гадать с настройками и
- 67. Использование PVS-Studio: быстрый старт Отдельного внимания заслуживает возможность быстро попробовать PVS-Studio на любом проекте Для этого
- 68. Использование PVS-Studio: SonarQube Для импорта результатов анализа в SonarQube мы разработали плагин sonar-pvs-studio-plugin Использование плагина позволяет
- 69. Использование PVS-Studio: SonarQube Подробности изложены в статье «Контролируем качество кода с помощью платформы SonarQube» http://www.viva64.com/ru/b/0452/
- 70. Скачать и попробовать PVS-Studio
- 71. Скачать и попробовать PVS-Studio Можно скачать и попробовать демонстрационную версию Windows: http://www.viva64.com/ru/pvs-studio-download/ Linux: http://www.viva64.com/ru/pvs-studio-download-linux/ Про ограничения
- 72. Клиенты
- 73. Клиенты:
- 74. Клиенты:
- 75. Купить PVS-Studio
- 76. Типы лицензий
- 77. Индивидуальные лицензии Мы позиционируем свой продукт как B2B решение и у нас нет индивидуальных лицензий Почему
- 78. Купить PVS-Studio Для заказа лицензии и получения информации о ценах, пожалуйста, напишите нам: support@viva64.com
- 79. Помимо приобретения лицензии на статический анализатор кода PVS-Studio возможны другие варианты сотрудничества
- 80. Сотрудничество: аудит Выполнение аудита кода и правка ошибок Примеры сотрудничества подобного типа: Как команда PVS-Studio улучшила
- 81. Сотрудничество На базе нашего анализатора мы можем разработать на заказ специализированное решение Мы также готовы обсуждать
- 82. Презентация подходит к концу Спасибо всем, кто добрался сюда
- 83. Полезные ссылки Расскажем о некоторых интересных и полезных материалах, которые можно найти на сайте компании Электронная
- 84. Полезные ссылки Как 10 лет назад начинался проект PVS-Studio: http://www.viva64.com/ru/b/0465/ Контролируем качество кода с помощью платформы
- 86. Скачать презентацию