Android Studio'daki projemdeki tüm sabit kodlanmış dizeleri nasıl bulabilirim


92

Android Studio (beta) 0.84'te projemdeki tüm sabit kodlanmış dizeleri bulmam ve çıkarmam gerekiyor. Find Bugs gibi statik bir analiz aracına ihtiyacım var, bunu benim için tek seferde yapıyor ve her mesajın üzerinden geçmeme ve dizeyi kaynak dosyalarına çıkarmama izin ver. Daha da iyisi, tüm sürecin otomatik olması.

Android Studio (beta) 0.84'te Dosya / Ayar / FindBugs-IDEA, Raporlama sekmesinin altında I18N'yi bir seçenek olarak gösterir. Ama nasıl çalıştıracağımı çözemiyorum.

Önerileriniz için teşekkürler.

Yanıtlar:


130

@Maor Hadad ve diğer olumlu oyların bana önerdiği gibi: Yorumumu bir cevaba dönüştürüyorum, bu yüzden:

Android Studio 1.2.2'den bu yana, yeni bir seçenek var

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

Ben kullandım ve şu anki sürümde "kodlanmış metin" ten (sadece xml dosyalarını kontrol eden) daha güvenilir görünüyor.

Burada görülen bağlantı


33
Unutmayın, Hardcoded Textinceleme .XMLdosyalardaki Hardcoded Stringssabit kodlanmış metinleri döndürürken, inceleme .javadosyalardaki sabit kodlanmış metinleri döndürür .
Loyalar

Lütfen benzer bir soruna
cevabımı

Benzer bir görevim vardı ama Flutter Projem için. Yukarıda bahsedilen İnceleme beklenen sonuçları getirmedi, bu yüzden bir Regex denedim. ".+\Q\EÇift tırnak yerine tek tırnak koyarsanız, tüm Dizeleri tek tırnak içinde alırsınız.
pbertsch

117

"Analiz> İsme Göre İnceleme Çalıştır ..." seçeneğine gidin ve "Sabit kodlanmış metin" yazın. Bunu tüm projenize karşı çalıştırın ve kodlanmış metin örneklerini gösteren bir inceleme sonuçları paneli almalısınız.

Ayrıca Android Studio> Tercihler> Denetimler> Sabit kodlanmış metin'e gidebilir ve tam olarak nasıl çalıştığını ve hangi özel durumların (varsa) denetimden hariç tutulacağını belirtebilirsiniz.


2
Bu harika çalıştı! Teşekkürler. BTW, metne dayalı olarak oluşturulmuş bir kaynak kimliği kullanarak dizeleri otomatik olarak values.xml dosyasına çıkaran herhangi bir araç var mı? Bu çok yardımcı olur. Daha sonra kaynak kimliği adlarını daha kısa bir şeye yönlendirebiliriz.
Farrukh Najmi

Otomatik olarak bilmiyorum, ancak dizelerden birini vurgular ve Option-Enter tuşuna basarsanız, bu dizeyi otomatik olarak çıkarmak için bir seçenek alacağınıza inanıyorum, ancak adı manuel olarak yazmanız gerekecek.
Kevin Coppock

3
Android Studio'nun çok güzel bir özelliğini + 1'leyin. Android.util.Log mesajlarını sonuçlardan dışlamanın bir yolunu bulan var mı? (sonuçlarımın yaklaşık% 95'i!)
Ben Clayton

6
Bilgi için: Android Studio 1.2.2, "İsme Göre İnceleme Çalıştır" => "Sabit kodlanmış dizeler" içinde yeni bir seçenek ekledi. Mevcut sürümde "kodlanmış metin" ten oldukça daha güvenilir görünüyor. Burada bağlantı
PAD

@PAD bir cevap olarak yazmalısınız. Sabit kodlanmış metin yalnızca xml dosyalarını döndürür. ty :)
Maor Hadad

11

Windows platformu için bulduğum en iyi yol şudur:

Bu kısayolu kullanabilir Ctrl Alt Shift Ive şunları arayabilirsiniz:

Sabit Kodlanmış Metin

arama çubuğunda.

Sabit kodlu dizeleri aramak istediğiniz uygun modülü seçebilir ve size tüm Dizelerin listesini birlikte verecektir.

Modül seçme seçenekleri


1

Yalnızca tüm düzen dosyalarındaki tüm sabit kodlanmış dizeleri bulmak istiyorsanız, bunu çok hızlı bir şekilde yapabilirsiniz -

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

Notlar -
1. greppencerelerde kullanılamaz
İlk 2. cdprojenin etmek layoutdir
3. kcoppock cevap harika ama çok fazla zaman alır


grep komutu iyi çalışıyor, ancak komutta veri
bağlamanın

1

Her yerde arama yapmak için Windows için Ctrl+ Shift+ Fkombinasyonunu kullanın , önizleme de gösterir.

Geçerli dosyada arama yapmak için Windows için Ctrl+ Fkombinasyonunu kullanın .

Windows için Project File of Project'te arama yapmak için Shift+ Shift(Double Shift) kombinasyonunu kullanın .

Eski sürümler için mevcut olmayabilir.


1

Benim için iyi sonuç veren şey, regex kullanarak tüm projede arama yapmaktı:

android: text = "[az]

görüntü açıklamasını buraya girin

Bu kotlin / java sınıfının içinde bulmak için:

[.] text = "[az]

görüntü açıklamasını buraya girin

[.]Metin ayarla("

görüntü açıklamasını buraya girin

Yukarıdaki bu görüntünün en sonundaki. * mavi düğmeye tıklamayı unutmayın

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.