- Using static code analysis tool in Android Studio
- How does linting works?
- Using lint in project
- Using Android Studio
- Using Gradle
- Customizing linting rules.
- Использование Lint в Android Studio для проверки своего кода
- Содержание
- Способы запуска Lint.
- Запуск через меню в Android Studio
- Запуск через командную строку
- Запуск при сборке проекта.
- Настройка gradle сборки
- Настройка правил проверки lint
- Отключение проверки Lint с помощью анотаций в коде
- Выводы
- Обеспечить высокое качество андроид код с инструменты статического анализа
- Какие Инструменты Статического Анализа Кода?
- Преимущества
- Установки
- Checkstyle
- Интеграция Checkstyle
- В FindBugs
- Линт Андроид
- Бонус: StrictMode
- Заключение
Using static code analysis tool in Android Studio
Static analysis (or static code analysis) is an analysis run on the source code, against some set rules, even before the program runs (usually even before the unit tests). This is a kind of debugging that is done without even running the program and this is usually the first step taken towards code-analysis. Since the analysis is run against some set rules, it also helps to maintain coding conventions among dev team. You could definitely do it manually during code-review process, but human errors would creep in and it will not be as effective or efficient. To deal with this, we now have some amazing automated tools like lint, which now comes embedded in Android studio that we can use. In this blog post we are going to make use of such tool and will iterate upon an Android project as a demonstration.
How does linting works?
Linting follows the rules defined in a configuration file like lint.xml . Lint tool then runs those rules against the source code files. See the below image for better understanding.
Using lint in project
There are two ways to do it, using Android Studio and other using terminal and gradle.
Using Android Studio
There are two ways to run the lint tool on your source code. You can just do it from the toolbar Analyze > Inspect Code.. It will then open a dialog where you can specify the scope of the source code on which the lint tool run. Below is an image demonstrating that. After a while, Android studio will present you the results in the Inspection results window as shown in the below image.
Using Gradle
To run lint from Gradle, you can use following commands.
On Windows: gradlew lint
On Linux or Mac: ./gradlew lint
Note that when you run the above commands, gradle by default runs lint on the release build. In order to run it on a different build eg. debug, you need to add the build name as gradlew lintDebug . After the linting is complete, the results are generate in html and xml format.
Note that if you have any lint error, Android studio may not generate the results so you need to ad below lines in your app level gradle file:
Customizing linting rules.
Perhaps your needs or team’s coding convention is different from the default configuration , so you can change settings from gradle files as below:
In the above example, we’ve disable lint check for ContentDescription warning in the entire project. If you don’t want to apply this to the entire project but just to some files, you can use @SupressLint annotation on Kotlin or Java files and tools:ignore on xml files. Checkout the example below:
In case of XML files:
Remember a few minutes ago we said that lint tool makes use of lint.xml configuration file? You can create your own lint.xml file and set rules according to your needs. In the below example, we have created our lint.xml file and set a rule to ignore missing contentDescription warning.
After that, you need to put the reference in the gradle file as:
Note that in the above case, lint rules you specify in the lint.xml applies to the entire module. If you want to specify it for specific path, you can do so as:
So that’s it! Go ahead and use this awesome tool in your next project and make a step towards quality code. For more information, feel free to visit this link Lint
Senior Software Engineer @Joist, Author of Kotlin Programming Cookbook
Services is the Android component which is used to perfor.
If you’ve worked with RxJava/RxKotlin, you might be famil.
Источник
Использование Lint в Android Studio для проверки своего кода
Содержание
На практике в коде очень часто можно встретить очевидные ошибки, спустя какое-то время. Это может происходить из-за невнимательности при написании кода. Что бы свести такие ошибки к минимуму могут помочь статические анализаторы кода. Одним из таких анализаторов является Lint.
Lint — это статический анализатор кода, который сообщает о подозрительных или критических выражениях в коде. По факту это слово стало нарицательным и им называют анализаторы, которые сканируют код на наличие ошибок.
В Android Studio уже есть встроенные анализаторы кода, который дают подсказки “налету”.
Однако подсказки подсвечивают ошибки достаточно ненавязчиво и поэтому их легко пропустить. Но можно запустить проверку несколькими способами.
Способы запуска Lint.
Запуск через меню в Android Studio
Самый простой и удобный способ запуска проверки — это через Android Studio. Для этого в меню необходимо выбрать пункты Analyze -> Inspect Code. В появившемся окне можно ограничить область сканирования кода. Можно проверить весь проект, определённый модуль или отдельный взятый класс. На мой взгляд самый полезных из пунктов — это проверка не закоммиченых файлов. Так же можно выбрать профиль с набором правил для проверки.
После выбора настроек можно начать проверку по нажатию на кнопку Ок. Когда проверка закончиться то появиться окно в котором все ошибки, и предупреждения будут выведены в специальном окне. Все замечания удобно собраны по типам с кратким описание причины и решением проблемы.
Запуск через командную строку
Так же проверку можно запустить через gradle выполнив в консоли команду:
После проверки сформируется отчёт в формате html, который можно посмотреть по следующему пути:
Этот способ менее удобный чем первый, так как отчёт формируется в отрыве от студии и для правки ошибок нужно постоянно переключаться между отчётом и IDE. Зато этот способ прекрасно подходит для случаев если проверку осуществляется на сервере, а в случае обнаружение ошибок, прикреплять файл с отчётом к письму.
Запуск при сборке проекта.
Можно автоматизировать запуск проверки lint, который будет осуществлять при каждой сборке проекта. Для этого необходимо зайти в настройки запуска проекта:
Добавить следующую строку:
Этот способ менее предпочтительный так как значительно замедлит скорость сборки и разработки.
Настройка gradle сборки
Так же lint проверку можно настроить в gradle файле.
- abortOnError: В случае обнаружение ошибки прекращается проверка.
- warningsAsErrors: определяет предупреждения как ошибки.
- lintConfig: путь к файлу проекта с настройками lint.
Если опция abortOnError включена, то при запуске сборки через gradle в случае обнаружении ошибки произойдёт исключение:
Настройка правил проверки lint
Отредактировать правила lint можно в настройках Android studio. Там же можно сделать отдельный конфигурационный профиль и использовать его.
Отключение проверки Lint с помощью анотаций в коде
Иногда бывают исключения, и может сложиться ситуация что необходимо отключить проверку какого-либо правила проверки для класса или метода. В Java коде это делается через аннотацию @SuppressLint(“NewApi”). В качестве параметра принимает строку названия проверки которую нужно исключить. Если нужно исключить все правила, то можно использовать следующую аннотацию:
Так же проверку можно обойти в xml файлах с помощью аттрибута tools:ignore=“NewApi,StringFormatInvalid”.
Выводы
В данной статье мы рассмотрели основные способы запуска проверки кода. Lint очень полезный инструмент для контроля за качеством кода, которым можно и нужно пользоваться.
Источник
Обеспечить высокое качество андроид код с инструменты статического анализа
Russian (Pусский) translation by Shaun Murphy (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 в, которой будет управлять нашей статические задачи анализа.
И, наконец, посетить свою сборку.Gradle в папке модуля приложение и включить эту строку в конец файла:
Здесь наши quality.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 для выполнения задачи.
Другой способ заключается в использовании командной строки:
После завершения выполнения данной задачи, будет создан отчет, который доступен в App модуль > построить > отчеты > checkstyle. Вы можете открыть checkstyle.html чтобы просмотреть отчет.
Плагин 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, нажав в меню «анализ» выбираем код проверить. (объема контроля является весь проект), а затем нажав на кнопку ОК, чтобы продолжить.
Вы также можете запустить Линт, посетив окне инструмента Gradle, а открытие группы проверки, а затем нажав на Линт. Наконец, вы можете запустить его через командную строку.
На Linux или Mac:
Отчет также будет сгенерировано, когда задача завершит выполнение, которое доступно в App модуль > построить > выходы > lint-results.html.
Бонус: StrictMode
StrictMode является разработчиком инструмент, который помогает предотвратить разработчики проекта делают все случайные вспышки ввода/вывода или сетевого ввода-вывода в основном потоке, потому что это может привести к тому, что приложение было вяло и не отвечает. Это также помогает в предотвращении АНР (приложение не отвечает) диалоги с появляться. С вопросами StrictMode исправлена, приложения станут более отзывчивыми и пользователь будет наслаждаться гладкой опыт. StrictMode использует два набора политик для обеспечения соблюдения своих правил:
- Политика ВМ: защищает от плохой практикой программирования, например, не закрывая объекты SQLiteCursor или любой закрывающиеся объект, который был создан.
- Резьба политики: выходит для таких операций, как вспышка ввода-вывода и ввода-вывода выполняются на поток основного приложения, а не в фоновом потоке.
Приведенный выше код может быть либо в приложении, Активность, или другой компонент приложения onCreate() метод.
Вы можете узнать больше о StrictMode здесь на Envato Tuts+, и.
Образец проекта Android реализует все вышеперечисленное, включая наборы правил из инструментов для типичного проекта Android можно найти в данном посте в GitHub РЕПО.
Заключение
В этом уроке вы узнали о том, как обеспечить высокое качество Android код, используя средства статического анализа кода: что они собой представляют, преимущества их использования, и как использовать Checkstyle, FindBugs, не, Линта, ПМД и StrictMode в приложении. Идти вперед и дать эти средства попробовать—вы можете обнаружить некоторые проблемы в коде, которые вы никогда не ожидали.
В то же время, проверить некоторые из наших других курсов и учебники по разработке приложений Android!
Источник