Если кто ещё не обновил свой SDK — поспешите это сделать. В 16-ой версии, помимо обновлённого ADT, имеется также обновлённый пакет инструментов, в который входит новая утилита под названием Android Lint.
Android Lint ищет потенциальные баги, то есть такие места в коде, которые в будущем могут привести к неприятностям. Утилита платформо-независима, поэтому может использоваться в той IDE, в которую вы её встроите (в Eclipse разработчики из Google её уже встроили), а также в консоли и с любыми средствами сборки, в которые её сможете интегрировать.
Небольшой перечень багов, которые ищет утилита:
-
Проблемы производительности, связанные с разметкой интерфейса (Нагороженные как ни попадя layout’ы, для чего используется дополнительная утилита layoutopt).
-
Неиспользуемые ресурсы
-
Несоответствия размеров массивов (когда массивы определены во множественных конфигурациях).
-
Проблемы доступности и интернационализации («магические» строки, отсутствие атрибута contentDescription и т.д)
-
Проблемы с иконками (несоответствия размеров, нарушение DRY)
-
Проблемы удобства использования (Например, не указан способ ввода для текстового поля)
-
Ошибки в манифесте
И другие. На странице утилиты подробно описаны все ее возможности.
Как уже говорилось, использовать утилиту можно из командной строки. Кому это интересно, прошу обратиться к оригиналу
Я же, являясь пользователем Eclipse, лучше расскажу о том, насколько удобнее пользоваться данной утилитой, когда она встроена в IDE.
Lint, встроенный в Eclipse, обладает некоторым преимуществами по сравнению с консольным вариантом. А именно:
-
Автоматическое исправление некоторых предупреждений
-
Lint запускается автоматически после некоторых операций редактирования ресурсов или кода
-
Способность исправлять налету некоторые ошибки, насколько это позволяет сама ошибка
-
Быстрый переход из области обзора ошибок, при полноценном анализе, к строке, породившей баг.
Lint запускается автоматически, когда вы:
1 Экспортируете проект. В этом случае утилита запускается в специальном режиме, отлавливая только самые суровые ошибки
2 Когда вы редактируете и сохраняете XML-файл
3 Когда вы пользуетесь визуальным средством создания интерфейса (А есть такие?)
Чтобы запустить полноценный анализ, выберите проект в дереве проектов и нажмите на иконку утилиты.
Или щёлкните по проекту правой кнопкой мыши там же и в подменю Android Tools выберите Run Lint.
Утилита начнёт анализ, и сразу же появится область для вывода данных работы утилиты, которая состоит из меню действий и таблицы ошибок. Таблица имеет следующие столбцы: Сообщение — описание бага; Файл — имя файла, в котором найден баг и номер строки. Перейти к багу можно по двойному клику по ошибке.
Меню действий предлагает следующие действия:
-
Обновление списка ошибок, т. е. повторный анализ
-
Автоматическое исправление (например, при отсутствии атрибута contentDescription утилита добавит его со значением «TODO» )
-
Игнорировать ошибку (если вы уверены, что всё хорошо)
-
Удалить ошибку
-
Удалить все ошибки
Вы также можете поправить ошибку с помощью «быстрого исправления». Как он вызывается для участка кода, все знают, да (Ctrl — 1 by default или кто как настроит)
В меню быстрого исправления имеется возможность игнорировать выбранный баг, но в пределах проекта или игнорировать баг на определённое время. Выбранные вами действия сохраняются в файле lint.xml, который создаётся в корне проекта.
Настроить утилиту можно в меню Android > Lint Options. Но помните, что эти настройки будут общими для всех проектов.
Известные на данный момент (16-ый выпуск) ошибки утилиты:
1 Неиспользуемые ресурсы: утилита может отмечать некоторые ресурсы как неиспользуемые, хотя они таковыми не являются.
2 Детектор превышений: Как и детектор неиспользуемых ресурсов, он требует анализа Java-кода, что на данный момент не может быть выполнено при помощи синтаксического дерева Java (и в отличие от неиспользуемого детектора ресурсов, он также адекватен при использовании с Eclipse)
ЗЫ: Проверил свои проекты данной утилитой. На первом и втором проекте предупреждений подсыпала, а вот третий проект — только неиспользуемые ресурсы, что, скорее всего, бага самой утилиты. В общем же, утилита полезная. Для полноценного анализа кода советую плагин PMD для Eclipse. Он сделает ваш код чище!