Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Android
Code

Забезпечення високої якості Android кодом з Статичний аналіз інструменти

by
Difficulty:BeginnerLength:LongLanguages:

Ukrainian (українська мова) translation by Tanya Ira (you can also view the original English article)

 У сьогоднішньому уроці, ми дізнаємося про те, як забезпечити високу якість коду Android в наші проекти, використовуючи деякі інструменти статичного аналізу коду для Java. Ми будемо дивитися на Checkstyle, в FindBugs, PMD, і Android-студія працює—всі вони безкоштовні і з відкритим вихідним кодом!

Які Інструменти Статичного Аналізу Коду?

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

Багато компаній з розробки програмного забезпечення вимагають проекти проходять статичні випробування аналіз коду, в додаток до робити рев'ю коду і модульне тестування в процесі складання.  Навіть розробники проектів з відкритим вихідним кодом часто включають в себе один або більше статичний аналіз коду кроки в процесі побудови. Тому вивчення статичний аналіз є важливим кроком у написанні якісного коду.  Слід пам'ятати, що статичний аналіз—код, відомий як "білого ящика" тестування—не повинна розглядатися в якості заміни для модульного тестування вихідного коду.

 У цьому уроці, ми збираємося, щоб дізнатися про деяких популярних інструментів статичного аналізу, які доступні для Android і Java. Але спочатку, давайте подивимося деякі з переваг використання статичного аналізу.

Переваги

  • Допомагає виявити потенційні помилки, які навіть блок або ручного тестування, можливо, пропустили.
  • Визначаються правилами конкретного проекту. Наприклад, Статичний аналіз, як частина ланцюжка будувати допомагає новачкам отримати до швидкості з нормами Кодексу про їх новій команді.
  • Допоможе вам поліпшити ваші знання нової мови.
  • Сканує ваш весь проект, включаючи файли, які ви б не читали.

Установки 

 Всі інструменти аналізу коду ми будемо вивчати в цьому підручнику доступні як Gradle плагінів, так що ми можемо створювати окремі завдання Gradle для кожного з них. Давайте використовувати один файл Gradle, який буде включати їх усі. Але перед цим, давайте створимо папку, яка буде містити всі наші файли для статичного аналізу коду.

Відкрийте Android Studio і всередині App модуль (у вигляді проекту), створіть нову папку і назвіть її code_quality_tools. Ця папка буде містити файли XML для аналізу коду, а також буде мати файл Gradle, якість.Gradle, якою буде керувати нашою статичні задачі аналізу.

Android studio project structure screenshot

І, нарешті, відвідати свою збірку.Gradle в папці модуля програму і включити цю рядок в кінець файлу:

Ось, наша якість.Gradle в скрипт Gradle застосовується з посиланням на місцеві розташування файлу.

 Checkstyle

 Враховуючи зазначені правила в XML-файл, щоб застосувати стандарт кодування для вашого проекту, Checkstyle застосовує ці правила, аналізуючи вихідний код і порівнює їх з відомими стандартами кодування або конвенцій.

Checkstyle-це інструмент з відкритим вихідним кодом, яка активно підтримується спільнотою. Це означає, що ви можете створювати свої власні користувальницькі перевірки або змінювати існуючі, щоб задовольнити ваші потреби. Наприклад, Checkstyle можете запустити перевірку на імена констант (кінцевий, статичний, або обидва) у ваших класах. Якщо ваші постійні імена не дотримуватися правило у верхньому регістрі, слова розділяються символом підкреслення, проблеми будуть відмічені в підсумковому звіті.

 Інтеграція Checkstyle

Я покажу вам, як інтегрувати Checkstyle в нашій студії проект Android і продемонструвати на практичному прикладі.

 По-перше, нам потрібно створювати свої правила кодування. Всередині checkstyle.xml ми створюємо деякі правила конфігурація Checkstyle, який буде виконуватися наш код.

 У наведеному вище коді, ми включаємо правила або перевіряє, ми хочемо Checkstyle, щоб перевірити наш вихідний код.  Одне правило AvoidStarImport, який, як випливає з назви, перевіряє, якщо ваш вихідний код включений оператор імпорту, як Java.брухт.*. (Замість цього ви повинні явно вказати пакет для імпорту, наприклад, Java.брухт.Наблюдаема.)

 Деякі правила мають властивості, які ми можемо встановити, як ми робили для ParameterNumber—це обмежує кількість параметрів методу або конструктора.  За замовчуванням властивість Макс 7, але ми поміняли його на 6 місці. Погляньте на деякі з інших перевірок на сайті Checkstyle.

 Щоб виконати цю перевірку, нам необхідно створити завдання Gradle. Так що завітайте якістю.файл Gradle і створити завдання checkstyle:

 Зверніть увагу, що в наведеному вище коді, ми вперше застосували Checkstyle плагін Gradle ст. Ми дали їй опис і додав його у вже заздалегідь визначеної групи Gradle в званої перевірки.

 Ключові властивості завдання Checkstyle Gradle в нас цікавить декілька:

  • конфігураційний файл: Checkstyle файл з налаштуваннями.
  • IgnoreFailures: дозволяти чи не дозволяти будувати продовжувати, якщо є попередження.
  • включає: набір включити моделі.
  •  виключити: набір виключають моделей. В даному випадку, ми не скануємо створених класів.

 Нарешті, ви можете запустити скрипт Gradle відвідавши вікні утиліти на Android Gradle в студії, відкриття групи перевірки, а потім натиснувши на checkstyle для виконання завдання.

Gradle toolbar open to run checkstyle task

Інший спосіб полягає у використанні командного рядка:

 Після завершення виконання даної задачі, буде створений звіт, який доступний в App модуль > побудувати > звіти > checkstyle. Ви можете відкрити checkstyle.html щоб переглянути звіт.

Android Studio Checkstyle report folder location

Плагін Checkstyle вільно доступний для Android Studio або IntelliJ ідея. Він пропонує сканування в режимі реального часу Java-файли.

 ПМД

 PMD-це інше відкритим вихідним кодом інструмент аналізу, який аналізує вихідний код. Він знаходить спільні недоліки як невикористані змінні, порожні блоки catch, непотрібне створення об'єкта і так далі.  ПМД має безліч наборів правил, які ви можете вибрати з. Приклад правила, яке є частиною набору правил проектування:

  • SimplifyBooleanExpressions: уникнути непотрібних порівнянь у логічних виразах, які ускладнюють простий код. Приклад:

 ПМД налаштовується за допомогою файлу pmd.xml . Всередині його, ми будемо включати деякі правила конфігурації, такі як ті для Андроїд, неймінг, і дизайн.

 Як ми це робили для Checkstyle, ми також повинні створити завдання ПМД Градля для перевірки повинні бути виконані всередині якості.файл Gradle.

ПМД також доступна у вигляді плагіна Gradle ст.

Ключові властивості завдань, які ми створили, є:

  •  ruleSetFiles: настроюються правила набору файлів, які будуть використовуватися.
  • джерело: джерелом для цієї задачі.
  •  звіти: звіти повинні бути створені в даній задачі.

Нарешті, ви можете запустити скрипт Gradle відвідавши вікні інструменту Gradle, а відкривши папку групи перевірки, а потім натиснувши на ПМД для виконання завдання. Або ви можете запустити його через командний рядок:

Звіт також буде створено після виконання завдання, яка доступна в App модуль > побудувати > звіти > ПМД. Також існує плагін для IntelliJ доступний ПМД або Android Studio для вас, щоб завантажити та інтегрувати, якщо хочеш.

 У FindBugs

 FindBugs-це ще один безкоштовний інструмент статичного аналізу, який аналізує ваш клас шукає потенційних проблем, перевіряючи свій байткод зі списком відомих патерни. Деякі з них:

  •  Клас визначає hashCode (), але не дорівнює(): клас реалізує метод hashCode (), але не дорівнює()—таким чином, у двох випадках може бути рівною, але не мають однакові хеш-коди. Це підпадає під категорію поганою практикою.
  •  Погане порівняння int значення з довгими постійні: код порівнює значення int з довгою константою, яка знаходиться поза діапазону значень, яке може бути представлене як значення типу int.  Це порівняння-безглуздо, і, можливо, принесуть несподіваний результат. Це потрапляє під категорію правильність.
  •  Тесту немає тестів: клас тесту в JUnit, але не реалізували методи випробувань. Цей шаблон теж під категорію правильність.

FindBugs-це проект з відкритим вихідним кодом, так що ви можете переглядати, брати участь чи спостерігати за ходом вихідний код на GitHub.

 У файлі findbugs-exclude.xml ми хочемо запобігти, FindBugs від сканування деяких класів (використовуючи регулярні вирази) в наших проектах, таких як автоматично згенеровані класи ресурсів і автоматично виявлятися класів.  Також, якщо ви використовуєте Кинджал, ми хочемо в FindBugs не для перевірки згенерованих класів Кинджал. Ми можемо також сказати в FindBugs, щоб ігнорувати деякі правила, якщо ми хочемо.

І, нарешті, ми будемо включати завдання FindBugs в якість.Gradle в:

 У першій рядку вище, ми звернулися до FindBugs плагін Gradle і потім створив завдання FindBugs. Ключові властивості задачі в FindBugs ми дуже хвилюють:

  •  класи: класи повинні бути проаналізовані.
  • зусилля: аналіз рівня зусиль. Вказане значення повинно бути однією з хв, за замовчуванням, або Макс. Слід пам'ятати, що більш високі рівні підвищення точності і знайти більше помилок у вартості часу виконання і споживання пам'яті.
  •  reportLevel: пріоритет поріг для повідомлень про помилки. Якщо встановлений низький, повідомили всі помилки. Якщо встановлений середній (за замовчуванням), повідомив, середнім і високим пріоритетом помилок. Якщо встановлено високий рівень, повідомляється тільки помилок з високим пріоритетом.
  • команду excludefilter: ім'я фільтр, який визначає жучки виключити з повідомляється, що ми вже створили.

Потім ви можете запустити скрипт Gradle, відвідавши вікні інструменту Gradle, а відкривши папку групи перевірки, а потім натиснувши на FindBugs, не для виконання завдання. Або запустити її з командного рядка:

 Звіт також буде згенеровано, коли завдання завершить виконання. Це буде доступний в App модуль > побудувати > звіти > FindBugs. Плагін FindBugs-це ще вільно плагін доступний для скачування і інтеграція з IntelliJ ідея або Android студія.

Лінт Андроїд

 Лінт-це ще один інструмент аналізу коду, але це приходить з Android Studio за замовчуванням. Він перевіряє вихідні файли проекту для Android потенційних помилок і оптимізації за правильність, безпека, продуктивність, зручність використання, доступність, інтернаціоналізація.

 Щоб налаштувати Лінт, ви повинні включити lintOptions {} блок в модулі побудови рівня.файл Gradle:

 Ключові параметри Лінт нас цікавить, є:

  •  abortOnError: то ворсинки повинні встановити код виходу з процесу, якщо знайшли помилки.
  • тихий: чи можна вимкнути аналіз доповідей про хід роботи.
  • lintConfig: за замовчуванням конфігураційний файл.

 Ваш lint.xml файл може включати в себе питання, які ви хочете Лінт ігнорувати або змінювати, як у прикладі нижче:

 Ви можете запустити Лінт вручну з Android Studio, натиснувши в меню "аналіз" вибираємо код перевірити... (обсягу контролю є весь проект), а потім натиснувши на кнопку ОК, щоб продовжити.

Android studio inspect code menu
Android Studio lint inspect whole project code dialog

 Ви також можете запустити Лінт, відвідавши вікні інструменту Gradle, а відкриття групи перевірки, а потім натиснувши на Линт. Нарешті, ви можете запустити його через командний рядок.

На Windows:

На Linux або Mac:

 Звіт також буде згенеровано, коли завдання завершить виконання, яка доступна в App модуль > побудувати > виходи > lint-results.html.

Бонус: StrictMode

 StrictMode є розробником інструмент, який допомагає запобігти розробники проекту роблять всі випадкові спалахи введення/виводу або мережевого вводу-виводу в основному потоці, тому що це може призвести до того, що додаток було мляво і не відповідає. Це також допомагає в запобіганні АНР (додаток не відповідає) діалоги з з'являтися.  З питаннями StrictMode виправлена, програми стануть більш чуйними і користувач буде насолоджуватися гладкою досвід. StrictMode використовує два набору політик для забезпечення дотримання своїх правил:

  •  Політика ВМ: захищає від поганою практикою програмування, наприклад, не закриваючи об'єкти SQLiteCursor або будь закриваються об'єкт, який був створений.
  •  Різьба політики: виходить для таких операцій, як спалах введення-виведення і введення-виведення виконуються на потік основного додатка, а не у фоновому потоці.

 Наведений вище код може бути або в додатку, Активність, або інший компонент програми onCreate() метод.

Ви можете дізнатися більше про StrictMode тут на Envato Tuts+, в.

 Зразок проекту Android реалізує все вищеперелічене, включаючи набори правил з інструментів для типового проекту Android можна знайти в даному пості GitHub РЕПО.

Висновок

 У цьому уроці ви дізналися про те, як забезпечити високу якість Android код, використовуючи засоби статичного аналізу коду: що вони собою представляють, переваги їх використання, як використовувати Checkstyle, FindBugs, не, Лінту, ПМД і StrictMode в додатку. Йти вперед і дати ці кошти спробувати—ви можете виявити деякі проблеми в коді, які ви ніколи не очікували.

 У той же час, перевірити деякі з наших інших курсів та підручники з розробки додатків Android!

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.