Jak mogę znaleźć wszystkie zakodowane ciągi w moim projekcie w Android Studio

89

Muszę znaleźć i wyodrębnić wszystkie zakodowane ciągi w moim projekcie w Android Studio (beta) 0.84. Potrzebuję narzędzia do analizy statycznej, takiego jak Find Bugs, które zrobi to za mnie za jednym razem i pozwoli mi przejść przez każdą wiadomość i wyodrębnić ciąg do plików zasobów. Jeszcze lepiej byłoby, gdyby cały proces był zautomatyzowany.

W Android Studio (beta) 0.84 File / Setting / FindBugs-IDEA pokazuje I18N jako opcję w zakładce Reporting. Ale po prostu nie mogę wymyślić, jak to działa.

Dzięki za wszelkie sugestie.

Farrukh Najmi
źródło

Odpowiedzi:

125

Jak zasugerował @Maor Hadad i inni upvotes: Zamieniam mój komentarz w odpowiedź, więc:

Od wersji Android Studio 1.2.2 dostępna jest nowa opcja w

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

Użyłem go i wydaje się bardziej niezawodny w obecnej wersji niż "tekst zakodowany na stałe" (który sprawdza tylko pliki xml).

Widziany tutaj link

PODKŁADKA
źródło
32
Pamiętaj, że Hardcoded Textinspekcja zwraca zakodowane na stałe teksty w .XMLplikach, podczas gdy Hardcoded Stringsinspekcja zwraca zakodowane na stałe teksty w .javaplikach.
Loyalar
Zobacz moją odpowiedź na podobny problem tutaj stackoverflow.com/a/56121083/3904109
DragonFire
Miałem podobne zadanie, ale w ramach projektu Flutter. Wspomniana powyżej inspekcja nie przyniosła oczekiwanych rezultatów, więc wypróbowałem Regex. ".+\Q\Ejeśli zastąpisz podwójny cudzysłów pojedynczym cudzysłowem, otrzymasz wszystkie ciągi znaków w pojedynczych cudzysłowach.
pbertsch
115

Przejdź do „Analiza> Uruchom kontrolę według nazwy ...” i wpisz „Zakodowany tekst”. Uruchom to dla całego projektu, a powinieneś otrzymać panel wyników inspekcji, który pokaże instancje zakodowanego na stałe tekstu.

Możesz również przejść do Android Studio> Preferencje> Inspekcje> Zakodowany tekst i określić dokładnie, jak działa i jakie (jeśli w ogóle) przypadki specjalne są wykluczone z kontroli.

Kevin Coppock
źródło
2
To zadziałało niesamowicie! Dzięki. A tak przy okazji, czy istnieją narzędzia, które automatycznie wyodrębniają ciągi znaków do pliku values.xml przy użyciu wygenerowanego identyfikatora zasobu opartego na tekście? To byłaby wielka pomoc. Wtedy można po prostu przejść i zamienić nazwy identyfikatorów zasobów na coś krótszego.
Farrukh Najmi
Nie znam automatycznego, ale wierzę, że jeśli podświetlisz jeden z ciągów i naciśniesz Option-Enter, otrzymasz opcję automatycznego wyodrębnienia tego ciągu, ale będziesz musiał wpisać nazwę ręcznie.
Kevin Coppock
3
+1 bardzo fajna funkcja Android Studio. Czy ktoś znalazł sposób na wykluczenie wiadomości android.util.Log z wyników? (około 95% moich wyników!)
Ben Clayton
6
Dla informacji: Android Studio 1.2.2 dodał nową opcję w "Uruchom inspekcję według nazwy" => "Ciągi zakodowane na stałe". Wydaje się bardziej wiarygodne w obecnej wersji niż „tekst zakodowany na stałe”. Widziany tutaj link
PAD,
@PAD powinieneś napisać to jako odpowiedź. Zakodowany tekst zwraca tylko pliki xml. ty :)
Maor Hadad
11

W przypadku platformy Windows najlepszy sposób, jaki znalazłem, jest następujący:

Możesz użyć tego skrótu Ctrl Alt Shift Ii wyszukać,

Tekst zakodowany na stałe

w pasku wyszukiwania.

Możesz wybrać odpowiedni moduł, w którym chcesz przeszukać zakodowane ciągi, a otrzymasz listę wszystkich ciągów razem.

Opcje wyboru modułów

TapanHP
źródło
1

Jeśli chcesz po prostu znaleźć wszystkie zakodowane ciągi tylko we wszystkich plikach układu, możesz to zrobić bardzo szybko, uruchamiając -

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

Uwagi -
1. grepnie mogą być stosowane w oknach
2. Najpierw cddo projektu layoutreż
3. kcoppock odpowiedź jest super, ale to zajmuje zbyt dużo czasu

Vinayak Garg
źródło
Polecenie grep działa dobrze, ale dodaj również sposób ignorowania wiązania danych w poleceniu
kashyap
1

Użyj kombinacji Ctrl+ Shift+, Faby system Windows przeszukiwał wszędzie, pokazuje również podgląd.

Użyj kombinacji Ctrl+ Fdla systemu Windows, aby wyszukać w bieżącym pliku.

Użyj kombinacji Shift+ Shift(podwójny Shift) dla systemu Windows, aby przeszukać plik projektu projektu.

Może być niedostępny dla starszych wersji.

Jitesh Prajapati
źródło
0

To, co działało dobrze, to wyszukiwanie w całym projekcie przy użyciu wyrażenia regularnego:

android: text = "[az]

narzędzia: tekst = "[az]

wprowadź opis obrazu tutaj

w tym przypadku tylko w plikach xml (szukam androida: text = "....)

nie zapomnij dotknąć niebieskiego przycisku. * na samym końcu powyższego obrazka

Igor Maia Romcy
źródło