¿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.

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


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.


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


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


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.


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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.