2015-09-17 27 views
58

Pewnego razu, szczególnie w Eclipse-land, Lint działałby przy każdej kompilacji, a więc gdybyś nie przeszedł sprawdzenia Linta, dowiedziałbyś się natychmiast. W Androidzie Studio (testowane w wersji 1.3) Lint nie działa domyślnie w kompilacji. Nowoprzybyli mogą popełniać błędy, które Lint sprawdzałby, ale ponieważ Lint nie działa, nowoprzybyli nie dowiadują się o nich.W jaki sposób skonfigurujemy Android Studio, aby uruchamiał jego lint na każdym kompilacji?

(IOW, jeśli test Lint nie prowadziła w lesie, jest tam naprawdę test Lint?)

Komentarze this blog post pokazać jak trochę jakoś dostać Lint uruchomić jako część kompilacji:

  • Edycja konfiguracji projektu
  • W zakładce Ogólne konfiguracji, przewiń w dół i odchylić otwarty „przed uruchomieniem” panel
  • W tym panelu, dodać krok do „Run Gradle zadań” o nazwie lint dla Twojego modul e

Jednak powoduje to uruchomienie Linii wiersza polecenia, co powoduje, że raporty zapisywane są w formacie XML i HTML na dysku twardym. To działa, ale byłoby czystsze, gdyby Android Studio uruchamiał kontrole IDE Lint, więc wyniki pojawią się w panelu IDE.

Czy istnieje sposób na skonfigurowanie kompilacji projektu do przeprowadzania sprawdzeń Lint w IDE?

Dodatkowe punkty, jeśli można je ustawić na tylko uruchom Lint, a nie pełną analizę wykonaną przez Analizę> Sprawdzanie kodu. Podczas gdy pełna analiza jest czasami przydatna, Lint jest wystarczająco powolny, jak to jest, nie mówiąc już o wątpliwej użytecznej innej analizie wykonywanej przez Android Studio (np. Sprawdzanie pisowni).

Podczas konfigurowania tego nie byłoby świetnym planem dla wszystkich projektów (skanowanie Linta jest powolne), dla nowicjuszy na Androida, może to być odpowiedni ruch.

+1

Widziałeś tę odpowiedź? http://stackoverflow.com/questions/22850333/run-lint-when-building-android-studio-projects –

+0

@MattWhetton: Nie mogę tego zrobić, żeby zrobić coś pożytecznego. Przypomina to cytowany przeze mnie wpis na blogu, w którym na blogu jest używane "Zadanie Run Gradle" zamiast "Make-aware make". Z "Run Gradle task", przynajmniej otrzymam raport Lint zapisany na dysku. Dzięki "Gradle-aware make", nawet tego nie rozumiem. Nie zapewnia wizualnej reprezentacji komunikatów Lint w IDE. W każdym razie dzięki! – CommonsWare

+0

To dziwne, ponieważ nasza kompilacja Jenkinsa kończy się niepowodzeniem, jeśli nie zmienię Linta, oznacza to, że działa z budową Jenkinsa. – Smashing

Odpowiedz

11

Lint powinien być uruchomiony w Android Studio chyba skonfigurowaniu to być wyłączone poprzez lintOptions w build.gradle pliku.

Oto z dokumentacją znaleźć na http://developer.android.com/tools/debugging/improving-w-lint.html#studio

W Android Studio, skonfigurowany szarpie i inspekcje IDE uruchomić automatycznie, gdy budować swoją aplikację. Inspekcje IDE to skonfigurowane razem z weryfikacją lint do uruchomienia inspekcji kodu IntelliJ w celu usprawnienia przeglądu kodu.

Uwaga: Aby wyświetlić i modyfikować poziomy ważności inspekcja, użyj Plik> Ustawienia> Ustawienia projektu menu, aby otworzyć stronę konfiguracji Inspection z listą obsługiwanych inspekcji.

W Android Studio można również uruchomić inspekcje kłaczków dla konkretnego wariantu budowania lub dla wszystkich wariantów kompilacji z pliku build.gradle. Dodaj właściwość lintOptions do ustawień Androida w pliku kompilacji .Ten fragment kodu z pliku kompilacji Gradle pokazuje, jak ustawić opcję cichą true i opcję abortOnError na 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 
     } 
     ... 
} 

Aby ręcznie uruchomić inspekcje w Android Studio, z menu aplikacji lub prawym przyciskiem myszy, wybierz Analiza> Sprawdź kod. Zostanie wyświetlone okno dialogowe Określ zakres inspekcji , aby określić pożądany zakres inspekcji i profil .

Oto inne opcje szarpie, które można dodać do listy lintOptions blok w Gradle plik build.gradle: http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Lint-support

Oto więcej informacji na Androidzie szarpie: http://developer.android.com/tools/help/lint.html

go używać do możesz dodawać zadania gradacyjne po pewnych akcjach w studiu android.

  • Otwórz zakładkę Gradle po prawej stronie ekranu
  • Wybierz zadanie

Android Studio Gradle Tab

  • prawym przyciskiem myszy na zadanie
  • Wybierz działanie wykonanie

Android Studio Execution Action

To powinno uruchomić zadanie, gdy zostało zaplanowane do wykonania.

+6

"Lint powinien działać w Android Studio, chyba że skonfigurowałeś go, by był wyłączony poprzez lintOptions w twoim pliku build.gradle" - AFAICT, to nie było prawdą przez wiele miesięcy, dlatego też napisałem to pytanie w pierwszej kolejności . – CommonsWare

+0

@CommonsWare ma rację. Nie dotyczy to miesiąca. Miałem błąd linta, który zepsuł kompilację i musiał zignorować ten konkretny błąd, dopóki go nie posortowałem. Po pewnym czasie usunąłem linię ignorowania z pliku build.gradle, nie naprawiając błędu i po prostu uruchomiłem kompilację. Wygląda na to, że w pewnej wersji wtyczki Android Gradle usunęli zależność od zadania z lintami. –

+0

Udało mi się dodać zależność między montażem a linią, która powoduje uruchomienie kłód podczas uruchamiania z Android Studio. Popatrz na moją odpowiedź na to pytanie: http://stackoverflow.com/questions/22850333/run-lint-when-building-android-studio-projects –

6

utworzyć profil inspekcji dla Android Lint

  1. Przejdź do menu Plik -> Ustawienia -> Edytor/Inspection
  2. wybierz Zarządzaj -> Kopiuj
  3. Daj to nazwa "android profilu Lint" i naciśnij Enter
  4. Pozostaw zaznaczone tylko Android zasady Lint na tej karcie

Android Lint Profile

Teraz możesz uruchomić inspekcję tylko z regułami Linta Androida poprzez Analizę -> Sprawdź kod ... wybierając "Profil Lint Androida".

W następnym kroku, nagrajmy makro (Edycja-> Makra-> Rozpocznij zapis makr), wykonując kolejne kroki.

  1. Analizuj -> Sprawdzaj kod ...
  2. wybierz „Android Lint profilu”
  3. Naciśnij Enter (jest ważne w użyciu klawiaturę bo Macro Recorder nie złapać kliknięć myszką na ten temat Windows)
  4. Kliknij na „Uruchom wybranej konfiguracji” (zielony przycisk odtwarzania)

Zatrzymaj nagrywanie makra i nadaj mu nazwę "Lint and Run".

Ostatnią rzeczą, którą należy zrobić, jest odwzorowanie "Shift + F10" na nasze makro. Przejdź do Plik-> Ustawienia ...-> Mapa klawiszy. Znajdź nasze makro i zmień skrót.

macro keymapping

Teraz szarpie zostanie uruchomiony przed każdym budować po naciśnięciu Shift + F10 i wyniki będą w panelu Android Studio.

Ale to rozwiązanie ma jedną wadę , dużą. Jeśli uruchomisz kompilację, klikając przycisk Uruchom, analiza kłód nie zostanie wykonana.

Być może te informacje będą pomocne i ktoś dostarczy lepsze rozwiązanie z jego użyciem.

1

Jednym możliwym (ale trudnym do wdrożenia) rozwiązaniem jest napisanie wtyczki IDEA, aby to zrobić. Możesz tego uniknąć pobierając wtyczkę poniżej z repozytorium lub kodu z github. Poniższy fragment kodu wykona kolejno akcje "kompiluj" i "sprawdź kod".

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); 
     } 
    } 
} 

Kod został przetestowany i działa w Android Studio 1.3. Otworzy się okno, w którym można wybrać, co należy sprawdzić, a nie całą całość.

Linki

Source code on github

Built and Lint Jar

+3

Fajnie, dzięki!Ale, er, "SGITW"? Coś dobrego na świecie? Sriracha Świetnie w zimie? Somewhere Goes (an) Ivory-Tusked Walrus? :-) – CommonsWare

+0

[Najwolniejszy pistolet na zachodzie] (http://meta.stackexchange.com/a/22368) –