2015-09-17 2 views
58

Когда-то, особенно в Eclipse-land, Линт работал на каждой сборке, поэтому, если вы не смогли проверить Lint, вы сразу узнаете. С Android Studio (проверено на 1.3) Lint не запускается по умолчанию в сборке. Новички могут ошибаться, что проверял Линт, но поскольку Lint фактически не работает, новички не узнают о них.Как мы настроим Android Studio для запуска своего линта на каждой сборке?

(IOW, если тест Lint не бегал в лесу, там действительно тест Lint?)

Комментарии this blog post показать, как своего рода Сорта получить Lint, чтобы работать как часть сборки:

  • Редактирование конфигурации проекта
  • на вкладке Общие настройки, прокрутите вниз и сложите открыть «Перед запуском» панель
  • в этой панели, добавьте шаг «Run Gradle задач» под названием lint для вашего Modul e

Однако в этом запуске командной строки Lint, в результате чего на ваш жесткий диск выводятся отчеты, написанные на XML и HTML. Это работает, но было бы проще, если бы Android Studio выполнила проверку IDE Lint, поэтому результаты отображаются на панели IDE.

Есть ли способ настроить сборку проекта для выполнения проверок в IDE Lint?

Бонусные баллы, если они могут быть установлены только на Запустите Lint, а не полный анализ, выполненный Analyse> Inspect Code. Хотя полный анализ иногда полезен, Lint достаточно медленный, так как он, не говоря уже о сомнительно-полезном другом анализе, выполняемом Android Studio (например, проверка орфографии).

Хотя настройка этого не была бы отличным планом для всех проектов (сканирование Lint медленно), для новичков на Android это может быть подходящий шаг.

+1

Вы видели этот ответ? http://stackoverflow.com/questions/22850333/run-lint-when-building-android-studio-projects –

+0

@MattWhetton: Я не могу заставить это сделать что-нибудь полезное. Это напоминает сообщение в блоге, которое я цитировал, где в блоге используется «Запуск программы Gradle» вместо «Gradle-aware make». С помощью «Запустить задачу Gradle» я, по крайней мере, получаю отчет Lint, записанный на диск. С «Gradle-aware make» я даже не понимаю. Также не предусмотрено визуальное представление сообщений Lint в режиме IDE. Спасибо хоть! – CommonsWare

+0

Странно, потому что наша сборка Jenkins терпит неудачу, если я не поворачиваю Lint, это означает, что она работает с сборкой jenkins ?. – Smashing

ответ

11

Lint должен быть запущен в Android Studio, если вы не настроили его выключен через lintOptions в вашем build.gradle файл.

Вот из документации найденной на http://developer.android.com/tools/debugging/improving-w-lint.html#studio

В Android Studio, сконфигурированный ворса и IDE проверки запуска автоматически всякий раз, когда вы строите ваше приложение. Инспекции IDE: , настроенные вместе с проверками lint для запуска инспекций кода IntelliJ для упрощения обзора кода.

Примечание: Для просмотра и изменения степени тяжести инспекции, используйте Файл> Настройки> Настройки проекта меню, чтобы открыть страницу конфигурации Inspection со списком поддерживаемых проверок.

С Android Studio вы также можете запускать проверки lint для определенного варианта сборки или для всех вариантов сборки из файла build.gradle. Добавьте свойство lintOptions в настройки android в файле сборки .Этот фрагмент кода из файла сборки Gradle показывает, как установить тихий параметр в true, а параметр abortOnError - false.

android { 
    lintOptions { 
     // set to true to turn off analysis progress reporting by lint 
     quiet true 
     // if true, stop the gradle build if errors are found 
     abortOnError false 
     // if true, only report errors 
     ignoreWarnings true 
     } 
     ... 
} 

вручную запускать проверки в Android Studio из приложения или меню правой кнопки мыши, выберите Анализ> Проверить код. Появится диалоговое окно «Определение области видимости» , поэтому вы можете указать область и профиль проверки .

Вот другие варианты ворса, которые вы можете добавить в свой lintOptions блока в вашем Gradle файла build.gradle: http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Lint-support

Здесь больше информации о андроиде ворса: http://developer.android.com/tools/help/lint.html

Он использовать для что вы можете добавлять задачи градиента после определенных действий в студии Android.

  • Откройте вкладку Gradle на правой стороне экрана
  • Выберите ваша задача

Android Studio Gradle Tab

  • правой кнопкой мыши на задаче
  • Выберите действие исполнения

Android Studio Execution Action

Это должно выполнить задачу, когда она была запланирована для выполнения.

+6

«Lint должен работать в Android Studio, если вы не настроили его отключить через lintOptions в файле build.gradle» - AFAICT, это не было правдой в течение нескольких месяцев, поэтому я поставил вопрос в первую очередь , – CommonsWare

+0

@CommonsWare прав. Это не верно для месяца. У меня была ошибка ворса, которая сломала сборку и должна была игнорировать эту конкретную ошибку, пока я ее не отсортировал. Через некоторое время я удалил строку игнорирования из build.gradle без исправления ошибки, и она только начала сборку. Похоже, что в какой-то версии Android Gradle Plugin они удалили зависимость от задания lint. –

+0

Мне удалось добавить зависимость между сборкой и созданием ворса во время запуска из Android Studio. Посмотрите на мой ответ на этот вопрос: http://stackoverflow.com/questions/22850333/run-lint-when-building-android-studio-projects –

6

Создать профиль инспекционного для Android Lint

  1. Перейти в меню Файл -> Настройки -> Редактор/Обзорные
  2. Выберите Управление -> Копировать
  3. Дайте ему имя "Android Lint Профиль" и нажмите Enter
  4. Отпуска отмечены только Android правила Lint на этой вкладке

Android Lint Profile

Теперь вы можете запускать проверку только с помощью правил Android Lint через Analyze-> Inspect Code ..., выбрав «Android Lint Profile».

На следующем шаге давайте сделаем запись макроса (Edit-> Macros-> Start Macro Recording) следующими шагами.

  1. Анализ-> Проверка кода ...
  2. Выберите «Android Lint Профиль»
  3. Нажмите Enter (это важно использовать клавиатуру, поскольку записи макросов не улавливает щелчков мыши на этом окне)
  4. Нажмите на зеленую кнопку (игры «Run Selected Configuration»)

Остановить запись макроса и присвоить ему название «Lint and Run».

Заключительная вещь, которую нужно сделать, это сопоставление «Shift + F10» с нашим макросом. Перейдите в меню Файл-> Настройки ...-> Ключ. Найдите наш макрос и измените ярлык.

macro keymapping

Теперь ворс будет запущен до каждой сборки при нажатии Shift + F10 и результатов будет в Android студии панели.

Но этот раствор имеет один большой недостаток. Если вы запустите свою сборку, нажав кнопку «Выполнить», анализ линта не будет выполнен.

Возможно, эта информация будет полезна, и кто-то предоставит ей лучшее решение.

1

Одним из возможных (но трудно реализуемых) решений является создание плагина IDEA для этого. Вы можете избежать этого, загрузив плагин из репозитория или код из github. Следующий фрагмент кода будет выполнять действия «компилировать» и «проверять код» последовательно.

public class BuildAndLint extends AnAction { 
    public void actionPerformed(AnActionEvent e) { 
     String[] actions = {"CompileProject", "InspectCode"}; 
     for(String action: actions) { 
      AnAction anAction = ActionManager.getInstance().getAction(action); 

      DataContext context = e.getDataContext(); 
      AnActionEvent anActionEvent = new AnActionEvent(null, context, "", anAction.getTemplatePresentation(), ActionManager.getInstance(), 0); 

      anAction.actionPerformed(anActionEvent); 
     } 
    } 
} 

Код был протестирован и работает в Android Studio 1.3. Он откроет окно, чтобы выбрать, что нужно проверять, а не делать все это.

Ссылки

Source code on github

Built and Lint Jar

+3

Прохладный, спасибо!Но, э-э, «SGITW»? Что-то хорошее в мире? Шрирача Великая зимой? Где-то идет (а) Слоновая кость Морской? :-) – CommonsWare

+0

[Медленнее пистолет на западе] (http://meta.stackexchange.com/a/22368) –