¿Cómo puedo encontrar todas las cadenas codificadas en mi proyecto en Android Studio?

89

Necesito encontrar y extraer todas las cadenas codificadas en mi proyecto en Android Studio (beta) 0.84. Necesito una herramienta de análisis estático como Find Bugs que haga esto por mí de una sola vez y me permita revisar cada mensaje y extraer la cadena a los archivos de recursos. Aún mejor sería si todo el proceso estuviera automatizado.

En Android Studio (beta) 0.84, File / Setting / FindBugs-IDEA muestra I18N como una opción en la pestaña Reporting. Pero simplemente no puedo averiguar cómo hacer que funcione.

Gracias por cualquier sugerencia.

Farrukh Najmi
fuente

Respuestas:

125

Como me sugirieron @Maor Hadad y otros upvotes: convierto mi comentario en una respuesta, entonces:

Desde Android Studio 1.2.2, hay una nueva opción en

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

Lo usé y parece bastante más confiable con la versión actual que el "texto codificado" (que verifica solo archivos xml).

Visto aquí enlace

ALMOHADILLA
fuente
32
Eso sí, la Hardcoded Textinspección devuelve los textos codificados en los .XMLarchivos, mientras que la Hardcoded Stringsinspección devuelve los textos codificados en los .javaarchivos.
Loyalar
Vea mi respuesta a un problema similar aquí stackoverflow.com/a/56121083/3904109
DragonFire
Tenía una tarea similar pero para mi Proyecto Flutter. La inspección mencionada anteriormente no produjo los resultados esperados, así que probé una expresión regular. ".+\Q\Esi sustituye las comillas dobles por una simple, obtendrá todas las cadenas entre comillas simples.
pbertsch
115

Vaya a "Analizar> Ejecutar inspección por nombre ..." y escriba "Texto codificado". Ejecute ese en todo su proyecto, y debería obtener un panel de resultados de inspección que mostrará las instancias de texto codificadas.

También puede ir a Android Studio> Preferencias> Inspecciones> Texto codificado y especificar exactamente cómo se ejecuta y qué casos especiales (si los hay) se excluyen de la inspección.

Kevin Coppock
fuente
2
¡Esto funcionó increíblemente! Gracias. Por cierto, ¿hay alguna herramienta que extraiga automáticamente cadenas al archivo values.xml utilizando una identificación de recurso generada en función del texto? Eso sería de gran ayuda. Entonces uno puede simplemente ir y refcator los nombres de ID de recurso a algo más corto.
Farrukh Najmi
No sé de automático, pero creo que si resalta una de las cadenas y presiona Opción-Enter, obtendrá una opción para extraer automáticamente esa cadena, pero tendrá que escribir el nombre manualmente.
Kevin Coppock
3
+1 una característica muy interesante de Android Studio. ¿Alguien ha encontrado una manera de excluir los mensajes android.util.Log de los resultados? (¡aproximadamente el 95% de mis resultados!)
Ben Clayton
6
Para obtener información: Android Studio 1.2.2 agregó una nueva opción en "Ejecutar inspección por nombre" => "Cadenas codificadas". Parece bastante más confiable con la versión actual que el "texto codificado". Visto aquí enlace
PAD
@PAD deberías escribirlo como respuesta. El texto codificado devuelve solo archivos xml. ty :)
Maor Hadad
11

Para la plataforma Windows, la mejor manera que encontré es esta:

Puede utilizar este acceso directo Ctrl Alt Shift Iy buscar,

Texto codificado

en la barra de búsqueda.

Puede seleccionar el módulo apropiado en el que desea buscar cadenas codificadas y le dará la lista de todas las cadenas juntas.

Opciones para seleccionar módulos

TapanHP
fuente
1

Si solo desea encontrar todas las cadenas codificadas en todos los archivos de diseño, puede hacerlo muy rápidamente ejecutando:

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

Notas:
1. grepno se puede usar en Windows
2. Primero cden el layoutdirectorio del proyecto
3. La respuesta de kcoppock es excelente, pero lleva demasiado tiempo

Vinayak Garg
fuente
El comando grep funciona bien, pero agregue cómo ignorar el enlace de datos en el comando también
kashyap
1

Use la combinación Ctrl+ Shift+ Fpara que Windows busque en todas partes, también muestra la vista previa.

Use la combinación Ctrl+ Fpara Windows para buscar en el archivo actual.

Use la combinación Shift+ Shift(doble mayúscula) para Windows para buscar el archivo de proyecto del proyecto.

Puede que no esté disponible para versiones anteriores.

Jitesh Prajapati
fuente
0

Lo que funcionó bien para mí fue buscar en todo el proyecto usando expresiones regulares:

android: text = "[az]

herramientas: texto = "[az]

ingrese la descripción de la imagen aquí

en este caso, solo en archivos xml (buscando android: text = "....)

no olvide tocar el botón azul. * al final de esta imagen de arriba

Igor Maia Romcy
fuente