В арифметическом выражении типы операндов могут быть преобразованы к общему типу. Такие преобразования описаны в стандарте языка — в C# они существенно проще чем в C++. Тем не менее, скорее всего далеко не каждый программист знает обо всех тонкостях.
Читать полностью »
Рубрика «статический анализ кода» - 20
О преобразовании типов в арифметических выражениях в C++ и C#
2016-03-29 в 8:39, admin, рубрики: C#, c++, pvs-studio, static code analysis, Блог компании PVS-Studio, преобразование типов, статический анализ кода, метки: преобразование типовПроверяем исходный код плагина PVS-Studio с помощью PVS-Studio
2016-03-16 в 12:33, admin, рубрики: .net, C#, pvs-studio, static code analysis, Блог компании PVS-Studio, Компиляторы, разработка, статический анализ кода
Один из вечных вопросов, с которыми мы встречаемся, звучит так — «Вы проверяли PVS-Studio с помощью PVS-Studio? Где статья о результатах проверки?». Да, мы регулярно делаем это, поэтому мы никак не могли написать статью об ошибках, которые нашли сами в себе. Ошибки исправляются разработчиками ещё на этапе написания кода, и мы постоянно забываем в этот момент их выписать. Но читателям в этот раз повезло. Из-за недосмотра C# код плагина для Visual Studio не был добавлен в ежедневные ночные проверки, которые мы проводим. И, соответственно, в отличие от ядра анализатора, ошибки в нем не замечались на протяжении всего развития C# PVS-Studio. Как говорится, нет худа без добра, и благодаря этому вы и читаете данную статью.
Читать полностью »
Об одной интересной ошибке в Lucene.Net
2016-03-14 в 12:14, admin, рубрики: .net, C#, lucene.net, open source, pvs-studio, static code analysis, Блог компании PVS-Studio, Программирование, статический анализ кода
Некоторые программисты, когда слышат про статический анализ, говорят о том, что он им не нужен, так как весь их код покрыт юнит-тестами, и этого достаточно, чтобы выловить все ошибки. Мне попалась ошибка, найти которую с помощью юнит-тестов теоретически возможно, но если о ней не знать, то написать такой тест практически нереально.
Свежий взгляд на код Oracle VM VirtualBox
2016-03-10 в 11:10, admin, рубрики: c++, open source, oracle, pvs-studio, virtualbox, Блог компании PVS-Studio, виртуализация, ошибки в программе, Программирование, статический анализ кода Виртуальные машины — важный инструмент в арсенале разработчика программного обеспечения. Мой интерес к коду VirtualBox вызван личным использованием этого продукта для проверки открытых проектов, а также для других разных задач, связанных с использованием нескольких операционных систем. Первая проверка этого проекта состоялась в 2014 году, тогда описание около 50 ошибок едва уместилось в двух статьях. C выходом Windows 10 и VirtualBox 5.0.XX, на мой взгляд, стабильность работы программы заметно ухудшилась. Поэтому я решил проверить проект ещё раз.
Читать полностью »
Ищем ошибки в игровом движке Xenko
2016-03-09 в 13:51, admin, рубрики: .net, C#, dotnet, game development, game engine, open source, paradox, pvs-studio, static code analysis, Xenko, Блог компании PVS-Studio, статический анализ кода
Движков с открытым исходным кодом, написанных на C++, куда больше, чем аналогичных движков, написанных на C#. Но есть исключения. Xenko – один из движков, написанных на C# и имеющих открытый исходный код. О том, что же интересного удалось найти в коде этого движка, будет рассказано в этой статье.
Читать полностью »
Как непродуманные предупреждения компиляторов помогают портить совершенно правильный код
2016-02-18 в 4:03, admin, рубрики: C, c++, Блог компании ABBYY, Компиляторы, переносимость, предупреждения, разработка, статический анализ кода, эвристикаЭто пост о сложностях взаимодействия искусственного и естественного интеллекта. Современные компиляторы имеют довольно развитые средства статического анализа, которые умеют выдавать предупреждения на разные подозрительные конструкции в коде. В теории эти предупреждения должны помочь разработчикам делать меньше ошибок в коде.
На практике далеко не всегда предупреждения компилятора одинаково полезны. Зачастую они не помогают разработчикам, а мешают им и могут провоцировать на исправление совершенно правильного кода, т.е. на нарушение правила «работает — не трогай».
Читать полностью »
PVS-Studio покопался в ядре FreeBSD
2016-02-17 в 16:48, admin, рубрики: C, c++, freebsd, open source, pvs-studio, static code analysis, Блог компании PVS-Studio, Компиляторы, Си, статический анализ кода Около года назад мы смогли проверить ядро Linux. Это была одна из самых обсуждаемых статей о проверке open-source проекта за всё время. Предложения обратить внимание и на FreeBSD тогда активно поступали, но только сейчас появилось достаточно времени, чтобы это сделать.
Читать полностью »
Написание кастомных правил для анализатора кода Kiuwan
2016-02-15 в 13:44, admin, рубрики: kiuwan, анализ кода, Блог компании Softmart, Программирование, разработка, статический анализ кода, Тестирование IT-систем, управление качествомПродолжаем нашу серию заметок по статическому анализатору кода Kiuwan.
Данный класс инструментов исследует текст программ на предмет выявления в них каких-то известных шаблонов уязвимостей, ошибок, неточностей, неэффективных действий и многого другого. Откуда берутся эти шаблоны, мы писали в прошлый раз. Для каждого языка программирования эти шаблоны будут свои в силу понятных отличий в синтаксисе, но будут и общие правила качественного кода, типа избегать использования повторяющихся блоков кода.
Однако, не всегда этих шаблонов и правил хватает для оценки определенных качеств написанной программы. В каждом конкретном случае может понадобиться свой определяющий параметр. Например, нам важно убедиться, нет ли в написанной банковской программе скрытых транзакций копеечек на чей-нибудь счет. Или проверить, что не используются никакие недопустимые внешние библиотеки. В этом случае, нам просто необходимо иметь возможность заставить анализатор проверять не только штатные шаблоны, но и наши дополнительные правила.
Единорог в космосе: проверяем исходный код ‘Space Engineers’
2016-02-12 в 10:05, admin, рубрики: .net, C#, dotnet, game development, open source, pvs-studio, spaceengineers, static code analysis, Блог компании PVS-Studio, статический анализ кодаКак вы уже поняли из заголовка, речь в статье будет идти о подозрительных местах, найденных в исходном коде 'Space Engineers'. Но формат статьи несколько отличается от остальных. Помимо информации о проекте, обзора некоторых найденных подозрительных мест и ошибок, а также способов их исправления, я включил в текст небольшой раздел о правильном сценарии использования статического анализатора. Настоятельно рекомендую ознакомиться с ним, так как многие разработчики не знают или просто не задумываются о том, как правильно использовать инструменты этого класса. В результате инструменты статического анализа используются на порядок менее эффективно, чем могли бы.
Читать полностью »
Проверяем исходный код WPF примеров от компании Infragistics
2016-02-10 в 13:19, admin, рубрики: C#, dependecy properties, infragistics, open source, pvs-studio, static code analysis, wpf, Блог компании PVS-Studio, Компиляторы, статический анализ кода
Мы продолжаем проверять различные C#-проекты с целью демонстрации возможностей статического анализатора кода PVS-Studio. В этой статье мы рассмотрим результаты проверки WPF примеров от компании Infragistics. Сама компания Infragistics является глобальным поставщиком программного обеспечения, основанная в 1989 году. Компания сделала себе имя на разработке компонентов пользовательских интерфейсов для сторонних разработчиков на всех платформах, включая .NET.
Читать полностью »