Застосування статичного аналізу до коду Android – ECLIPSE

&nbsp

У Find Bugs є команда меню, перспектива і кілька видів, які допоможуть вам при пошуку помилок Для запуску Find Bugs виберіть відповідну команду в контекстному меню проекту (рис 513)

Рис 513 Запуск Find Bugs

Після запуску Find Bugs можна перейти в перспективу цієї програми (рис 514) У перспективу Find Bugs включені види, що відображають ієрархічний список потенційних проблем, знайдених Find Bugs Проблеми згруповані за типами У вигляді Editor (Редактор) є маркери для позначення проблем Якщо відкрити властивості проблеми, програма виведе її докладний опис, в тому числі пояснить, чому Find Bugs може Давати «хибнопозитивні» увязнення

У даному випадку розглянемо проблему Null check of a value previously dereferenced (Перевірка на нуль посилання, яка була разименована), показану у вікні Bug Explorer (Обозреватель помилок) (рис 5,15)

Перевірка на нуль значення, введеного в поле, яка відбувається після того, як посилання на це значення вже разименована, в синтаксисі Java не забороняється, але така ситуація практично напевно марна або є очевидною помилкою У наступному коді видно, що поле savedState використовується з явним розрахунком на те, що воно ніколи не має дорівнювати нулю, але перевірка на нуль відбувається в ході виконання записи в журнал операцій:

Рис 514 Перспектива Find Bugs

Рис 515 Оглядач помилок у програмі Find Bugs

Насправді перевірка savedState на нуль повинна відбуватися до його використання, так як не вказано, що значення savedState має бути ненульовим Ми змінимо операцію присвоювання, в якій не відбувається перевірка savedState на нуль, на наступну:

Знову запускаємо Find Bugs і переконуємося, що це зміна знімає можливу проблему

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

Джерело: Android Програмування на Java для нового покоління мобільних пристроїв

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*