Comment configurer Android Studio pour exécuter sa peluche sur chaque version?

il était une fois, en particulier dans Eclipse-land, Lint fonctionnait sur chaque Construction, et donc si vous échouiez les contrôles de Lint, vous le découvririez immédiatement. Avec Android Studio (testé sur 1.3), Lint ne s'exécute pas par défaut sur une construction. Les nouveaux venus pourraient faire des erreurs que Lint vérifierait, mais puisque Lint ne fonctionne pas réellement, les nouveaux venus ne savent pas à leur sujet.

(OIE, si un chiffon de test ne s'est pas exécuté dans une forêt, est-il vraiment un chiffon en test?)

Commentaires sur ce billet de blog montre comment faire pour que lint fonctionne dans le cadre d'un build:

  • modifier la configuration du projet
  • dans l'onglet Général de la configuration, faites défiler vers le bas et ouvrez le panneau "avant le lancement
  • dans ce panneau, ajouter une étape à "exécuter la tâche Gradle "nommé lint pour votre module

cependant, cela fonctionne lint ligne de commande, résultant en des rapports écrits en XML et HTML sur votre disque dur. Cela fonctionne, mais il serait plus propre D'avoir Android Studio exécuter ses vérifications in-IDE Lint, de sorte que les résultats apparaissent dans un panneau IDE.

y a-t-il un moyen de mettre en place un projet de construction pour effectuer les contrôles in-IDE?

points Bonus si elle pouvait être réglée à seulement lancer peluche, pas l'analyse complète effectuée par analyser > inspecter Code. Bien que l'analyse complète soit parfois utile, Lint est assez lent comme il est, sans parler de l'autre analyse douteuse-utile effectuée par Android Studio (par exemple, spellchecking).

alors que la mise en place de ce ne serait pas un grand plan pour tous les projets (lint scans sont lents), pour les nouveaux venus à Android, il pourrait être un déplacement approprié.

61
demandé sur CommonsWare 2015-09-17 16:09:11

4 réponses

Lint devrait être exécuté dans Android Studio à moins que vous ne l'ayez configuré pour être désactivé via le lintOptions dans votre construire.Grad file.

voici de la documentation trouvée à http://developer.android.com/tools/debugging/improving-w-lint.html#studio

dans Android Studio, le les inspections des peluches et de L'IDE sont effectuées automatiquement chaque fois que vous construisez votre application. Les inspections IDE sont configuré avec les contrôles de peluche pour effectuer des inspections de code IntelliJ simplifier la révision du code.

Note: pour afficher et modifier les niveaux de sévérité de l'inspection, utilisez le menu Fichier > Paramètres > Paramètres du projet pour ouvrir la page de Configuration de L'Inspection avec une liste des inspections supportées.

avec Android Studio, vous pouvez également exécuter des inspections construire variante, ou pour construire des variantes de la construction.dossier gradle. Ajouter la propriété lintOptions aux paramètres android dans le build fichier. Ce code extrait d'un fichier de construction Gradle montre comment définir option calme à true et option d'abandon à 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
       }
       ...
}

pour exécuter manuellement des inspections dans Android Studio, à partir de l'application ou cliquez sur le menu, choisissez Analyser > Inspecter Le Code . Le Préciser La boîte de dialogue inspection Scope apparaît de sorte que vous pouvez spécifier la valeur désirée portée et profil de l'inspection.

Voici d'autres options de peluche que vous pouvez ajouter à votre bloc lintOptions dans votre construction gradle.dossier gradle: http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Lint-support

Voici plus d'informations sur lint androïde: http://developer.android.com/tools/help/lint.html

il était temps que vous puissiez ajouter des tâches gradle après certaines actions dans android studio.

  • ouvrir l'onglet Gradle sur le côté droit de l'écran
  • Sélectionnez votre tâche

Android Studio Gradle Tab

  • Right cliquez sur la tâche
  • choisissez votre action d'exécution

Android Studio Execution Action

cela devrait exécuter la tâche quand il a été prévu pour l'exécution.

12
répondu Ray Hunter 2018-01-16 21:40:41

créer un profil d'inspection pour Android Lint

  1. Allez dans Fichier -> Paramètres -> Editeur/Inspection
  2. Sélectionnez Gérer - > Copier
  3. donnez-lui le nom "profil de peluche Android" et appuyez sur entrez
  4. Laissez marqué seulement Android Peluches règles sur cet onglet

Android Lint Profile

Maintenant, vous pouvez exécuter l'inspection seulement avec les règles Lint Android via analyser->inspecter le Code... en sélectionnant "profil Lint Android".

à l'étape suivante, enregistrons Macro (Edit->Macros->Start Macro Recording) avec les étapes suivantes.

  1. Analyser - > Inspecter Le Code...
  2. Sélectionnez "Profil Android Lint"
  3. Appuyez sur Entrée (il est important pour utiliser le clavier parce que l'enregistreur de Macro ne pas attraper les clics de souris sur cette windows)
  4. cliquez sur" Exécuter la Configuration sélectionnée "(bouton vert play)

arrêtez l'enregistrement macro et donnez-lui le nom "Lint and Run".

la dernière chose à faire est de mapper "Shift+F10" sur notre macro. Allez dans Fichier - > Paramètres...->Disposition du clavier. Trouver notre macro et changer le raccourci.

macro keymapping

maintenant lint sera exécuté avant chaque build lorsque vous appuyez sur Maj+F10 et les résultats seront dans le panneau Android Studio.

mais cette solution ont un grand drawback. Si vous exécutez votre build en cliquant sur le bouton Run lint analysis ne sera pas exécuté.

peut-être cette information sera utile et quelqu'un fournira une meilleure solution en l'utilisant.

6
répondu Ilya Tretyakov 2015-09-22 12:01:02

une solution possible (mais difficile à implémenter) est d'écrire un plugin D'idée pour le faire. Vous pouvez éviter cela en téléchargeant le plugin ci-dessous depuis le dépôt ou le code de github. L'extrait de code suivant exécutera les actions' compiler 'et' inspecter le code', de façon séquentielle.

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

le code a été testé et fonctionne sous Android Studio 1.3. Il ouvrira une fenêtre pour sélectionner ce qu'il faut inspecter, plutôt que de tout faire.

Liens

code Source sur github

Jar construit et peluche

1
répondu Roy Falk 2017-05-23 10:31:13

Je l'ai déjà fait en ajoutant un crochet git pré-push qui exécuterait lint automatiquement sur push, et ne réussirait pas à push si des erreurs de Lint étaient trouvées. Le script du crochet pré-push a été stocké dans le repo du projet Android et a été installé sur la machine locale d'un utilisateur automatiquement via gradle.

install git-crochets.Grad

def hookDest = new File("${rootProject.rootDir}/.git/hooks/pre-push")
def prePushHook = new File("${rootProject.rootDir}/pre-push")

task installGitHooksTask(type: Copy) {
    hookDest.delete()
    hookDest << prePushHook.text
}

task gitExecutableHooks() {
    Runtime.getRuntime().exec("chmod -R +x ${hookDest}");
    println "gitExecutableHooks"
}

gitExecutableHooks.dependsOn installGitHooksTask

que dans la construction de votre application.Grad

apply from: rootProject.file('gradle/install-git-hooks.gradle')

pré-push

#!/bin/sh
#
# This hook is for Android project git repos.
#
# You can use git config variables to customize this hook.
# -----------------------------------------------------------
# Change hooks.lintTargetDirectory to point at a non . directory
# Change hooks.lintArgs to add any custom lint arguments you prefer

# Get custom info
dirToLint=$(git config hooks.lintTargetDirectory)
lintArgs=$(git config hooks.lintArgs)
projectDir=$(git rev-parse --show-toplevel)
lintReportPath="/app/lint-report.html"

# If user has not defined a preferred directory to lint against, make it .
if [ -z "$dirToLint"]
  then
  dirToLint="."
fi

# Perform lint check
echo "Performing pre-commit lint check of ""$dirToLint"
./gradlew lint
lintStatus=$?

if [ $lintStatus -ne 0 ]
then
  echo "Lint failure, git push aborted."
  echo "Open ${projectDir}${lintReportPath} in a browser to see Lint Report"
  exit 1
fi

exit $lintStatus
1
répondu Lawrence Martin 2018-06-20 18:54:38