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

Читати далі →

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

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

Читати далі →

У світі .NET все чудово — платформа рухається в правильному напрямку, нові технології вдосконалюються і стають на ноги. Останнім часом багато розмов про .NET/ASP.NET Core, і здається, що всі забули про Roslyn, який надає широкі документовані можливості по роботі з кодом як під час рантайма, так і в процесі розробки.


Щоб виправити це, ми взяли інтерв'ю у Filip W, Microsoft MVP, контрибьютора Roslyn і просто одного з найбільш популярних у світі ASP.NET блогерів. Чому Filip вважає, що зміни в новому# можуть пройти непоміченими, навіщо писати власні аналізатори коду, а також чому скриптінг на C# краще, ніж будь скриптовом мовою?

Читати далі →

Передмова
Існує велика кількість статей, присвячених статичних аналізаторів для С/С++/С#, Java і т. д. Що стосується досліджень застосування різних статичних аналізаторів для нативної розробки під MacOS/iOS, то їм приділено значно менше уваги.

Пропонується розбір застосування статичних аналізаторів коду, що використовуються в різних проектах на ObjC та Swift. При цьому, це не огляд, а скоріше деякі нотатки застосування різних інструментів, що дозволяють знаходити помилки того чи іншого роду в коді, починаючи від витоків пам'яті і закінчуючи пошуком вразливостей. Однак дані не претендують на об'єктивність та повноту зроблених висновків, а також на глибину аналізу отриманих результатів по кожному інструменту.

Читати далі →

Портування — справа тонка: перевірка 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 безкоштовно.

Читати далі →

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

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

Читати далі →

Як замкнути змінну в C# і не вистрілити собі в ногу

Ще в далекому 2005 з виходом стандарту C# 2.0 з'явилася можливість передачі змінної в тіло анонімного представника допомогою її захоплення (або замикання, кому як завгодно) з поточного контексту. В 2008 вийшов у світ новий стандарт C# 3.0, принісши нам лямбды, власні анонімні класи, LINQ запити і багато іншого. Зараз на дворі січень 2017 і більшість C# розробників з нетерпінням чекають реліз стандарту C# 7.0, який повинен привнести багато нових корисних «фіч». А ось фиксить старі «фічі», ніхто особливо не поспішає. Тому способів випадково вистрілити собі в ногу, як і раніше, вистачає. Сьогодні ми поговоримо про один з їх, і пов'язаний він з не зовсім очевидним механізмом захоплення змінних в тіло анонімних функцій у мові C#.

<img src=«habrastorage.org/getpro/habr/post_images/433/af9/b4a/433af9b4a44c643067f181b878f3631c.png» alt=«Picture » 1" />


Читати далі →