Làm cách nào để tôi có thể tìm thấy tất cả các chuỗi được mã hóa cứng trong dự án của mình trong Android Studio


89

Tôi cần tìm và trích xuất tất cả các chuỗi được mã hóa cứng trong dự án của mình trong Android Studio (beta) 0.84. Tôi cần một công cụ phân tích tĩnh như Find Bugs thực hiện việc này cho tôi trong một lần và cho phép tôi xem qua từng thông báo và trích xuất chuỗi thành các tệp tài nguyên. Sẽ tốt hơn nếu toàn bộ quy trình được tự động hóa.

Trong Android Studio (beta) 0.84, Tệp / Cài đặt / FindBugs-IDEA hiển thị I18N dưới dạng một tùy chọn trong tab Báo cáo. Nhưng tôi không thể tìm ra cách làm cho nó hoạt động.

Cảm ơn vì bất kỳ đề xuất.

Câu trả lời:


124

Như @Maor Hadad và những người ủng hộ khác đã đề xuất tôi: Tôi chuyển đổi nhận xét của mình thành một câu trả lời, vì vậy:

Kể từ Android Studio 1.2.2, có một tùy chọn mới trong

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

Tôi đã sử dụng nó và nó có vẻ khá đáng tin cậy với phiên bản hiện tại hơn là "văn bản mã cứng" (chỉ kiểm tra các tệp xml).

Đã thấy ở đây liên kết


32
Xin lưu ý bạn, quá trình Hardcoded Textkiểm tra trả về các văn bản được mã hóa cứng trong .XMLtệp, trong khi quá trình Hardcoded Stringskiểm tra trả về các văn bản được mã hóa cứng trong .javatệp.
Loyalar

Vui lòng xem câu trả lời của tôi cho sự cố tương tự tại đây stackoverflow.com/a/56121083/3904109
DragonFire

Tôi đã có một nhiệm vụ tương tự nhưng cho Dự án Flutter của tôi. Việc kiểm tra được đề cập ở trên không mang lại kết quả như mong đợi, vì vậy tôi đã thử một chiếc Regex. ".+\Q\Enếu bạn thay thế dấu nháy kép bằng dấu nháy đơn, bạn sẽ nhận được tất cả các Chuỗi bên trong dấu nháy đơn.
pbertsch

115

Đi tới "Phân tích> Chạy kiểm tra theo tên ..." và nhập "Văn bản mã cứng". Chạy cái đó với toàn bộ dự án của bạn và bạn sẽ nhận được bảng kết quả kiểm tra sẽ hiển thị các phiên bản văn bản được mã hóa cứng.

Bạn cũng có thể đi tới Android Studio> Tùy chọn> Kiểm tra> Văn bản được mã hóa cứng và chỉ định chính xác cách nó chạy và những trường hợp đặc biệt nào (nếu có) được loại trừ khỏi kiểm tra.


2
Điều này hoạt động đáng kinh ngạc! Cảm ơn. BTW, có bất kỳ công cụ nào tự động trích xuất chuỗi vào tệp giá trị.xml bằng cách sử dụng id tài nguyên được tạo dựa trên văn bản không? Đó sẽ là một sự trợ giúp tuyệt vời. Sau đó, người ta có thể đi và sắp xếp lại các tên id tài nguyên thành một cái gì đó ngắn hơn.
Farrukh Najmi,

Tôi không biết về tự động, nhưng tôi tin rằng nếu bạn đánh dấu một trong các chuỗi và nhấn Option-Enter, bạn sẽ nhận được tùy chọn để tự động trích xuất chuỗi đó, nhưng bạn sẽ phải nhập tên theo cách thủ công.
Kevin Coppock

3
+1 một tính năng rất hay của Android Studio. Có ai tìm ra cách loại trừ tin nhắn android.util.Log khỏi kết quả không? (khoảng 95% kết quả của tôi!)
Bến Clayton

6
Để biết thông tin: Android Studio 1.2.2 đã thêm một tùy chọn mới trong "Chạy kiểm tra theo tên" => "Chuỗi mã cứng". Nó có vẻ khá đáng tin cậy với phiên bản hiện tại hơn là "văn bản được mã hóa cứng". Đã thấy ở đây liên kết
PAD

@PAD bạn nên viết nó như một câu trả lời. Văn bản được mã hóa cứng chỉ trả về các tệp xml. ty :)
Maor Hadad

11

Đối với nền tảng Windows, Cách tốt nhất tôi tìm thấy là:

Bạn có thể sử dụng phím tắt này Ctrl Alt Shift Ivà tìm kiếm,

Văn bản được mã hóa cứng

trong thanh tìm kiếm.

Bạn có thể chọn mô-đun thích hợp mà bạn muốn tìm kiếm các chuỗi Hardcoded và nó sẽ cung cấp cho bạn danh sách tất cả các Chuỗi cùng nhau.

Tùy chọn để chọn mô-đun


1

Nếu bạn chỉ muốn tìm tất cả các chuỗi được mã hóa cứng trong tất cả các tệp bố cục, bạn có thể làm như vậy rất nhanh bằng cách chạy -

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

Lưu ý -
1. grepkhông thể sử dụng trên windows
2. First cdto project's layoutdir
3. Câu trả lời kcoppock rất tuyệt, nhưng mất quá nhiều thời gian


lệnh grep hoạt động tốt, nhưng thêm cách bỏ qua databinding trong lệnh cũng được
kashyap

1

Sử dụng Ctrl+ Shift+ Fkết hợp cho Windows để tìm kiếm khắp mọi nơi, nó show cũng xem trước.

Sử dụng tổ hợp Ctrl+ Fcho Windows để tìm kiếm trong tệp hiện tại.

Sử dụng tổ hợp Shift+ Shift(Double Shift) cho Windows để tìm kiếm Tệp dự án của Dự án.

Có thể không có sẵn cho các phiên bản cũ hơn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.