Чому я не люблю синтетичні тести

Why I Dislike Synthetic Tests
Мені не подобається, коли хтось намагається використовувати створені вручну приклади коду для оцінки можливостей статичного аналізатора коду. Зараз на конкретному прикладі я покажу, чому негативно ставлюся до синтетичних тестів.

Не так давно Bill Torpey написав у своєму блозі замітку "Even Mo' Static", де розповів, як, на його погляд, показали себе інструменти Cppcheck і PVS-Studio при аналізі проекту itc-benchmarks. Проект itc-benchmarks — це static analysis benchmarks from Toyota ITC.

Мені не сподобалося, що після прочитання статті створюється враження, що аналізатори Cppcheck і PVS-Studio приблизно рівні у своїх можливостях. Зі статті випливає, що один аналізатор показує себе краще в одному, другий-в іншому, але в цілому їх діагностичні можливості схожі.

Я думаю, що це не так. Моя думка — наш аналізатор PVS-Studio в кілька разів могутніше, ніж Cppcheck. І взагалі, це не «думка», я знаю це!

Читати далі →

Установка OpenCV в Windows для чайників та підключення бібліотеки Code Blocks

image
Дана стаття буде корисна чайникам новачкам у програмуванні, які хочуть почати вивчати технічне зір за допомогою бібліотеки OpenCV з повного нуля. Якщо Ви користувач Windows і не знаєте, що таке «командний рядок», або що означає «прилинковать бібліотеку», і при цьому Ви мрієте глибше вивчити роботу OpenCV та програмування «під залізо», перейти на багатоплатформовий, піти по шляху тру фахівця, то Вам сюди. У статті будуть наведені докладні інструкції з картинками, так що не зрозуміти, що до чого, буде просто неможливо!

Читати далі →

Як PVS-Studio шукає помилки: методики і технології

Що всередині у PVS-StudioPVS-Studio — статичний аналізатор вихідного коду для пошуку помилок і вразливостей в програмах на мові C, C++ і C#. У цій статті я хочу дати огляд технологій, які ми використовуємо в аналізаторі PVS-Studio для виявлення помилок в коді програм. Крім загальної теоретичної інформації я буду на практичних прикладах показувати, як та чи інша технологія дозволяє виявляти помилки.

Введення
Приводом для написання статті стало мій виступ з доповіддю на відкритій конференції ІСП РАН 2016 (ISPRAS OPEN 2016), що проходила в перших числах грудня в Головній будівлі Російської академії наук. Тема доповіді: «Принципи роботи статичного аналізатора коду PVS-Studio» (презентація у форматі pptx).

На жаль, час виступу було сильно обмежено, тому мені довелося підготувати досить коротку презентацію і не розповісти в доповіді багато чого з того, що хотілося. Тому я вирішив написати цю статтю, де більш детально розповім про те, які підходи і алгоритми ми використовуємо при розробці проекту PVS-Studio.

Читати далі →

Як використовувати PVS-Studio безкоштовно

PVS-Studio FreeМи хочемо допомогти світу програмного забезпечення краще познайомитися з інструментами статичного аналізу коду та підвищити якість програмного забезпечення. Ми надаємо можливість безкоштовного використання аналізатора PVS-Studio студентам у навчальних цілях, індивідуальним розробникам і колективам ентузіастів.

Введення
Клієнтами аналізатора PVS-Studio є відділи розробників різних компаній. Ми б хотіли, щоб нашими клієнтами були й індивідуальні розробники. На жаль, у нас нічого не вийшло з експериментальним продуктом CppCat. Ми не знаємо, як побудувати успішний бізнес у сфері статичного аналізу коду, продаючи персональні ліцензії. Тому зараз продукт PVS-Studio позиціонується виключно як B2B рішення.

Думаю, що наш провал з CppCat був визначений. Світ диктує свої закони, і, наприклад, той же Coverity орієнтований на корпоративні ліцензії. Однак, це не означає, що потрібно виключати інші варіанти взаємодії зі світом.

Ми довго думали, як допомогти маленьким командам розробників або як поширювати академічні ліцензії. На перший погляд здається, що найпростіший шлях — дарувати ліцензії тим, хто розвиває безкоштовне програмне забезпечення. На жаль, це рішення не здається нам правильним.

Варто пояснити нашу позицію. Втім, якщо вам не терпиться, ви можете відразу перейти до розділу «Безкоштовна ліцензія PVS-Studio». Якщо ж читачеві цікаво дізнатися подробиці, то пропоную продовжити читання.

Читати далі →

PVS-Studio для Linux

PVS-Studio for LinuxЗдійснилося! Сьогодні ми випустили публічну версію аналізатора PVS-Studio для Linux. Тепер розробники Linux додатків отримають нову могутню зброю для боротьби з багами в коді. Закликаємо рознести цю новину по світу. Розкажіть своїм колегам по роботі, напишіть в Twitter і Facebook! Та програми будуть надійніше і стабільніше!

Читати далі →

GDB виявився міцним горішком

GDBGDB — інструмент, без якого важко обійтися. Звичайно, як говорить Брукс «Якість розробки програмного продукту досягається завдяки правильному проектування, а не нескінченного тестування». Однак правильне проектування не захищає від логічних помилок, друкарських помилок, нульових покажчиків і так далі. І ось тут нам і допомагають інструменти налагодження коду, такі як GDB. Моя мета показати, що не менш корисними інструментами є статичні аналізатори коду, що виявляють багато помилок на ранніх етапах. Набагато краще, якщо помилка буде виправлена в коді, ще до етапу тестування і налагодження. Для демонстрації користі від статичного аналізу коду, пошукаємо всередині GDB помилки з допомогою аналізатора PVS-Studio.

Читати далі →

Знаходимо помилки в коді компілятора GCC з допомогою аналізатора PVS-Studio

GCCЯ регулярно перевіряю різні відкриті проекти, щоб продемонструвати можливості статичного аналізатора коду PVS-Studio (C, C++, C#). Настав час компілятора GCC. Безперечно, GCC — це дуже якісний і відтестовані проект, тому знайти в ньому хоча б кілька помилок вже велике досягнення для будь-якого інструменту. До моєї радості, PVS-Studio впорався з цим завданням. Ніхто не застрахований від помилок і неуважності. Саме тому PVS-Studio може стати вашою додатковою лінією оборони на фронті нескінченної війни з багами.

Читати далі →

Новий рейтинг мов програмування від IEEE Spectrum виявився своєрідною



Щоб привести аргументи в суперечці про те, яку мову програмування популярнішим, учасники дискусії часто посилаються на ті чи інші дослідження. Добре, що останнім часом кількість подібних досліджень зростає — вибирай будь-який.

А що, якщо із зростанням різноманітних індексів, списків і рейтингів посиляться суперечки між самими дослідниками? На що вони будуть посилатися у своїй аргументації?

Журнал IEEE Spectrum представив громадськості плід колективної праці – новий рейтинг мов програмування.

Постійні лідери рейтингу не впали з п'єдесталу, однак без сюрпризів все-таки не обійшлося.
Як пише видання, у дослідників не було можливості подивитися через плече кожного програміста» і побачити, якою мовою він використовує. Тому вони пішли іншим шляхом: досліджували чати, open source співтовариство, а також оголошення про вакансії. Рейтинг також враховує результати пошуку в Google, Twitter, GitHub, StackOverflow, Reddit, Hacker News, CareerBuilder, Dice. Крім того, в рейтингу відображені дані власної цифрової бібліотеки Institute of Electrical and Electronics Engineers (Інститут інженерів електротехніки та електроніки) – Xplore Digital Library.
Читати далі →

PVS-Studio зізнається в любові до Linux

PVS-Studio зізнається в любові до LinuxЦе замітка про кохання. Про кохання статичного аналізатора коду PVS-Studio чудовою відкритої операційної системи Linux. Ця любов молода, зворушлива і ранима. Цієї любові потрібно допомогти зміцнитися. Ви допоможете, якщо заздалегідь запишіться в добровольці для тестування бета-версії PVS-Studio for Linux.

Читати далі →

Історія мови Сі: 100% чистий Сі, без єдиного «плюса»

image

Популярність мови програмування Сі важко переоцінити, особливо згадуючи його колишні заслуги. Напевно, кожен розробник, як мінімум, знає про його існування, і, як максимум, пробував на ньому програмувати. Сі є попередником таких мов, як C++, Objective-C, C#, Java.

Компанія Microsoft для розробки рідної мови до своєї платформі .Net вибрала саме Сі-подібний синтаксис. Більш того, на Сі написано безліч операційних систем.

Звичайно, Сі не ідеальний: творці мови – Кен Томпсон і Деніс Рітчі – довгий час доопрацьовували його. Стандартизація Сі триває досі. Він існує більше 45 років і активно використовується.

З ним часто асоціюють не один, а дві мови програмування — C/C++. Однак нижче мова піде саме про «чистому» Сі.
Читати далі →