Como encontrar todas as classes não utilizadas no Intellij Idea?


126

Existe uma inspeção "Declaração não utilizada", que pode encontrar todo o código não utilizado no Intellij Idea. (veja esta pergunta ) Mas eu quero encontrar todas as classes não utilizadas, não métodos, variáveis ​​etc. Somente classes. (é difícil encontrar apenas classes na lista de resultados de 3000). Como eu posso fazer isso?


Basta executar a inspeção, clique no botão direito e veja isso na lista de menus.
Cherry

Essas são duas perguntas - elas seriam melhores como perguntas separadas. Também serialVersionXXX é uma má ideia para a maioria dos projetos.
Engenheiro de Software

É uma péssima ideia, porque poucos desenvolvedores sabem para que serve e quase sempre são mal utilizados. É extremamente raro em java usar o mecanismo de serialização para ler e gravar objetos no nível de bytes, e se você fizer a versão serial padrão, geralmente é suficiente para fornecer segurança. Uma serialVersion codificada deve ser atualizada manualmente toda vez que a interface de uma classe for alterada e toda vez que a lista de campos for alterada - invariavelmente, os desenvolvedores não fazem isso porque simplesmente não entendem para que serve a serialVersion. O principal motivo para vê-lo no código é por causa do eclipse.
Software Engineer

Respostas:


218
  • Pressione Ctrl+ Shift+ A(no Mac Command+ Shift+ A)
  • Digite "declaração não utilizada"
  • Clique duas vezes em "Declaração não utilizada"

Configurações aparecerão

  • Clique em Java / Redundância de declaração / Declaração não utilizada
  • no canto inferior direito, selecione "Configurações do editor on the fly"
  • desmarque os campos de verificação, ..., verifique os parâmetros. Somente Classes de Cheque devem ser marcadas.
  • pressione OK

As configurações são fechadas

  • Na barra de menus, clique em Analisar / Executar inspeção por nome (ou Ctrl+ Alt+ Shift+ I- no Mac Command+ Option+ Shift+ I)
  • Inserir texto "Declação não utilizada"
  • Selecione "Declaração não utilizada Java | Redundância de declaração"

A pesquisa inicia

  • Verifique o estado do trabalho na parte inferior do Idea, quando terminar: aproveite os resultados e a ótima sensação de limpar o código danificado. :)

Se você postar quase exatamente a mesma resposta em alguns minutos para várias perguntas, sugira que uma delas seja uma duplicata da outra. marque-os como tal.
7406 Jaap

3
Um deles é especialmente para uso do IntelliJ Idea, outro é para Java geral. Eu não diria que estas são duplicações.
BlondCode 7/07

7
Ele ignora a configuração "Somente classes de verificação", para que eu receba muitos e muitos resultados indesejados (métodos, campos, etc. não utilizados, e, o que é pior, muitos deles sendo falsos positivos, por vários motivos ...).
Thelawnmowerman 5/03

6
Há uma alteração na opção de verificar apenas as classes do Studio 3.0 após a etapa: Selecione "Declaração não utilizada Java | Redundância de declaração"
Sourabh Saldi 5/17/17

4
Não precisamos alterar as configurações globais para executar uma inspeção com parâmetros diferentes. A ação Executar inspeção por nome exibirá as configurações da inspeção.
TWIStErRob

11

Eu não acho isso possível. Suspeito que esse recurso seja intencionalmente deixado de fora dos IDEs porque não pode ser usado com segurança da mesma maneira que outras refatorações "remover XXX não utilizado".

As declarações não utilizadas que a IDEA (e AFAIK, NetBeans) procuram são para membros particulares e variáveis ​​locais: coisas que não são acessíveis, mesmo dinamicamente, fora da classe ou escopo. (Bem, pelo menos sem fazer coisas com o Reflection ou o JVM hacking que você não deveria.) Não importa o que o código externo faça com sua biblioteca, ele não fará com que essas coisas sejam usadas, porque seu escopo é limitado e o O IDE pode ver tudo isso. O compilador pode determinar isso observando apenas seu código.

Para as classes, mesmo que elas não tenham publicacesso, elas podem ser referenciadas dinamicamente com Class.forName(), e isso realmente acontece no código ativo. Portanto, mesmo que aparentemente não sejam usados ​​no código do seu projeto, eles podem ser usados, dependendo do código que você ou o código externo usar na sua biblioteca. Portanto, o IDE não pode garantir que a remoção dessas classes não mude o comportamento observável externamente.

É por isso que acho que a IDEA simplesmente não fornece esse comportamento: pode dar aos usuários falsas expectativas de segurança, e removê-las não é uma refatoração segura.


6
Bem, ele esmaece o nome da classe quando realmente exibe o arquivo e oferece uma ação intencional para "remover a classe não utilizada"; tudo o que falta é poder encontrá-las automaticamente. Certamente, existem maneiras de quebrar as coisas, mas isso é verdade para muitas refatorações.
Rob Fletcher

2
Class.forName () não pode ser diferente, do ponto de vista da segurança da análise, do que usar reflexão para ler / definir campos particulares em uma classe. Portanto, se o IntelliJ fizer isso para os campos, essa não é uma resposta aceitável para o motivo de não fazer isso também para as aulas. Em ambos os casos, o resultado da análise não é 100% garantido como seguro.
Cães

1

Talvez você deva examinar a Unused Symbolinspeção com as seguintes configurações:

insira a descrição da imagem aqui


Ha! Parece que não :-) Desliguei tudo no grupo "declaração não utilizada" e deixei apenas "Símbolo não utilizado" apenas com "classes de verificação". Mas os resultados não mudam. :-(
Cereja

@Cherry, muito em ouvir ... Talvez você deve arquivar um defeito a JetBrains
Vic

1

Não tenho certeza se isso responderá à sua pergunta, mas eu usei uma ferramenta no Fortify no passado para executar regras de revisão de código no projeto, que apontam precisamente para importações não utilizadas, código morto, classes não utilizadas etc. É um software pago, mas eu tenho certeza de que haverá alguns plugins / softwares gratuitos disponíveis para o mesmo.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.