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

Читати далі →


«Справа була ввечері, робити було нічого» — саме так народилася ідея зробити в'ю з можливістю зума, розподіляє юзерів по рангах залежно від кол-ва їх очок. Так як до цього я не мав досвіду у створенні власних вьюшек такого рівня, завдання здалася мені цікавою і досить простий для початківця… але, *ох*, як же я помилявся.

У статті я розповім про те, з якими проблемами довелося зіткнутися як з боку Android SDK, так і з боку задачі (алгоритму кластеризації). Основне завдання статті – не навчити робити так званими «custom view», а показати проблеми, які можуть виникнути при їх створенні. Тема буде цікава тим з вас, хто має мало (або не має зовсім) досвіду в створенні чогось подібного, а також тим, хто хоче зловити лулзім з автора у сто перший раз повірити в «гнучкість» Android SDK.


Читати далі →

Фиксим дивна поведінка плагін jQuery uploadify (і один баг)

Так вийшло, що я на своїх сайтах використовую плагін uploadify для jQuery — uploadify.com (хоч він вже застарів, флеш і все таке, але HTML5-версія у них вже платна). Плагін надає мультизагрузку файлів, не перевантажуючи сторінку, що нам всім і треба. Однак виявилося, що в цьому плагіні не працює (і/або працює не так, як треба) функція перевірки існування файлів перед відправкою на сервер.

Читати далі →

Історії новорічних про баги

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

Перед вами розповідь про Злісне Ба. Про те, як він неодноразово намагався зіпсувати новорічні свята. Часто йому вдавалося втілити свої підступні задуми, але, на щастя, в кожній Казці «злу» протистоїть теперішній «добро».

<img src=«habrastorage.org/getpro/habr/post_images/11e/d89/744/11ed897448cb5a2c351c5e3e04a06879.png» alt=«Picture » 3" />

Читати далі →

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

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

Читати далі →

Ми знайшли 10000 помилок в різних відкритих проектах

Так, 10000 помилок!З метою популяризації методології статичного аналізу в цілому і аналізатора PVS-Studio зокрема ми регулярно перевіряємо різні відкриті проекти. Знайдені в них баги відмінно демонструють, що ніхто не застрахований від помилок, неуважність та інших помилок. Саме ніхто, і підтвердження тому ми знаходимо в таких проектах, як Microsoft Code Contracts, Qt, ядро Linux, CryEngine, VirtualBox, LibreOffice, Firefox, Boost, Tor і так далі. На даний момент нами перевірено 262 проекту. І ось сталося, ми знайшли і виписали в базу 10000 багів.

Читати далі →

Залишимо пил з глобуса: перевіряємо проект NASA World Wind

PVS-Studio and NASA World WindІноді корисно озирнутися і подивитися, як міг допомогти аналізатор в старих проектах, і яких помилок можна своєчасно уникнути, якщо використовувати аналізатор регулярно. Цього разу вибір припав на проект NASA World Wind, який до 2007 року розроблявся на мові C#.

NASA World Wind — це інтерактивний глобус, який дозволяє побачити будь-яке місце на Землі. Для роботи проект використовує базу публічних знімків з супутника Landsat і проект моделювання рельєфу Shuttle Radar Topography Mission. Перші версії проекту створювалися на мові С#. Пізніше проект продовжив свій розвиток на мові Java. Остання випущена на C# версія — 1.4. Хоча C# версія вже багато років як покинута, це не завадить нам перевірити проект і оцінити якість коду, розробником якого є NASA Ames Research Center.

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


Читати далі →

10 правил гарного тону при описі багів

Привіт, мене звати Наталя, я інженер з тестування компанії Docsvision.
Іноді, коли я переглядаю помилки, записані новенькими (а іноді і старенькими) тестерами, рука машинально тягнеться до лиця. В голові виникає тільки одна думка:



«Що? Що я зараз прочитала?»

В інтернеті багато інформації про те, ЩО обов'язково повинно бути в баг-репорте. А я вирішила поділитися з вами своїми думками про те, ЯК потрібно писати баг-репорт, щоб було зрозуміло, про що ви пишете.
В першу чергу, я писала це для інженерів з тестування та інженерів технічної підтримки, які передають нам баги, надіслані замовниками. Також моя стаття може допомогти сформувати опис виниклої проблеми при зверненні користувача в техпідтримку: коректне опис дозволяє без додаткових запитань швидше обробити інцидент.
Взагалі її може бути корисно почитати всім членам команди розробки, які фіксують своє спілкування в багтрекинговой системі.

Читати далі →

Несподівана поведінка фільтрів виключень в C# 6

Що таке фільтри винятків?
Фільтри винятків (Exception Filters) — нова фіча C# 6, яка дозволяє встановлювати специфічні умови для блоку
catch
. Цей блок буде виконуватися тільки в разі, якщо зазначені умови не виконані. Проілюструємо синтаксис невеликим фрагментом коду:

public void Main()
{
try
{ 
throw new Exception("E2");
}
catch(Exception ex) when(ex.Message == "E1")
{
Console.WriteLine("caught E1");
}
catch(Exception ex) when(ex.Message == "E2")
{
Console.WriteLine("caught E2");
}
}

Читати далі →

Перевірка проекту LibreOffice


Пропонуємо читачеві чергову статтю про перевірку відомого open-source проекту. В цей раз ми перевірили проект LibreOffice, що представляє собою офісний пакет. У його розробці приймає участь більш ніж 480 програмістів. Код виявився дуже якісним і регулярно перевіряється статичним аналізатором Coverity. Але, як і в будь-якому іншому великому проекті, були знайдені нові помилки і недоліки, про які ми і розповімо у статті. Для різноманітності, в цей раз нас будуть супроводжувати не єдинороги, а корови.

Читати далі →