Android Studio의 프로젝트에서 하드 코딩 된 모든 문자열을 어떻게 찾을 수 있습니까?


89

Android Studio (베타) 0.84에서 내 프로젝트의 모든 하드 코딩 된 문자열을 찾아 추출해야합니다. Find Bugs와 같은 정적 분석 도구가 필요합니다. 한 번에이 작업을 수행하고 각 메시지를 단계별로 진행하고 문자열을 리소스 파일로 추출 할 수 있습니다. 전체 프로세스가 자동화된다면 더 좋을 것입니다.

Android Studio (베타) 0.84에서 File / Setting / FindBugs-IDEA는보고 탭의 옵션으로 I18N을 표시합니다. 그러나 나는 그것을 작동시키는 방법을 알 수 없습니다.

제안 해 주셔서 감사합니다.

답변:


125

으로 @Maor 하닷 과 다른 upvotes이 나를 제안 : 그래서, 대답에 내 의견을 변환 :

Android Studio 1.2.2 이후에는 새로운 옵션이 있습니다.

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

나는 그것을 사용했고 "hardcoded text"(xml 파일 만 확인하는)보다 현재 버전에서 훨씬 더 신뢰할 수있는 것처럼 보인다.

여기에서 본 링크


32
당신 마음의 Hardcoded Text검사는의 하드 코드 된 텍스트를 반환 .XML반면, 파일을 Hardcoded Strings검사 반환에 하드 코드 된 텍스트 .java파일입니다.
Loyalar 2016-06-29

비슷한 문제에 대한 내 대답을 여기에서 참조하십시오. stackoverflow.com/a/56121083/3904109
DragonFire

비슷한 작업이 있었지만 Flutter Project를 사용했습니다. 위에서 언급 한 검사는 예상 한 결과를 가져 오지 않았으므로 Regex를 시도했습니다. ".+\Q\E큰 따옴표를 단일로 대체하면 작은 따옴표 안에있는 모든 문자열을 얻습니다.
pbertsch

115

"분석> 이름으로 검사 실행 ..."으로 이동하여 "하드 코딩 된 텍스트"를 입력합니다. 전체 프로젝트에 대해이를 실행하면 하드 코딩 된 텍스트 인스턴스를 표시하는 검사 결과 패널이 표시됩니다.

Android 스튜디오> 환경 설정> 검사> 하드 코딩 된 텍스트로 이동하여 실행 방법과 검사에서 제외되는 특수 사례 (있는 경우)를 지정할 수도 있습니다.


2
이것은 훌륭하게 작동했습니다! 감사. BTW, 텍스트를 기반으로 생성 된 리소스 ID를 사용하여 values.xml 파일에 문자열을 자동으로 추출하는 도구가 있습니까? 그것은 큰 도움이 될 것입니다. 그런 다음 리소스 ID 이름을 더 짧은 이름으로 다시 지정할 수 있습니다.
Farrukh Najmi

자동에 대해서는 잘 모르겠지만 문자열 중 하나를 강조 표시하고 Option-Enter를 누르면 해당 문자열을 자동으로 추출하는 옵션이 표시되지만 이름을 수동으로 입력해야합니다.
Kevin Coppock 2014

3
Android Studio의 멋진 기능을 +1하세요. 결과에서 android.util.Log 메시지를 제외하는 방법을 찾은 사람이 있습니까? (내 결과의 약 95 %!)
Ben Clayton

6
정보 : Android Studio 1.2.2는 "이름으로 검사 실행"=> "하드 코딩 된 문자열"에 새 옵션을 추가했습니다. 현재 버전에서는 "하드 코딩 된 텍스트"보다 훨씬 더 안정적입니다. 여기에서 본 링크
PAD

@PAD 답으로 써야합니다. 하드 코딩 된 텍스트는 xml 파일 만 반환합니다. ty :)
Maor Hadad

11

Windows 플랫폼의 경우 가장 좋은 방법은 다음과 같습니다.

이 단축키를 사용하여 다음 Ctrl Alt Shift I을 검색 할 수 있습니다 .

하드 코딩 된 텍스트

검색 창에서.

하드 코딩 된 문자열을 검색하려는 적절한 모듈을 선택할 수 있으며 모든 문자열 목록을 함께 제공합니다.

모듈 선택 옵션


1

모든 레이아웃 파일에서만 하드 코딩 된 문자열을 모두 찾으려면 다음을 실행하여 매우 빠르게 검색 할 수 있습니다.

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

알아두기-1
. grepWindows에서 사용할 수 없습니다
. 2. 먼저 cd프로젝트 layout디렉토리
3. kcoppock 답변은 훌륭하지만 시간이 너무 많이 걸립니다.


grep 명령은 잘 작동하지만 명령에서 데이터 바인딩을 무시하는 방법도 추가합니다
kashyap

1

Ctrl+ Shift+ 사용FWindows의 경우 조합을 하여 모든 곳에서 검색하면 미리보기도 표시됩니다.

Ctrl+ 사용F현재 파일에서 검색 Windows에 조합을 합니다.

Shift+ 사용Shift (더블 시프트) Windows 용 조합은 프로젝트의 프로젝트 파일을 검색 할 수 있습니다.

이전 버전에서는 사용할 수 없습니다.


0

나를 위해 잘 작동 한 것은 정규식을 사용하여 전체 프로젝트를 검색하는 것입니다.

android : text = "[az]

도구 : text = "[az]

여기에 이미지 설명 입력

이 경우 xml 파일에서만 (android : text = ".....)

위 이미지의 맨 끝에있는. * 파란색 버튼을 탭하는 것을 잊지 마십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.