Wie finde ich alle fest codierten Zeichenfolgen in meinem Projekt in Android Studio?

85

Ich muss alle fest codierten Zeichenfolgen in meinem Projekt in Android Studio (Beta) 0.84 finden und extrahieren. Ich benötige ein statisches Analysetool wie Find Bugs, das dies auf einmal für mich erledigt und es mir ermöglicht, jede Nachricht zu durchlaufen und die Zeichenfolge in Ressourcendateien zu extrahieren. Noch besser wäre es, wenn der gesamte Prozess automatisiert wäre.

In Android Studio (Beta) 0.84 zeigt die Datei / Einstellung / FindBugs-IDEA I18N als Option auf der Registerkarte Berichterstellung an. Aber ich kann einfach nicht herausfinden, wie es funktioniert.

Vielen Dank für alle Vorschläge.

Farrukh Najmi
quelle

Antworten:

116

Wie @Maor Hadad und andere positive Stimmen mir vorgeschlagen haben: Ich konvertiere meinen Kommentar in eine Antwort, also:

Seit Android Studio 1.2.2 gibt es eine neue Option in

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

Ich habe es benutzt und es scheint mit der aktuellen Version ziemlich zuverlässiger zu sein als "fest codierter Text" (der nur XML-Dateien überprüft).

Hier gesehen Link

PAD
quelle
31
Wohlgemerkt, die Hardcoded TextInspektion gibt die fest codierten Texte in den .XMLDateien zurück, während die Hardcoded StringsInspektion die fest codierten Texte in den Dateien zurückgibt .java.
Loyalar
Bitte sehen Sie meine Antwort auf ein ähnliches Problem hier stackoverflow.com/a/56121083/3904109
DragonFire
Ich hatte eine ähnliche Aufgabe, aber für mein Flutter-Projekt. Die oben erwähnte Inspektion brachte nicht die erwarteten Ergebnisse, also habe ich einen Regex ausprobiert. ".+\Q\EWenn Sie das doppelte Anführungszeichen durch ein einfaches ersetzen, erhalten Sie alle Zeichenfolgen in einfachen Anführungszeichen.
pbertsch
113

Gehen Sie zu "Analysieren> Inspektion nach Namen ausführen ..." und geben Sie "Hardcodierter Text" ein. Führen Sie diese für Ihr gesamtes Projekt aus, und Sie sollten ein Inspektionsergebnisfenster erhalten, in dem die fest codierten Textinstanzen angezeigt werden.

Sie können auch zu Android Studio> Einstellungen> Inspektionen> Hardcodierter Text gehen und genau angeben, wie er ausgeführt wird und welche (falls vorhanden) Sonderfälle von der Inspektion ausgeschlossen sind.

Kevin Coppock
quelle
2
Das hat super funktioniert! Vielen Dank. Übrigens, gibt es Tools, die automatisch Zeichenfolgen in die Datei values.xml extrahieren, indem sie eine generierte Ressourcen-ID verwenden, die auf dem Text basiert? Das wäre eine große Hilfe. Dann kann man einfach die Ressourcen-ID-Namen auf etwas kürzeres umstellen.
Farrukh Najmi
Ich kenne keine automatische Funktion, aber ich glaube, wenn Sie eine der Zeichenfolgen markieren und die Eingabetaste drücken, erhalten Sie eine Option zum automatischen Extrahieren dieser Zeichenfolge, aber Sie müssen den Namen manuell eingeben.
Kevin Coppock
3
+1 eine sehr coole Funktion von Android Studio. Hat jemand einen Weg gefunden, android.util.Log-Nachrichten von den Ergebnissen auszuschließen? (ungefähr 95% meiner Ergebnisse!)
Ben Clayton
6
Zur Information: Android Studio 1.2.2 hat eine neue Option in "Inspektion nach Namen ausführen" => "Hardcodierte Zeichenfolgen" hinzugefügt. Mit der aktuellen Version scheint es ziemlich zuverlässiger zu sein als "fest codierter Text". Hier gesehen Link
PAD
@PAD du solltest es als Antwort schreiben. Hardcodierter Text gibt nur XML-Dateien zurück. ty :)
Maor Hadad
10

Für die Windows-Plattform habe ich am besten Folgendes gefunden:

Sie können diese Verknüpfung verwenden Ctrl Alt Shift Iund suchen nach,

Hardcodierter Text

in der Suchleiste.

Sie können das entsprechende Modul auswählen, in dem Sie nach fest codierten Zeichenfolgen suchen möchten, und es wird Ihnen die Liste aller Zeichenfolgen zusammen angezeigt.

Optionen zur Auswahl von Modulen

TapanHP
quelle
1

Wenn Sie nur alle fest codierten Zeichenfolgen nur in allen Layoutdateien finden möchten, können Sie dies sehr schnell tun, indem Sie - ausführen.

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

Hinweise -
1. grepkann nicht auf Windows verwendet werden
2. Erster cdzu Projekt layoutdir
3. kcoppock Antwort ist groß, aber es dauert zu lange

Vinayak Garg
quelle
1

Verwenden Sie die Ctrl+ Shift+ FKombination für Windows, um überall zu suchen. Außerdem wird eine Vorschau angezeigt.

Verwenden Sie die Kombination Ctrl+ Ffür Windows, um in der aktuellen Datei zu suchen.

Verwenden Sie die Kombination Shift+ Shift(Double Shift) für Windows, um die Projektdatei des Projekts zu durchsuchen.

Möglicherweise für ältere Versionen nicht verfügbar.

Jitesh Prajapati
quelle