Comment puis-je trouver toutes les chaînes codées en dur dans mon projet dans Android Studio


89

J'ai besoin de trouver et d'extraire toutes les chaînes codées en dur dans mon projet dans Android Studio (bêta) 0.84. J'ai besoin d'un outil d'analyse statique comme Find Bugs, faites-le pour moi en un seul coup et me permettez de parcourir chaque message et d'extraire la chaîne de fichiers de ressources. Ce serait encore mieux si l'ensemble du processus était automatisé.

Dans Android Studio (bêta) 0.84, File / Setting / FindBugs-IDEA montre I18N comme option sous l'onglet Reporting. Mais je ne peux tout simplement pas comprendre comment le faire fonctionner.

Merci pour vos suggestions.

Réponses:


125

Comme @Maor Hadad et d'autres votes positifs me l'ont suggéré: je convertis mon commentaire en réponse, donc:

Depuis Android Studio 1.2.2, il existe une nouvelle option dans

"Analyse > Run inspection By Name" => "Hardcoded strings".

Je l'ai utilisé et il semble plus fiable avec la version actuelle que le "texte codé en dur" (qui ne vérifie que les fichiers xml).

Vu ici lien


32
Remarquez que l' Hardcoded Textinspection renvoie les textes codés en dur dans les .XMLfichiers, tandis que l' Hardcoded Stringsinspection renvoie les textes codés en dur dans les .javafichiers.
Loyalar

Veuillez voir ma réponse à un problème similaire ici stackoverflow.com/a/56121083/3904109
DragonFire

J'avais une tâche similaire mais pour mon projet Flutter. L'inspection mentionnée ci-dessus n'a pas apporté les résultats escomptés, j'ai donc essayé un Regex. ".+\Q\Esi vous remplacez le guillemet double par un simple, vous obtenez toutes les chaînes entre guillemets simples.
pbertsch

115

Allez dans "Analyser> Exécuter l'inspection par nom ...", et tapez "Texte codé en dur". Exécutez celui-ci sur l'ensemble de votre projet et vous devriez obtenir un panneau de résultats d'inspection qui affichera les instances de texte codées en dur.

Vous pouvez également accéder à Android Studio> Préférences> Inspections> Texte codé en dur et spécifier exactement comment il s'exécute et quels cas particuliers (le cas échéant) sont exclus de l'inspection.


2
Cela a fonctionné à merveille! Merci. BTW, existe-t-il des outils qui extraire automatiquement les chaînes dans le fichier values.xml en utilisant un identifiant de ressource généré basé sur le texte? Ce serait d'une grande aide. Ensuite, on peut simplement aller et refcator les noms d'identifiant de ressource à quelque chose de plus court.
Farrukh Najmi

Je ne connais pas automatique, mais je pense que si vous mettez en surbrillance l'une des chaînes et appuyez sur Option-Entrée, vous aurez une option pour extraire automatiquement cette chaîne, mais vous devrez taper le nom manuellement.
Kevin Coppock

3
+1 une fonctionnalité très cool d'Android Studio. Quelqu'un a-t-il trouvé un moyen d'exclure les messages android.util.Log des résultats? (environ 95% de mes résultats!)
Ben Clayton

6
Pour information: Android Studio 1.2.2 a ajouté une nouvelle option dans "Exécuter l'inspection par nom" => "Chaînes codées en dur". Il semble bien plus fiable avec la version actuelle que le "texte codé en dur". Vu ici lien
PAD

@PAD, vous devriez l'écrire comme réponse. Le texte codé en dur ne renvoie que les fichiers xml. ty :)
Maor Hadad

11

Pour la plate-forme Windows, la meilleure façon que j'ai trouvée est la suivante:

Vous pouvez utiliser ce raccourci Ctrl Alt Shift Iet rechercher,

Texte codé en dur

dans la barre de recherche.

Vous pouvez sélectionner le module approprié dans lequel vous souhaitez rechercher des chaînes codées en dur et il vous donnera la liste de toutes les chaînes ensemble.

Options de sélection des modules


1

Si vous souhaitez simplement trouver toutes les chaînes codées en dur dans tous les fichiers de mise en page uniquement, vous pouvez le faire très rapidement en exécutant -

vinayak@vinayak-osx:layout $ grep -n "android:text=\"" * | grep -v "@string"

Notes -
1. grepne peuvent pas être utilisés sur les fenêtres
2. Tout d' abord cdau projet de layoutdir
3. La réponse est de kcoppock grande, mais il prend trop de temps


La commande grep fonctionne bien, mais ajoutez également comment ignorer la liaison de données dans la commande
kashyap

1

Utilisez la combinaison Ctrl+ Shift+ Fpour que Windows recherche partout, il affiche également un aperçu.

Utilisez la combinaison Ctrl+ Fpour que Windows recherche dans le fichier actuel.

Utilisez la combinaison Shift+ Shift(Double Shift) pour Windows pour rechercher le fichier de projet du projet.

Peut être indisponible pour les anciennes versions.


0

Ce qui a bien fonctionné pour moi a été de rechercher l'ensemble du projet en utilisant regex:

android: text = "[az]

outils: text = "[az]

entrez la description de l'image ici

dans ce cas uniquement sur les fichiers xml (recherche android: text = "....)

n'oubliez pas de taper sur le bouton bleu. * à la toute fin de cette image ci-dessus

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.