Bagaimana saya bisa menemukan semua string kode keras dalam proyek saya di Android Studio

92

Saya perlu menemukan dan mengekstrak semua string kode keras dalam proyek saya di Android Studio (beta) 0.84. Saya memerlukan alat analisis statis seperti Find Bugs melakukan ini untuk saya dalam satu kesempatan dan memungkinkan saya untuk menelusuri setiap pesan dan mengekstrak string ke file sumber daya. Lebih baik lagi jika seluruh proses otomatis.

Di Android Studio (beta) 0.84, File / Setting / FindBugs-IDEA menampilkan I18N sebagai opsi di bawah tab Reporting. Tapi saya tidak tahu bagaimana membuatnya bekerja.

Terima kasih atas sarannya.

Farrukh Najmi
sumber

Jawaban:

130

Seperti yang disarankan oleh @Maor Hadad dan suara positif lainnya kepada saya: Saya mengubah komentar saya dalam sebuah jawaban, jadi:

Sejak Android Studio 1.2.2, ada opsi baru di

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

Saya menggunakannya dan tampaknya lebih dapat diandalkan dengan versi saat ini daripada "teks hardcoded" (yang hanya memeriksa file xml).

Lihat link disini

BANTALAN
sumber
33
Pikiran Anda, Hardcoded Textinspeksi mengembalikan teks hardcode dalam .XMLfile, sedangkan Hardcoded Stringsinspeksi mengembalikan teks hardcode dalam .javafile.
Loyalar
Silakan lihat jawaban saya untuk masalah serupa di sini stackoverflow.com/a/56121083/3904109
DragonFire
Saya memiliki tugas serupa tetapi untuk Proyek Flutter saya. Pemeriksaan yang disebutkan di atas tidak memberikan hasil yang diharapkan, jadi saya mencoba Regex. ".+\Q\Ejika Anda mengganti tanda kutip ganda dengan tanda kutip tunggal, Anda akan mendapatkan semua String di dalam tanda kutip tunggal.
pbertsch
117

Pergi ke "Analisis> Jalankan Inspeksi Dengan Nama ...", dan ketik "Teks hardcode". Jalankan yang satu itu terhadap seluruh proyek Anda, dan Anda akan mendapatkan panel hasil pemeriksaan yang akan menampilkan instance teks hardcode.

Anda juga dapat membuka Android Studio> Preferences> Inspections> Hardcode text dan menentukan dengan tepat cara menjalankannya, dan kasus khusus apa (jika ada) yang dikecualikan dari pemeriksaan.

Kevin Coppock
sumber
2
Ini bekerja dengan sangat baik! Terima kasih. BTW, apakah ada alat yang secara otomatis akan mengekstrak string ke file values.xml menggunakan id sumber daya yang dihasilkan berdasarkan teks? Itu akan sangat membantu. Kemudian seseorang bisa pergi dan refcator nama id sumber daya menjadi sesuatu yang lebih pendek.
Farrukh Najmi
Saya tidak tahu otomatis, tetapi saya yakin jika Anda menyorot salah satu string dan menekan Option-Enter, Anda akan mendapatkan opsi untuk mengekstrak string itu secara otomatis, tetapi Anda harus mengetikkan namanya secara manual.
Kevin Coppock
3
Memberi +1 pada fitur Android Studio yang sangat keren. Adakah yang menemukan cara untuk mengecualikan pesan android.util.Log dari hasil? (sekitar 95% dari hasil saya!)
Ben Clayton
6
Untuk informasi: Android Studio 1.2.2 menambahkan opsi baru di "Run Inspection By Name" => "Hardcode strings". Tampaknya lebih dapat diandalkan dengan versi saat ini daripada "teks hardcode". Tautan
PAD
@PAD Anda harus menuliskannya sebagai jawaban. Teks hardcode hanya mengembalikan file xml. ty :)
Maor Hadad
11

Untuk platform Windows, cara terbaik yang saya temukan adalah ini:

Anda dapat menggunakan pintasan ini Ctrl Alt Shift Idan mencari,

Teks Hardcode

di bilah pencarian.

Anda dapat memilih modul yang sesuai di mana Anda ingin mencari string yang di-hardcode dan itu akan memberi Anda daftar semua String bersama-sama.

Pilihan untuk memilih modul

TapanHP
sumber
1

Jika Anda hanya ingin menemukan semua string kode keras di semua file tata letak saja, Anda dapat melakukannya dengan sangat cepat dengan menjalankan -

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

Catatan -
1. greptidak dapat digunakan di windows
2. Pertama cdke layoutdirektori proyek
3. Jawaban kcoppock bagus, tapi memakan waktu terlalu banyak

Vinayak Garg
sumber
perintah grep berfungsi dengan baik, tetapi tambahkan juga cara mengabaikan penyatuan data dalam perintah
kashyap
1

Gunakan kombinasi Ctrl+ Shift+ Funtuk Windows untuk mencari di mana-mana, ini juga menunjukkan pratinjau.

Gunakan Ctrl+ Fkombinasi untuk Windows untuk mencari file saat ini.

Gunakan kombinasi Shift+ Shift(Shift Ganda) untuk Windows untuk mencari File Proyek Proyek.

Mungkin tidak tersedia untuk versi yang lebih lama.

Jitesh Prajapati
sumber
1

Apa yang bekerja dengan baik untuk saya adalah mencari di seluruh proyek menggunakan regex:

android: text = "[az]

masukkan deskripsi gambar di sini

Untuk menemukan di dalam kelas kotlin / java itu:

[.] text = "[az]

masukkan deskripsi gambar di sini

[.] setText ("

masukkan deskripsi gambar di sini

jangan lupa untuk menekan tombol. * biru di bagian paling akhir dari gambar di atas

Igor Maia Romcy
sumber