Одна из проблем, с которой сталкиваются разработчики 64-битных приложений, это переполнение 32-битных переменных в очень длинных циклах. С этой задачей хорошо справляется анализатор кода PVS-Studio (набор диагностик Viva64). На тему переполнения переменных в циклах есть ряд вопросов на сайте StackOverflow.com. Но поскольку мои ответы могут счесть исключительно рекламными, а не как полезную информацию, я решил описать возможности PVS-Studio в статье.
Читать полностью »
Рубрика «Си» - 12
Как обнаружить переполнение 32-битных переменной в длинных циклах в 64-битной программе
2016-03-22 в 6:46, admin, рубрики: 64-бита, c/c++, c++, pvs-studio, stackoverflow.com, x64, Блог компании PVS-Studio, поиск ошибок, руководство, СиИспользование библиотеки OpenSSL в проектах на C++
2016-02-25 в 12:19, admin, рубрики: C, c++, openssl, rsa, ассиметричное, закрытый, ключ, криптография, открытый, Программирование, Си, шифрование
В своем первом топике я постараюсь подробно объяснить как начать использовать библиотеку OpenSSL. Сразу хочу отметить, что статья ориентирована на новичков, а так как я сам один из них, исходный код выполнен без проверок и не претендует на звание лучшего. Все действия выполнялись под Windows со средой разработки Visual Studio 2013.
Читать полностью »
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 тогда активно поступали, но только сейчас появилось достаточно времени, чтобы это сделать.
Читать полностью »
Undefined behavior ближе, чем вы думаете
2016-02-05 в 11:06, admin, рубрики: 64-бита, 64bit, C, c++, pvs-studio, undefined behavior, x64, Блог компании PVS-Studio, неопределённое поведение, Си, метки: undefined behavior, неопределённое поведениеМногие считают, что неопределённое поведение программы возникает из-за грубых ошибок (например, запись за границы массива) или на неадекватных конструкциях (например, i = i++ + ++i). Поэтому для многих является неожиданностью, когда неопределенное поведение вдруг проявляет себя во вполне привычном и ничем не настораживающем коде. Рассмотрим один из таких примеров. Программируя на C/C++ никогда нельзя терять бдительность. Ад ближе чем кажется.
Примечания к статье «Как писать на С в 2016 году»
2016-01-25 в 8:40, admin, рубрики: C, codeguide, codestyle, кодегайд, мнение, обсуждение, ответ, Программирование, Си, советы
На самом деле так выглядел бы Ассемблер, если бы он был оружием, но с C тоже надо быть предельно аккуратным
От переводчика:
Данная публикация является переводом статьи-ответа на текст «How to C in 2016». Перевод последнего был опубликован мной в пятницу и вызвал, местами, неоднозначную реакцию сообщества. Наводку на данный «ответ», для поддержания обсуждения вопроса уже в рамках Хабра, дал пользователь CodeRush, за что ему отдельное спасибо.
Ранее в сети была опубликована статья «Программирование на С в 2016 году» с множеством полезных советов, среди которых, увы, были и не очень удачные идеи. Именно поэтому я решил прокомментировать соответствующие моменты. Пока я готовил новый материал, кто-то заметил, что за работу на C должны браться только ответственные программисты, в то время как безответственным хватит и других языков, в рамках которых имеется больше возможностей для совершенствования имеющихся навыков. Давайте разбираться в секретах специалистов своего дела.
Читать полностью »
Советы о том, как писать на С в 2016 году
2016-01-22 в 10:16, admin, рубрики: C, codeguide, codestyle, Блог компании Inoventica Services, кодегайд, мнение, Программирование, Си, советы
Если бы язык С был оружием
От автора: Наброски для этой статьи появились еще в начале 2015 года, правда, до публикации материалов дело так и не дошло. Наконец, решив, что в ящике моего письменного стола от вышеупомянутого «черновика» не будет никакой пользы, представляю его вашему вниманию в исходном виде. Единственное, что изменилось в тексте – год, с 2015 на 2016.
И я всегда рад услышать комментарии по поводу необходимых исправлений, уточнений или даже ваши жалобы.
Итак, статья ...
Первое правило программирования на С – не используйте его, если можно обойтись другими инструментами.
Когда найти альтернативный метод не удается, самое время вспомнить о современных заповедях программиста.
Читать полностью »
PVS-Studio: новый триальный режим
2015-04-09 в 12:56, admin, рубрики: C, c/c++, c++, pvs-studio, static code analysis, Блог компании PVS-Studio, демо-версия, Си, статический анализ кода, статический анализатор кода
Мы временами экспериментируем с триальным режимом, чтобы знакомство с анализатором PVS-Studio проходило как можно эффективней. Сейчас мы вновь поменяли формат триальной версии. Эта заметка должна ответить на все вопросы, которое могут возникнуть у разработчиков, пожелавших познакомиться с нашим инструментом. Фактически эта статья является ответом на вопрос «можно ли попробовать демонстрационную версию и какие в ней ограничения?».
Читать полностью »
Баги. Баги никогда не меняются
2015-04-08 в 14:03, admin, рубрики: C, c++, open source, pvs-studio, Блог компании PVS-Studio, открытое программное обеспечение, Си, статический анализ кода, статьи
Вы открыли статью, на которую вы должны дать ссылку в Twitter. Или разместить в любимой программисткой группе. Это принесёт пользу и нам, и открытым проектам. Чтобы программисты всего мира узнали о PVS-Studio, мы проверяем открытые проекты и делаем их лучше. А заодно пишем интересные и полезные статьи. Чем больше люди будут узнавать про наши статьи, тем приятнее нам будет это делать и тем больше проектов мы будем проверять. Совместный profit.
Читать полностью »
Статический анализ кода
2015-04-03 в 11:54, admin, рубрики: C, c++, Блог компании PVS-Studio, джон кармак, качество кода, ошибки в программе, Программирование, разработка игр, разработка программного обеспечения, Си, Совершенный код, статический анализ кода
Примечание от переводчика. Изначально эта статья была опубликована на сайте AltDevBlogADay. Но сайт, к сожалению, прекратил своё существование. Более года эта статья оставалась недоступна читателям. Мы обратились к Джону Кармаку, и он сказал, что не против, чтобы мы разместили эту статью на нашем сайте. Что мы с удовольствием и сделали. С оригиналом статьи можно познакомится, воспользовавшись Wayback Machine — Internet Archive: Static Code Analysis.
Поскольку все статьи на нашем сайте представлены на русском и английском языке, то мы выполнили перевод статьи Static Code Analysis на русский язык. А заодно решили опубликовать её на Хабре. Здесь уже публиковался пересказ этой статьи. Но уверен, многим будет интересно прочитать именно перевод.
Самым главным своим достижением в качестве программиста за последние годы я считаю знакомство с методикой статического анализа кода и ее активное применение. Дело даже не столько в сотнях серьезных багов, не допущенных в код благодаря ей, сколько в перемене, вызванной этим опытом в моем программистском мировоззрении в отношении вопросов надежности и качества программного обеспечения.
Читать полностью »
Авто-регистрация тестов на С средствами языка
2015-03-10 в 8:10, admin, рубрики: C, tdd, unit-testing, ненормальное программирование, Си, Тестирование IT-систем, юнит-тестированиеСравнительно недавно была статья «Полуавтоматическая регистрация юнит-тестов на чистом С», в которой автор продемонстрировал решение задачи с использованием счётчиков из Boost. Следуя этому же принципу, была предпринята (успешная) попытка повторить данный опыт уже без использования Boost из соображения нелогичности наличия в проекте на C зависимости от Boost, да ещё и в таком небольшом объёме. При этом в тестах присутствовали вспомогательные директивы препроцессора в большом количестве. И всё бы так и осталось, но практически на завершающей стадии был найден альтернативный способ регистрации, который позволяет полностью избавится от дополнительных действий. Это C89-решение для регистрации тестов и чуть более требовательное к системе сборке решение для регистрации наборов тестов.Читать полностью »