В методологии статического анализа применяются разные технологии. Одна из них — препроцессирование файлов непосредственно перед их анализом. Препроцессированные файлы создаёт компилятор, запускаемый в специальном режиме работы. К сожалению, этот режим не очень хорошо тестируется, как показывает наш многолетний опыт разработки статического анализатора кода. В этой заметке приведу пример свеженайденного бага в С++ компиляторе от Microsoft.
Читать полностью »
Рубрика «Блог компании PVS-Studio» - 16
Как фрагмент CSS разметки сломал C++ компилятор
2019-03-27 в 6:14, admin, рубрики: C, c++, microsoft, MSVC, visual c++, Visual Studio, Блог компании PVS-Studio, разработка под windowsВред макросов для C++ кода
2019-03-20 в 19:17, admin, рубрики: C, c++, c++11, Блог компании PVS-Studio, качество кода, макросы, ошибки в коде, Программирование, Си, Совершенный кодЯзык C++ открывает обширные возможности для того, чтобы обходиться без макросов. Так давайте попробуем использовать макросы как можно реже!
Сразу оговорюсь, что я не являюсь фанатиком и не призываю отказываться от макросов из идеалистических соображений. Например, когда речь заходит о ручной генерации однотипного кода, я могу признать пользу от макросов и смириться с ними. Например, я спокойно отношусь к макросам в старых программах, написанных с использованием MFC. Нет смысла воевать с чем-то вроде этого:
BEGIN_MESSAGE_MAP(efcDialog, EFCDIALOG_PARENT )
//{{AFX_MSG_MAP(efcDialog)
ON_WM_CREATE()
ON_WM_DESTROY()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
Существуют такие макросы, да и ладно. Они действительно были созданы для упрощения программирования.
Я говорю о других макросах, с помощью которых пытаются избежать реализации полноценной функции или стараются сократить размер функции. Рассмотрим несколько мотивов избегать таких макросов.
Читать полностью »
Топ 10 ошибок в C++ проектах за 2018 год
2019-03-20 в 14:13, admin, рубрики: Amazon Lumberyard, bugs, C, c++, chromium, freeswitch, Godot, NCBI Genome Workbench, open source, perl 5, pvs-studio, security weaknesses, static code analysis, Stellaruim, system shock, Блог компании PVS-Studio, ПрограммированиеВот уже три месяца, как 2018 год позади. Для многих он пролетел почти незаметно, но для нас, разработчиков PVS-Studio, он оказался весьма насыщенным. Мы трудились в поте лица, бесстрашно боролись за продвижение статического анализа в массы и искали новые ошибки в открытых проектах, написанных на языках C, C++, C# и Java. Десять самых интересных из них мы собрали для вас в этой статье!
Top 10 bugs of C++ projects found in 2018
2019-03-20 в 14:10, admin, рубрики: Amazon Lumberyard, bugs, C, c++, chromium, freeswitch, Godot, NCBI Genome Workbench, open source, perl 5, pvs-studio, security weaknesses, static code analysis, Stellaruim, system shock, Блог компании PVS-Studio, ПрограммированиеIt has been three months since 2018 had ended. For many, it has just flew by, but for us, PVS-Studio developers, it was quite an eventful year. We were working up a sweat, fearlessly competing for spreading the word about static analysis and were searching for errors in open source projects, written in C, C++, C#, and Java languages. In this article, we gathered the top 10 most interesting of them right for you!
По следам калькуляторов: SpeedCrunch
2019-03-19 в 5:41, admin, рубрики: C, c++, calculator, open source, pvs-studio, speedcrunch, static code analysis, Блог компании PVS-Studio, ПрограммированиеИсследование кода калькуляторов продолжается! В этом обзоре будет рассмотрен проект SpeedCrunch — второй по популярности среди бесплатных калькуляторов.
Введение
SpeedCrunch — это высокоточный научный калькулятор с быстрым пользовательским интерфейсом, управляемым с клавиатуры. Это бесплатное программное обеспечение с открытым исходным кодом, доступное на Windows, Linux и macOS.
Исходный код размещён на BitBucket. Мне не очень понравилась документация по сборке, которую, на мой взгляд, стоило бы написать подробнее. В требованиях указан «Qt 5.2 or later», хотя понадобилось несколько конкретных пакетов, о которых было непросто узнать из лога CMake. Кстати, сейчас хорошей практикой считается прикладывать Dockerfile к проекту для быстрой настройки нужного окружения разработчика.
Читать полностью »
Проверка FreeRDP с помощью анализатора PVS-Studio
2019-03-18 в 12:42, admin, рубрики: C, c++, FreeRDP, open source, pvs-studio, rdp, static code analysis, Блог компании PVS-Studio
FreeRDP – свободная реализация клиента Remote Desktop Protocol (RDP), протокола, реализующего удаленное управление компьютером, разработанного компанией Microsoft. Проект поддерживает множество платформ, среди которых Windows, Linux, macOS и даже iOS с Android. Этот проект выбран первым в рамках цикла статей, посвященных проверке RDP-клиентов с помощью статического анализатора PVS-Studio.
Читать полностью »
Following in the Footsteps of Calculators: Qalculate
2019-03-14 в 6:02, admin, рубрики: C, c++, calculator, open source, pvs-studio, static analysis, Блог компании PVS-Studio, Программирование
Previously we did code reviews of large mathematical packages, for example, Scilab and Octave, whereby calculators remained aloof as small utilities, in which it is difficult to make errors due to their small codebase. We were wrong that we haven't paid attention to them. The case with posting the source code of the Windows calculator showed that actually everyone was interested in discussing types of errors hiding in it. Moreover, the number of errors there was more than enough to write an article about that. My colleagues and I, we decided to explore the code of a number of popular calculators, and it turned out that the code of the Windows calculator was not that bad (spoiler).
Читать полностью »
По следам калькуляторов: Qalculate
2019-03-14 в 5:54, admin, рубрики: C, c++, open source, pvs-studio, Блог компании PVS-Studio, калькулятор, операционные системы, Программирование, статический анализ кода
Ранее мы делали обзоры кода крупных математических пакетов, например, Scilab и Octave, а калькуляторы оставались в стороне как небольшие утилиты, в которых сложно допустить ошибки из-за их малого объёма кода. Мы ошиблись, не уделив им внимания. Случай с публикацией исходного кода калькулятора Windows показал, что всем интересно пообсуждать, какие ошибки там прячутся, а ошибок там более чем достаточно, чтобы написать про это статью. Мы с коллегами решили исследовать код ряда популярных калькуляторов и оказалось, что код калькулятора Windows был не так уж и плох (спойлер).
Читать полностью »
Counting Bugs in Windows Calculator
2019-03-12 в 9:06, admin, рубрики: C, c++, calculator, open source, pvs-studio, static analysis, Visual Studio, windows, Блог компании PVS-Studio
A few days ago, Microsoft made the source code of their Windows Calculator publicly available. Calculator is an application that has traditionally shipped with every Windows version. A number of Microsoft projects went open-source over the recent years, but this time the news was covered even by non-IT media on the very first day. Well, it's a popular yet tiny program in C++. Despite its size, we still managed to find a number of suspicious fragments in its code using the PVS-Studio static analyzer.
Читать полностью »
Бесплатные варианты лицензирования PVS-Studio
2019-03-11 в 18:22, admin, рубрики: C#, c++, devops, DevSecOps, java, microsoft mvp, mvp, open source, opensourse, programming, pvs-studio, pvs-studio free, SAST, security, static code analysis, static code analyzer, Блог компании PVS-Studio, информационная безопасность, статический анализ кодаСуществует несколько вариантов бесплатного лицензирования статического анализатора кода PVS-Studio, предназначенного для поиска ошибок и потенциальных уязвимостей. Бесплатной лицензией могут воспользоваться открытые проекты, маленькие закрытые проекты, публичные специалисты по безопасности и обладатели статуса Microsoft MVP. В статье кратко рассматривается каждый из этих вариантов.
PVS-Studio — это инструмент для выявления ошибок и потенциальных уязвимостей в исходном коде программ, написанных на языках С, C++, C# и Java. Работает в среде Windows, Linux и macOS.
Читать полностью »