Я добрался до проекта Miranda NG и проверил его с помощью анализатора кода PVS-Studio. К сожалению, с точки зрения работы с памятью и указателями это самый неаккуратный проект из виданных мной. Хотя я внимательно не анализировал результаты, ошибок столь много, что я решил разбить собранный материал на 2 статьи. Первая статья будет посвящена указателям, а вторая всему остальному. Желаю приятного чтения, и не забудьте взять попкорн.
Читать полностью »
Рубрика «статический анализ кода» - 24
Проект Miranda NG получает приз «дикие указатели» (часть первая)
2014-11-25 в 7:43, admin, рубрики: c++, pvs-studio, Блог компании PVS-Studio, дикие указатели, обзор кода, ошибки в коде, разработка под windows, статический анализ кодаБесплатный CppCat для студентов
2014-11-13 в 13:04, admin, рубрики: c++, c++/cx, c++11, cppcat, pvs-studio, Visual Studio, Блог компании PVS-Studio, инструменты разработчика, Си, статический анализ кода, халява, халява студентам
CppCat – это статический анализатор кода, интегрирующийся в среду Visual Studio 2010-2013. Анализатор предназначен для регулярного использования и позволяет выявить множество ошибок и опечаток в программах на языке Си и Си++. С целью его популяризации мы решили выдавать бесплатные лицензии всем студентам, которые к нам обратятся. Достаточно прислать фотографию студенческого билета или зачётной книжки.
Читать полностью »
Тяп-ляп, проверил библиотеки Visual C++ 2013 (update 3)
2014-10-13 в 10:29, admin, рубрики: c++, pvs-studio, static code analysis, visual c++, Visual Studio, visual studio 2013, vs2013, Блог компании PVS-Studio, ошибки в программе, статический анализ кода Мне предложили проверить библиотеки, входящие в Visual Studio 2013. Ничего особенно примечательного я не нашёл. Только несколько мелких ошибок и недочётов. Интригующую статью из этого не сделаешь, но я всё равно опишу замеченные недостатки. Надеюсь, это сделает библиотеки чуть лучше, и подвигнет авторов провести более тщательную проверку. У меня нет файлов проектов для сборки библиотек. Поэтому я проверял файлы кое-как, и много могло быть пропущено.
Читать полностью »
Единорог заинтересовался KDE
2014-09-29 в 8:03, admin, рубрики: c++, kde4, linux, pvs-studio, Блог компании PVS-Studio, ошибки в программе, Программирование, статический анализ кода
KDE (сокращение от K Desktop Environment) — среда рабочего стола, преимущественно для Linux и других UNIX-подобных систем. Если простым языком, то это та штука, которая отвечает за всё графическое оформление. Среда построена на основе кроссплатформенного инструментария разработки пользовательского интерфейса Qt. Разработкой занимаются несколько сотен программистов со всего мира, преданных идее свободного программного обеспечения. KDE предлагает полный набор приложений пользовательского окружения, который позволяет взаимодействовать с операционной системой в современном графическом интерфейсе. Давайте же посмотрим, что у KDE под капотом.
Читать полностью »
Как участвовать в проекте с открытым исходным кодом и получать деньги?
2014-09-25 в 7:57, admin, рубрики: Git, github, klocwork, open source, pvs-studio, python, valgrind, статический анализ, статический анализ кодаЗдравствуй!
Многие команды разработчиков участвую в конкурсах и акселераторах. Выигрывают призы или получают финансирование.
Что делать, если вы не успели сесть в проходящий поезд?
Есть несколько вариантов. Один из них это начать свой проект и ждать когда он взлетит, при этом тратить время на создание кода и рекламу проекта в конкурсах, акселераторах, переговорах с инвесторами. В случае успеха надо находить специалистов поднимать инфраструктуру. Ряд виртуальных или реальных серверов для сайта, программистов, базы данных, клиентов. В итоге, многие проекты так и не взлетев попадают на GitHub и другие подобные ресурсы.
Читать полностью »
Статический анализ динамически формируемых выражений
2014-09-22 в 14:35, admin, рубрики: .net, IDE, sql, синтаксический анализ, среда разработки, статический анализ кода, текстовые DSLВведение
Часто при разработке сложных программных систем используется более одного языка программирования — даже в рамках одного файла с исходным кодом. В таком случае принято говорить об основном (или исходном) языке и одном или нескольких встроенных языках. Из строковых выражений основного языка динамически формируются программы на отличном от него языке, которые потом интерпретируются специальными, работающими во время исполнения компонентами, такими как базы данных или веб-браузеры. Большинство языков программирования общего назначения могут играть роль как основного, так и встроенного языка. Ниже приведены примеры использования встроенных языков.
Выполнение кода на JavaScript из кода, написанного на Java:
import javax.script.*;
public class InvokeScriptFunction {
public static void main(String[] args) {
ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("JavaScript");
// JavaScript code in a String
String script = "function hello(name) {print('Hello, ' + name);}";
// evaluate script
engine.eval(script);
}
}
Проверяем Oracle VM VirtualBox. Часть 2
2014-09-22 в 13:00, admin, рубрики: c++, pvs-studio, virtualbox, Блог компании PVS-Studio, виртуализация, ошибки в программе, Программирование, статический анализ кода
Виртуальные машины используются для самых разных нужд. Сам я уже не один год использую VirtualBox для тестирования ПО и просто изучения различных дистрибутивов Linux, собственно, после длительного использования, периодически сталкиваясь с неопределённым поведением, я решил воспользоваться своим опытом в проверке open-source проектов и проанализировать исходный код Oracle VM Virtual Box.
В этой статье я продолжу описывать многочисленные подозрительные места, найденные в проекте.
Читать полностью »
Проверяем Oracle VM VirtualBox. Часть 1
2014-09-19 в 9:45, admin, рубрики: c++, pvs-studio, virtualbox, Блог компании PVS-Studio, виртуализация, ошибки в программе, Программирование, статический анализ кода
Виртуальные машины используются для самых разных нужд. Сам я уже не один год использую VirtualBox для тестирования ПО и просто изучения различных дистрибутивов Linux. Собственно, после длительного использования, периодически сталкиваясь с неопределённым поведением, я решил воспользоваться своим опытом в проверке open-source проектов и проанализировать исходный код Oracle VM Virtual Box.
VirtualBox является кроссплатформенным приложением виртуализации. Что это значит? Во-первых, он работает на компьютерах с процессорами Intel или AMD под управлением операционных систем Windows, Mac, Linux и других. Во-вторых, он расширяет возможности вашего компьютера тем, что позволяет работать множеству операционных систем одновременно (внутри виртуальных машин).
Проект оказался настолько богат проблемными местами, что описывая только те места, в которых ошибка более-менее очевидна, мне придётся разбить материал на две статьи.
В комментариях к статьям часто спрашивают: к чему приводит ошибка в runtime'е? В подавляющем большинстве мы не используем проверяемые проекты и, тем более, не отлаживаем их. На написание этой статьи меня сподвигли проблемы при регулярном использовании VirutalBox. Я решил, что буду оставлять оригинальный, но немного сокращённый комментарий, а если его не было, то добавлю комментарий из шапки файла. Пусть каждый попробует узнать свой глюк.
Читать полностью »
Valgrind — это хорошо, но недостаточно
2014-09-10 в 5:18, admin, рубрики: c++, pvs-studio, valgrind, баги, Блог компании PVS-Studio, динамический анализ кода, ошибки в коде, статический анализ кода, тестирование Не так давно мы пытались продемонстрировать пользу от использования статического анализатора PVS-Studio одной из компаний. Ничего дельного из этого не вышло. Но в процессе переписки я подготовил развёрнутый ответ, касающийся методологий статического и динамического анализа. Сейчас я решил оформить этот ответ в виде небольшой статьи. Думаю, текст может показаться интересным читателям, да и просто можно будет использовать эту статью при общении с новыми потенциальными клиентами.
Читать полностью »
Заметка про проверку PHP
2014-09-01 в 11:06, admin, рубрики: php, pvs-studio, Блог компании PVS-Studio, ошибки в программе, Программирование, Си, статический анализ кода
PHP — скриптовый язык программирования общего назначения, интенсивно применяемый для разработки веб-приложений. В настоящее время поддерживается подавляющим большинством хостинг-провайдеров и является одним из лидеров среди языков программирования, применяющихся для создания динамических веб-сайтов.
В случае с компиляторами и интерпретаторами к исходному коду и тестированию, как правило, предъявляются повышенные требования качества и надёжности. Тем не менее, в исходном коде интерпретатора PHP нашлись подозрительные места.
В данной статье будут рассмотрены результаты проверки интерпретатора PHP, полученные с помощью PVS-Studio 5.18.