Câu hỏi Làm thế nào tìm thấy tất cả các lớp học không sử dụng trong Intellij Idea?


Có một kiểm tra "khai báo chưa sử dụng" có thể tìm thấy tất cả các mã không sử dụng trong Intellij Idea. (xem câu hỏi này) Nhưng tôi muốn tìm tất cả các lớp chưa sử dụng, không phải phương pháp, biến, v.v ... Chỉ có các lớp học. (rất khó để chỉ tìm thấy các lớp học trong danh sách kết quả 3000). Làm thế nào tôi có thể làm điều đó?


76
2018-03-20 02:03


gốc


Chỉ cần chạy nút kiểm tra nhấp chuột phải và xem điều này trong danh sách menu. - Cherry
Đó là hai câu hỏi - chúng sẽ tốt hơn như những câu hỏi riêng biệt. Ngoài ra serialVersionXXX là một ý tưởng tồi cho hầu hết các dự án. - Engineer Dollery
Tại sao ý tưởng tồi? Bạn có thể giải thích thêm một chút không? :-) - Cherry
Đó là một ý tưởng tồi bởi vì rất ít nhà phát triển biết nó là cái gì, và nó hầu như luôn bị lạm dụng. Rất hiếm khi sử dụng java để sử dụng cơ chế tuần tự hóa để đọc và ghi các đối tượng ở mức byte, và nếu bạn thực hiện phiên bản nối tiếp mặc định thường đủ để cung cấp sự an toàn. Một serialVersion mã hóa cứng phải được cập nhật thủ công mỗi lần giao diện của một lớp thay đổi, và mỗi khi danh sách trường thay đổi - luôn luôn, các nhà phát triển không làm điều này bởi vì họ chỉ đơn giản là không hiểu những gì serialVersion là cho. Lý do chính bạn thấy nó trong mã là vì nhật thực. - Engineer Dollery
Để biết thêm thông tin về serialVersionUID, hãy đọc phần này, đặc biệt là đoạn cuối: ibm.com/developerworks/community/blogs/woolf/entry/… - Engineer Dollery


Các câu trả lời:


  • nhấn Ctrl+Shift+A
  • Nhập "khai báo chưa sử dụng"
  • Nhấp đúp vào "Khai báo chưa sử dụng"

Cài đặt sẽ bật lên

  • Nhấp vào Java / Tuyên bố dự phòng / Khai báo chưa sử dụng
  • ở dưới cùng bên phải, chọn "On the fly editor settings"
  • untick check fields, ..., kiểm tra tham số. Chỉ đánh dấu vào các Lớp Kiểm tra.
  • nhấn OK

Seetings đóng

  • Trên thanh menu, nhấp vào Analyze / Run Inspection by Name (hoặc Ctrl+Alt+Shift+tôi)
  • Chèn văn bản "Decla chưa sử dụng"
  • Chọn "Khai báo không sử dụng Java | Dự phòng khai báo"

Tìm kiếm bắt đầu

  • Kiểm tra trạng thái công việc ở dưới cùng của Idea, khi finnished: tận hưởng kết quả và cảm giác tuyệt vời của việc làm sạch mã sai. :)

125
2017-07-07 11:13



Đăng gần như cùng một câu trả lời chính xác trong vòng vài phút cho một vài câu hỏi, gợi ý rằng một trong số đó là bản sao của một câu hỏi khác. hãy đánh dấu chúng như vậy. - Jaap
Một trong số đó là đặc biệt cho việc sử dụng IntelliJ Idea, một ứng dụng khác dành cho Java nói chung. Tôi sẽ không nói đây là những bản sao. - BlondCode
Dựa trên câu trả lời của bạn, điều đó dường như không thực sự quan trọng .... - Jaap
Nó bỏ qua cấu hình "Chỉ kiểm tra lớp", vì vậy tôi nhận được rất nhiều kết quả không mong muốn (các phương thức không sử dụng, các trường, v.v., và điều gì tệ hơn, nhiều trong số chúng là sai tích cực, vì nhiều lý do ...). - thelawnmowerman
Có một sự thay đổi trong Studio 3.0 Chỉ có tùy chọn kiểm tra các lớp học đến sau bước: Chọn "Khai báo không sử dụng Java | Dự phòng khai báo" - Android Fanatic


Tôi không nghĩ rằng điều này là doable. Tôi nghi ngờ tính năng này được cố ý bỏ ra khỏi IDE vì nó không thể được sử dụng một cách an toàn theo cách khác mà "gỡ bỏ không sử dụng XXX" cấu trúc lại có thể.

Các khai báo không sử dụng IDEA (và AFAIK, NetBeans) dành cho các thành viên riêng và các biến cục bộ: những thứ không thể truy cập, thậm chí động, từ bên ngoài lớp hoặc phạm vi đó. (Vâng, ít nhất là không làm những việc với Reflection hoặc JVM hack mà bạn không được phép.) Không có vấn đề gì bên ngoài mã với thư viện của bạn, nó sẽ không gây ra những điều được sử dụng, bởi vì phạm vi của họ là hạn chế và IDE có thể thấy tất cả. Trình biên dịch có thể xác định điều này bằng cách chỉ xem mã của bạn.

Đối với các lớp học, ngay cả khi họ không có public truy cập, chúng có thể được tham chiếu động với Class.forName()và điều này thực sự xảy ra trong mã trực tiếp. Vì vậy, ngay cả khi chúng không rõ ràng được sử dụng trong mã của dự án của bạn, chúng có thể được sử dụng tùy thuộc vào những gì bạn hoặc mã bên ngoài sử dụng thư viện của bạn chạy. Vì vậy, IDE không thể đảm bảo rằng việc loại bỏ các lớp đó sẽ không thay đổi hành vi quan sát bên ngoài.

Đó là lý do tại sao tôi nghĩ IDEA không cung cấp hành vi này: nó có thể mang lại cho người dùng những kỳ vọng sai về sự an toàn, và loại bỏ chúng không phải là tái cấu trúc an toàn.


8
2018-04-29 04:43



Vâng, nó làm xám ra tên lớp khi thực sự xem tập tin và cung cấp cho bạn một hành động ý định để "loại bỏ lớp không sử dụng", tất cả những gì còn thiếu là để có thể tự động tìm thấy chúng. Chắc chắn có những cách có thể phá vỡ mọi thứ nhưng đó là sự thật của nhiều phép tái cấu trúc. - Rob Fletcher
Nó là doable. Kiểm tra câu trả lời của tôi ... - BlondCode
Class.forName () được cho là không khác biệt gì, từ điểm phân tích an toàn, hơn là sử dụng sự phản chiếu để đọc / thiết lập các trường riêng trên một lớp. Vì vậy, nếu IntelliJ sẽ làm điều này cho các lĩnh vực, đó không phải là một câu trả lời chấp nhận được vì sao nó sẽ không làm điều đó cho các lớp học là tốt. Trong cả hai trường hợp, kết quả phân tích không đảm bảo 100% an toàn. - Dogs


Có lẽ bạn nên nhìn vào Unused Symbol kiểm tra với các cài đặt sau:

enter image description here


0
2018-03-20 08:39



Ha! Dường như không :-) Tôi tắt mọi thứ trong nhóm "khai báo chưa sử dụng" và chỉ để lại "biểu tượng không sử dụng" với "các lớp kiểm tra" mà thôi. Nhưng kết quả không thay đổi. :-( - Cherry
@Cherry, xin lỗi để nghe ... Có lẽ bạn nên gửi một lỗi đến jetbrains - Vic
Xem youtrack.jetbrains.com/issue/IDEA-23477 - CrazyCoder


Tôi không chắc chắn nếu điều này sẽ trả lời câu hỏi của bạn nhưng tôi đã sử dụng một công cụ trong quá khứ như Fortify để chạy các quy tắc xem xét mã trên dự án, đó chính xác chỉ vào các hàng nhập khẩu chưa sử dụng, mã chết, các lớp chưa sử dụng, vv. chắc chắn sẽ có một số plugin / phần mềm miễn phí sẽ có sẵn cho cùng.


0
2018-04-23 07:19