Como posso encontrar todas as strings codificadas em meu projeto no Android Studio

92

Preciso encontrar e extrair todas as strings codificadas em meu projeto no Android Studio (beta) 0.84. Preciso de uma ferramenta de análise estática como Find Bugs para fazer isso de uma vez e permitir que eu avance por cada mensagem e extraia a string para arquivos de recursos. Melhor ainda seria se todo o processo fosse automatizado.

No Android Studio (beta) 0.84, File / Setting / FindBugs-IDEA mostra I18N como uma opção na guia Reporting. Mas simplesmente não consigo descobrir como fazer isso funcionar.

Obrigado por qualquer sugestão.

Farrukh Najmi
fonte

Respostas:

130

Como @Maor Hadad e outros votos positivos me sugeriram: Eu converto meu comentário em uma resposta, então:

Desde o Android Studio 1.2.2, há uma nova opção em

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

Usei-o e parece muito mais confiável com a versão atual do que "texto codificado" (que verifica apenas arquivos xml).

Link visto aqui

ALMOFADA
fonte
33
Lembre-se, a Hardcoded Textinspeção retorna os textos codificados permanentemente nos .XMLarquivos, enquanto a Hardcoded Stringsinspeção retorna os textos codificados permanentemente nos .javaarquivos.
Loyalar
Por favor, veja minha resposta a um problema semelhante aqui stackoverflow.com/a/56121083/3904109
DragonFire
Eu tinha uma tarefa semelhante, mas para o meu Projeto Flutter. A inspeção citada acima não trouxe os resultados esperados, então tentei um Regex. ".+\Q\Ese você substituir a aspa dupla por uma simples, obterá todas as Strings entre aspas simples.
pbertsch
117

Vá para "Analisar> Executar inspeção por nome ..." e digite "Texto codificado". Execute esse em todo o projeto e você deverá obter um painel de resultados da inspeção que mostrará as instâncias de texto codificadas permanentemente.

Você também pode ir para Android Studio> Preferências> Inspeções> Texto codificado e especificar exatamente como ele é executado e quais casos especiais (se houver) são excluídos da inspeção.

Kevin Coppock
fonte
2
Isso funcionou incrivelmente! Obrigado. BTW, há alguma ferramenta que extraia automaticamente strings para o arquivo values.xml usando um ID de recurso gerado com base no texto? Isso seria uma grande ajuda. Em seguida, pode-se apenas refcator os nomes de id de recursos para algo mais curto.
Farrukh Najmi
Não sei de automático, mas acredito que se você destacar uma das strings e clicar em Option-Enter, terá a opção de extrair automaticamente aquela string, mas terá que digitar o nome manualmente.
Kevin Coppock
3
+1 um recurso muito legal do Android Studio. Alguém encontrou uma maneira de excluir as mensagens android.util.Log dos resultados? (cerca de 95% dos meus resultados!)
Ben Clayton
6
Para obter informações: o Android Studio 1.2.2 adicionou uma nova opção em "Executar inspeção por nome" => "Strings codificadas". Parece muito mais confiável com a versão atual do que "texto codificado". Visto aqui link
PAD
@PAD você deve escrever como uma resposta. O texto codificado retorna apenas arquivos xml. ty :)
Maor Hadad,
11

Para a plataforma Windows, a melhor maneira que encontrei é esta:

Você pode usar este atalho Ctrl Alt Shift Ie pesquisar,

Texto codificado

na barra de pesquisa.

Você pode selecionar o módulo apropriado no qual deseja pesquisar as strings codificadas e ele lhe dará a lista de todas as strings juntas.

Opções para selecionar módulos

TapanHP
fonte
1

Se você deseja apenas encontrar todas as strings codificadas em todos os arquivos de layout, você pode fazer isso rapidamente executando -

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

Notas -
1. grepnão pode ser usado no Windows
2. Primeiro cdpara o layoutdiretório do projeto
3. A resposta do kcoppock é ótima, mas leva muito tempo

Vinayak Garg
fonte
O comando grep funciona bem, mas adicione como ignorar a ligação de dados no comando também
kashyap
1

Use a combinação Ctrl+ Shift+ Fpara o Windows pesquisar em todos os lugares, ele mostra a visualização também.

Use Ctrl+ Fcombinação para Windows para pesquisar no arquivo atual.

Use a combinação Shift+ Shift(Shift duplo) para o Windows para pesquisar o arquivo de projeto do projeto.

Pode não estar disponível para versões mais antigas.

Jitesh Prajapati
fonte
1

O que funcionou bem para mim foi pesquisar em todo o projeto usando regex:

android: text = "[az]

insira a descrição da imagem aqui

Para encontrar dentro dessas classes kotlin / java:

[.] text = "[az]

insira a descrição da imagem aqui

[.] setText ("

insira a descrição da imagem aqui

não se esqueça de tocar no botão. * azul no final da imagem acima

Igor Maia Romcy
fonte