Поки у всьому світі обговорюють 89-ту церемонію вручення нагород премії «Оскар» і складають різні рейтинги акторів і їх костюмів, ми вирішили підготувати оглядову статтю в IT-сфері. Мова піде про найбільш цікавих помилках, допущених у проектах з відкритим вихідним кодом в 2016 році. Цей рік був примітний тим, що наш аналізатор PVS-Studio став доступний і в операційних системах, заснованих на Linux. Представлені помилки напевно вже виправлені, і кожен читач може переконатися в серйозності помилок, які допускають розробники.

Читати далі →

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

<img src=«www.viva64.com/media/images/content/b/0481_Media_Portal/image1.png» alt=«Picture » 9"/>

Читати далі →

Для оцінки якості роботи нашого аналізатора, а також з метою популяризації методології статичного аналізу, ми регулярно перевіряємо на наявність помилок проекти з відкритим вихідним кодом і пишемо про це статті. Не став винятком і минулий 2016 рік, який примітний ще й тим, що це був час своєрідного «дорослішання» C# аналізатора. PVS-Studio отримав значну кількість нових C# діагностик, покращений механізм роботи з віртуальними значеннями (symbolic execution) і багато іншого. За результатами проведеної нашою командою роботи, я склав своєрідний хіт-парад найбільш цікавих помилок, виявлених у проектах З# в 2016 році.

Читати далі →

Портування — справа тонка: перевірка Far Manager під Linux

Одним з популярних файлових менеджерів в середовищі Microsoft Windows, Far Manager, прийняв естафету у Norton Commander, створеної ще для DOS. Far Manager дозволяє полегшити роботу з файловою системою (створення, редагування, перегляд, копіювання, переміщення, пошук, видалення файлів), а також розширює стандартний функціонал (робота з мережею, архівами, резервними копіями тощо). Нещодавно була проведена робота по портированию Far Manager на Linux, і на поточний момент була випущена альфа-версія. Команда PVS-Studio не могла обійти стороною цю подію і вирішила перевірити якість адаптованого коду.
<img src=«habrastorage.org/getpro/habr/post_images/653/5ce/b44/6535ceb440001a72c4d871694d28f6c9.png» alt=«Picture » 24" />

Читати далі →

Перевірка open-source сервера World of Warcraft CMaNGOS

У цій статті мені хотілося б поділитися результатами перевірки статичним аналізатором PVS-Studio відкритої реалізації сервера гри World of Warcraft – CMaNGOS.



Введення
C(ontinued)MaNGOS є активно розвиваються відгалуженням старого проекту MaNGOS (Massive Network Game Object Server), покликаного створити вільний альтернативний сервер для гри World of Warcraft. Більша частина розробників MaNGOS продовжує роботу в проекті CMaNGOS.

Як пишуть самі розробники, їх мета – створити відкритий «well written server in C++» для однієї з кращих MMORPG. Постараюся трохи допомогти їм у цьому, і перевірю CMaNGOS за допомогою статичного аналізатора PVS-Studio.

Примітка: Для перевірки використовувався сервер CMaNGOS-Classic доступний репозиторії проекту на github.

Читати далі →

Інкрементальний аналіз в PVS-Studio: тепер і на складальному сервері


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

Читати далі →

PVS-Studio і GitHub-спільнота: початок дружби

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

<img src=«habrastorage.org/getpro/habr/post_images/23f/39d/db6/23f39ddb671a98ba55787cf06da9fb9a.png» alt=«Picture » 1"/>

Отже, все почалося зі статті: Як використовувати PVS-Studio безкоштовно.

Читати далі →

Запропонуй проект для перевірки аналізатором PVS-Studio: тепер і на GitHub

<img src=«habrastorage.org/getpro/habr/post_images/5cf/ad1/812/5cfad18123abcb8f9b110600edc67133.png» alt=«Picture » 5" />
Перевірка проектів з допомогою статичного аналізатора і написання оглядових статей з знайденими в них помилками – завдання не з легких. Майже завжди це робота не однієї людини, а колективу. Велику роль в цьому процесі відіграє вибір проекту. Від нього безпосередньо залежить інтерес читачів до тієї чи іншої статті. У цій замітці я хочу розповісти, як можна запропонувати цікавий проект для аналізу через GitHub.

Читати далі →

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

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. І взагалі, це не «думка», я знаю це!

Читати далі →

Повторна перевірка SharpDevelop: що нового?

Інструмент PVS-Studio постійно вдосконалюється. При цьому найбільш динамічно в даний час розвивається аналізатор C# код: у 2016 році в нього було додано дев'яносто нових діагностичних правил. Ну а найкращим показником якості роботи аналізатора є виявлені ним помилки. Завжди цікаво, а також досить корисно, проводити повторні перевірки великих відкритих проектів, порівнюючи результати. Сьогодні я зупинюся на повторній перевірці проекту SharpDevelop.

Читати далі →