- Редактор кода
- Инъекция языка
- Перемещаем метод вверх или вниз
- Сворачиваем фрагменты кода
- Редактор кода для XML в режиме Text
- [I18N] Hardcoded string
- Вкладки
- Строка состояния
- Информационный желоб
- Анализ кода
- Автодополнение кода
- Перевод на новую строку
- 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 с помощью анотаций в коде
- Выводы
Редактор кода
Рассмотрим возможности редактора кода при написании приложений.
Инъекция языка
Студия позволяет делать инъекцию в существующий код. Что это такое? Например, JSON имеет свой формат данных. Если писать код вручную в данном формате, то можно столкнуться с неудобствами — вам приходится экранировать символы в большом фрагменте кода. Студия поможет нам. Создадим переменную jsonString:
Помещаем курсор между кавычками и нажимаем комбинацию Alt + Enter , выбираем пункт Inject language or reference, в выпадающем списке выбираем JSON (JSON files).
Далее следует ещё раз нажать комбинацию Alt + Enter , чтобы инъекция была постоянной. Студия добавит комментарий к переменной.
Если вы скопируете текст в формате JSON и вставите его между кавычками, то экранирование произойдёт автоматически.
Сам текст не обязательно копировать из другого источника, можете создавать JSON-запись в самой студии. Снова нажимаем Alt + Enter и выбираем пункт Edit JSON Fragment. Появится новая панель, в котором вы можете набирать текст, а в редакторе кода будет выводиться валидный код для работы.
Аналогично можно работать с регулярным выражением.
Перемещаем метод вверх или вниз
Иногда хочется для лучшей читаемости поменять местами методы в коде. Вырезать и вставлять в новое место слишком утомительно. Есть способ лучше. Установите указатель мыши на имени метода и нажмите комбинацию Ctrl+Shift+Стрелка_Вверх — метод автоматически перепрыгнет через метод над собой. Как переместить вниз вы сами догадаетесь.
Сворачиваем фрагменты кода
Студия умеет сворачивать фрагменты кода, которые являются структурной единицей, например, метод. Щёлкнув по фиговине (как это называется?), вы убираете код, чтобы не мозолил вам глаза.
Но мало кто знает, что свернуть можно любой свой код. Для этого ставим два слеша, как в комментариях, а затем добавляем слово region (без пробела) и через пробел название блока. Это будет началом блока. Конец блока обозначаем через //endregion
Теперь отмеченный блок можно сворачивать. Наведите порядок у себя в коде.
Редактор кода для XML в режиме Text
[I18N] Hardcoded string
Когда вы редактируете код разметки экрана активности, то можете встретить предупреждение [I18N] Hardcoded string «Какой-то ваш текст», should use @string resource.
Студия информирует вас о возможной проблеме, если вы в будущем задумаетесь о локализации приложения. Странное выражение I18N переводится очень просто. Здесь зашифровано слово INTERNATIONALIZATION — первая буква I, последняя буква N и восемнадцать букв между ними.
Вам нужно заменить свой жёстко закодированный текст на строковый ресурс. Установите курсор внутри текста, нажмите комбинацию клавиш Alt+Enter и выберите пункт Extract string resource. Далее в диалоговом окне придумываете имя для ресурса и выбираете файл для хранения (обычно, strings.xml).
Предположим, вы заменили везде текст на строковые ресурсы и решили отредактировать текст у кнопки. Снова ставим курсор на нужном тексте и нажимаем комбинацию клавиш Ctrl+B, у вас сразу откроется файл strings.xml и не надо его искать в дереве проекта.
Ещё один приём — если вы хотите видеть вместо кода android:text=»@string/click» реальный текст из ресурса, то нажмите комбинацию Ctrl+- (клавиша минус на цифровой клавиатуре) и он подтянется.
Вкладки
Каждый файл проекта открывается в собственной вкладке. Вкладки можно менять местами перетаскиванием с помощью мыши. Переключаться можно через клавиши Alt-стрелка влево и Alt-стрелка вправо. Также можно вызвать Switcher с помощью комбинации Ctrl+Tab.
Если будет открыто слишком много вкладок, то часть из них сгруппируется и будет доступна через выпадающий список по нажатию на треугольник.
Если имя файла на вкладке подчёркнуто красной волнистой линией, значит в коде содержится ошибка и не нужно запускать программы, то время потеряете. Сначала исправьте ошибку.
Вкладку можно «отстегнуть». Нажмите на вкладку и удерживая мышку, перетащите вкладку на рабочий стол. Также её можно вернуть обратно.
Каждая вкладка имеет контекстное меню и значок для закрытия. Изучите пункты меню самостоятельно. Например, можно разбить редактор кода на две части (по вертикали или горизонтали), чтобы видеть разные участки кода одновременно.
Строка состояния
В нижней части студии находится строка состояния. В нижнем правом углу имеется текстовая метка с информацией о текущем местоположении курсора в документе (номер строки:номер символа). Если подвести мышку к надписи, то можно увидеть всплывающую подсказку Click to go to line. Щелчок вызовет диалоговое окно для быстрого перехода на нужную позицию.
Рядом также имеется текстовая метка с указанием кодировки, в которой пишется код. В последних версиях студии это стало проблемой для русскоязычных программистов. Студия может использовать системную кодировку, которая часто бывает windows-1551, но в Android принято использовать UTF-8, и после запуска приложения вместо текста можно увидеть кракозябры.
Остальные элементы не представляют интереса.
Информационный желоб
Слева от редактора кода имеется отдельная полоска, которую я назвал информационным желобом. На ней можно увидеть различные значки. Например, у класса MainActivity выводится значок, связанный XML-разметкой для данного класса. Нажав на него, вы можете быстро открыть нужный XML-файл.
Также выводятся значки для методов. Каждый тип методов имеет свой цвет.
В данном желобе устанавливаются точки останова (breakpoint).
Доступно контекстное меню. Например, можно выбрать показ номеров строки.
На границе желоба и редактора кода имеются маркеры для сворачивания блоков кода.
Если нажать клавишу F11, то текущая строка будет помечена как закладка и появится галочка.
Анализ кода
Справа от редактора кода находится анализатор кода. Если код содержит ошибки, сверху будет гореть красный прямоугольник. Если ошибок нет, но есть предупреждения, то будет гореть жёлтый прямоугольник. При правильном коде горит зелёный прямоугольник.
В случае ошибок или предупреждений также выводятся зарубки. Если подвести к ним курсор мыши, то можно прочитать сообщение или сразу перейти в нужную строку для исправления, нажав на неё. Также есть синие зарубки для выделенных слов и задач TODO.
Автодополнение кода
Студия поддерживает автодополнение кода, когда по первым символам подставляет нужные слова. Распространяться на эту тему не буду.
Основная комбинация Ctrl+Space.
Если написать имя метода, например, «private void onClick()» и нажать комбинацию Ctrl+Shift+Enter, то студия сгенерирует фигурные скобки.
Когда у вас есть кусок кода и вы начинаете исправлять его, то возникает следующая ситуация. Студия предлагает подсказку, вы соглашаетесь и нажимаете Enter.
В данном случае мы хотим заменить переменную name на catName, но если нажмём на Enter, то подсказка присоединится к старому коду и мы получим catNamename. В следующий раз нажимайте на клавишу Tab и тогда старый вариант заменится на новый.
Также изучите другие клавиатурные комбинации.
Периодически используйте команды меню Code: Reformat Code и Rearrange Code. Первая команда полезна для Java-кода, а вторая для XML-разметки. Код станет аккуратнее.
Перевод на новую строку
Если курсор находится в середине выражения и вы хотите начать новую строку, не обязательно гнать курсор в конец строки. Просто нажмите комбинацию Shift+Enter.
Источник
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 очень полезный инструмент для контроля за качеством кода, которым можно и нужно пользоваться.
Источник