Возможно, читатели помнят мою статью под названием «Эффект последней строки». В ней идёт речь о замеченной мной закономерности: ошибка, чаще всего, допускается в последней строке однотипных блоков текста. Теперь я хочу рассказать о новом интересном наблюдении. Оказывается, программисты тяготеют к тому, чтобы допустить ошибку в функциях сравнения двух объектов. Такое утверждение выглядит неправдоподобным, однако, я покажу огромное количество примеров ошибок, которые шокируют читателя. Читайте новое исследование, будет интересно и страшно.
Читать полностью »
Рубрика «Си» - 9
Зло живёт в функциях сравнения
2017-05-19 в 13:44, admin, рубрики: bugs, C, C#, c++, pvs-studio, Блог компании PVS-Studio, зло, код, ошибки в коде, ошибки в программе, Программирование, психология программирования, Си, юнит-тесты2038: остался всего 21 год
2017-05-05 в 8:46, admin, рубрики: 2038, C, c/c++, c++, time_t, Блог компании PVS-Studio, время в программах, Программирование, Разработка под Linux, СиПорой кажется, что на фронте борьбы с проблемой 2038 года наступило относительное затишье. Однако время идет, и тот день, когда 32-битные значения типа time_t больше не смогут корректно отображать даты, наступит уже меньше чем через 21 год. Этот срок может показаться большим, однако сравнительно долгий жизненный цикл многих встраиваемых систем подразумевает, что некоторые из них, будучи введенными в строй в наше время, все еще будут работать, когда наступит критический момент. Арнд Бергманн — один из основных разработчиков, занимающихся этой проблемой. На конференции Linaro Connect 2017 он поделился новостями о текущем положении дел в этой области.
Читать полностью »
Проверяем код динамического анализатора Valgrind с помощью статического анализатора
2017-05-04 в 8:44, admin, рубрики: C, pvs-studio, valgrind, аудит кода, Блог компании PVS-Studio, динамический анализ кода, информационная безопасность, ошибки в коде, Разработка под Linux, Си, статический анализ кода, метки: динамический анализ кодаСразу скажу, что статья пишется вовсе не для того, чтобы показать, что статический анализ работает лучше, чем динамический. Такое утверждение будет неверным, так же, как и обратное. Инструменты статического и динамического анализа дополняют друг друга, а не конкурируют между собой. У тех, и у тех есть сильные и слабые стороны. Некоторые ошибки не могут обнаруживать динамические анализаторы, а некоторые — не могут найти статические. Поэтому, следует отнестись к этой заметке просто, как к очередной демонстрации возможностей PVS-Studio, а не как к сравнению двух методологий.
Читать полностью »
Как используя PVS-Studio можно улучшить Visual C++ 2017 Libraries
2017-05-02 в 12:19, admin, рубрики: bugs, C, c/c++, c++, dev tools, MFC, pvs-studio, visual c++, Visual Studio, visual studio 2017, VS2017, библиотеки, Блог компании PVS-Studio, Компиляторы, ошибки, ошибки в коде, разработка под windows, Си, статический анализ кодаНазвание статьи намекает разработчикам Visual Studio, что они могут получать пользу от использования статического анализатора кода PVS-Studio. В статье приводятся результаты анализа библиотек, входящих в состав недавно выпущенной версии Visual C++ 2017, и даются рекомендации по улучшению и устранению ошибок. Приглашаю читателей узнать, как разработчики Visual C++ Libraries отстреливают ноги: будет интересно и познавательно.
Читать полностью »
Статья о статическом анализе кода для менеджеров, которую не стоит читать программистам
2017-04-14 в 14:18, admin, рубрики: bugs, C, c/c++, C#, c++, devops, pvs-studio, static code analysis, Блог компании PVS-Studio, информационная безопасность, качество кода, ошибки в коде, ошибки в программе, Си, статический анализ кода, управление персоналом, Управление продуктом, управление проектами, управление разработкой
Если вы считаете себя хорошим программистом, ну, скажем так, вы оцениваете свой уровень выше среднего, прошу не читать эту статью. Эта статья предназначена для менеджеров программных проектов. С ними я хочу обсудить хотя и важные, но скучные для программистов вопросы, связанные с методологией статического анализа кода.
Читать полностью »
Почему на то, чтобы найти точное значение постоянной Планка, понадобилось 100 лет?
2017-04-13 в 7:38, admin, рубрики: CODATA, NIST, Wolfram Alpha, wolfram cloud, wolfram language, wolfram mathematica, Алгоритмы, Блог компании Wolfram Research, Борда, визуализация данных, килограмм, математика, открытые данные, постоянная планка, Си, метки: килограмм, постоянная планка, СИ
Перевод поста Майкла Тротта (Michael Trott) "An Exact Value for the Planck Constant: Why Reaching It Took 100 Years".
Код, приведенный в статье, можно скачать здесь.
Выражаю огромную благодарность Полине Сологуб за помощь в переводе и подготовке публикации
Содержание
— Некоторые мысли по случаю Всемирного дня метрологии в 2016 году
— Введение и немного обо мне
— От истоков метрической системы до сегодняшних дней.
— Увеличение числа констант
— Существующая система СИ и проблема килограмма
— Новая СИ
— Секунда
— Моль
— Кельвин
— Ампер
— Кандела
— Почему основных единиц измерения именно 7?
— Путь к изменению определения килограмма
Повествование ведется от имени Жана-Шарля де Борда.
Некоторые мысли по случаю Всемирного дня метрологии в 2016 году
Позвольте мне представиться:
Я человек науки и люблю точность.
Все это время я был где-то рядом.
Я забрал у людей фунт и туаз.
И я был рядом с Людовиком XVI
В минуты его сомнений и боли.
Я чертовски уверен в том, что метрическая рулетка,
Благодаря платиновым стандартам будет установлена раз и навсегда.
Я рад встрече с вами!
Надеюсь, вы угадали, как меня зовут?
Введение и немного обо мне
Если вы еще не догадались, я — Жан-Шарль де Борда: моряк, математик, ученый и член Академии наук. Я родился 4 мая 1733 года в городе Дакс во Франции. Две недели назад я отметил свой двести восемьдесят третий день рождения. А вот и я:
В моем родном городе в честь меня воздвигли памятник. Если вы будете неподалеку, задержитесь, чтобы посмотреть на него. Если вы не знаете, где находится Дакс, вот карта:
Когда я был мальчиком, Франция выглядела примерно так же, как сейчас. У нас было немного меньше территории с восточной стороны, но зато в Северной Америке моей стране принадлежал хороший кусок земли:
Привет всем, не знаю зачем это надо, но может кому пригодится…
Дисклеймер: Я ни в коем случае не являюсь профессиональным Си программистом.
Что нам понадобится:
1. Любой компьютер на Linux, Ubuntu, Centos, MacOS… с доступом к порту 443 или 8443 из интернета.
2. Любой Си компилятор
3. Бибилиотеки openssl, libssl-dev («apt-get install openssl libssl-dev» в терминале, для Ubuntu)
Читать полностью »
Как найти 56 потенциальных уязвимостей в коде FreeBSD за один вечер
2017-04-06 в 8:07, admin, рубрики: bugs, C, cwe, errors, freebsd, open source, pvs-studio, security, Блог компании PVS-Studio, информационная безопасность, ошибки в коде, Программирование, разработка операционных систем, Разработка под Linux, Си, статический анализ кода, уязвимости
Пришло время вновь проверить проект FreeBSD и продемонстрировать, что даже в таких серьезных и качественных проектах анализатор PVS-Studio легко находит ошибки. В этот раз я решил взглянуть на поиск ошибок с точки зрения обнаружения потенциальных уязвимостей. Анализатор PVS-Studio всегда умел выявлять дефекты, которые потенциально можно использовать для атаки. Но мы никогда не акцентировали на этом внимание и описывали ошибки как опечатки, последствия неудачного Copy-Paste и так далее, и не классифицировали их, например, согласно CWE. Сейчас очень популярно говорить и о безопасности, и об уязвимостях, поэтому попробую немного расширить ваше восприятие нашего анализатора. PVS-Studio — это не только поиск багов, но ещё и инструмент, повышающий безопасность кода.
Читать полностью »
Как и почему статические анализаторы борются с ложными срабатываниями
2017-03-20 в 11:23, admin, рубрики: C, c/c++, c++, pvs-studio, Блог компании PVS-Studio, информационная безопасность, ложные срабатывания, с/с++, Си, статический анализ кода, статический анализатор кода, метки: с/с++
В своей предыдущей статье я писал, что мне не нравится подход, при котором статические анализаторы кода оцениваются с помощью синтетических тестов. В статье приводился пример, воспринимаемый анализатором как особый случай, на который сознательно не выдаётся предупреждение. Если честно, я не ожидал такого всплеска комментариев на тему того, что анализатор может очень редко, но не выдать предупреждение на ошибку из-за реализованных в нём механизмов отсечения ложных срабатываний. Борьба с ложными срабатываниями настолько большая составляющая любого статического анализатора, что как-то даже не понятно, что тут собственно обсуждать. Это надо делать и всё. Такие механизмы существуют не только в нашем анализаторе, но и в других анализаторах/компиляторах. Тем не менее, раз этот момент вызвал столь бурное обсуждение, я думаю, стоит уделить ему внимание, поэтому и написал эту поясняющую статью.
Читать полностью »
Дефекты безопасности, которые устранила команда PVS-Studio на этой неделе: выпуск N2
2017-03-17 в 12:59, admin, рубрики: C, c++, clang, freebsd, gcc, pvs-studio, Блог компании PVS-Studio, информационная безопасность, Компиляторы, ошибки в коде, ошибки программистов, Си, статический анализ кода
Мы решили в меру своих сил регулярно искать и устранять потенциальные уязвимости и баги в различных проектах. Можно назвать это помощью open-source проектам. Можно — разновидностью рекламы или тестированием анализатора. Еще вариант — очередной способ привлечения внимания к вопросам качества и надёжности кода. На самом деле, не важно название, просто нам нравится это делать. Назовём это необычным хобби. Давайте посмотрим, что интересного было обнаружено в коде различных проектов на этой неделе. Мы нашли время сделать исправления и предлагаем вам ознакомиться с ними.
Читать полностью »