// 
//     Licensed to the Apache Software Foundation (ASF) under one
//     or more contributor license agreements.  See the NOTICE file
//     distributed with this work for additional information
//     regarding copyright ownership.  The ASF licenses this file
//     to you under the Apache License, Version 2.0 (the
//     "License"); you may not use this file except in compliance
//     with the License.  You may obtain a copy of the License at
// 
//       http://www.apache.org/licenses/LICENSE-2.0
// 
//     Unless required by applicable law or agreed to in writing,
//     software distributed under the License is distributed on an
//     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
//     KIND, either express or implied.  See the License for the
//     specific language governing permissions and limitations
//     under the License.
//

= Refatoração com Inspecionar e Transformar no Editor Java do NetBeans IDE
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Refatoração com Inspecionar e Transformar no Editor Java do NetBeans IDE - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Refatoração com Inspecionar e Transformar no Editor Java do NetBeans IDE

O Editor Java do NetBeans IDE 7.1 apresenta uma funcionalidade de Inspecionar e Transformar, que é a ferramenta de refatoração para executar diversas inspeções e transformações de uma só vez em todos os escopos de arquivos selecionados. Ele também permite que um usuário defina uma inspeção personalizada.

Neste tutorial, você aprenderá a executar uma revisão de código usando inspeções com refatoração e um conjunto predefinido de inspeções, gerenciar configurações e criar inspeções personalizadas.



image::images/netbeans-stamp.png[title="O conteúdo desta página se aplica ao NetBeans IDE 8.0"]



== Requisitos

*Para concluir este tutorial, você precisa dos seguintes recursos e softwares.*

|===
|Software ou Recurso |Versão Necessária 

|link:http://netbeans.org/downloads/index.html[+NetBeans IDE+] |Versão 8.0 

|link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+Java Development Kit+] (JDK) |Versão 7 ou 8 
|===


== Configurando o Ambiente do Tutorial

Além do software necessário acima listado, você precisa descompactar o arquivo link:https://netbeans.org/projects/samples/downloads/download/Samples/Java/inspecttransform.zip[+InspectTransform.zip+] na sua pasta de projeto do NetBeans e abri-lo no NetBeans IDE como segue:

image::images/proj.png[]


== Executando Inspeções

A opção Inspeção Única na caixa de diálogo Inspecionar e Transformar (Refatorar > Inspecionar e Transformar) oferece uma ampla variedade de inspeções relativas a determinadas transformações de refatoração. A lista completa de tais operações está disponível na caixa de diálogo Gerenciar Inspeções após clicar no botão Procurar à direita da Inspeção Única.

[.feature]
--
image::images/manage-inspections-small.png[role="left", link="images/manage-inspections.png"]
--

O campo Pesquisar permite verificar se uma inspeção necessária está disponível usando uma pesquisa por palavra-chave. Por exemplo, há diversas inspeções encontradas quando  ``operator``  é pesquisado.

[.feature]
--
image::images/search-small.png[role="left", link="images/search.png"]
--

Cada inspeção tem uma descrição disponível no campo Descrição, na caixa de diálogo Gerenciar Inspeção.

*Para executar uma inspeção a aplicar uma inspeção existente:*

1. Na janela Projetos, selecione o arquivo  ``InspectTransform.java`` .
2. Escolha Refatorar > Inspecionar e Transformar no menu do IDE.
3. Na caixa de diálogo Inspecionar e Transformar, selecione a opção de Inspeção Simples e clique em Procurar.
4. Na caixa de diálogo Gerenciar Inspeções, escolha a  ``Designação substituível por designação de operador``  no nó Problemas de Designação.
5. Clique em OK para fechar a caixa de diálogo Gerenciar Inspeções.
6. Clique em Inspecionar na caixa de diálogo Inspecionar e Transformar.
As alterações de refatoração sugeridas são exibidas no painel de visualização.

[.feature]
--
image::images/single-inspection-small.png[role="left", link="images/single-inspection.png"]
--

7. Clique em Efetuar a Refatoração para aplicar as alterações, se necessário.

<<top,início>>


== Usando Configurações

Um conjunto de refatorações agrupadas constituem a configuração que pode ser executada em seu escopo de interesse, por exemplo, uma classe ou diversas classes, pacotes ou projetos. O IDE oferece as seguintes duas configurações predefinidas:

* <<migrate5,Migrar para JDK 5>>
* <<convert,Migrar para JDK 7>>
* <<migrate8,Migrar para JDK 8>>
* <<organize,Organizar Importações>>


=== Migrar para JDK 5

A configuração  ``Migrar para JDK 5``  disponível no IDE por padrão incorpora essas operações de refatoração como importações estáticas, uso do loop for do JDK 5, demarcação e cancelamento de demarcação desnecessários e troca da aplicação Strings.

[.feature]
--
image::images/jdk5-conf-small.png[role="left", link="images/jdk5-conf.png"]
--

*Observação:* A lista de refatorações na configuração pode ser modificada na lista Inspeções da caixa de diálogo Gerenciar Inspeções, ao selecionar e cancelar a seleção de itens sob o nó  ``Suporte à Migração do JDK`` .


=== Migrar para JDK 7

A configuração  ``Migrar para JDK 7``  disponível no IDE por padrão incorpora essas operações de refatoramento como uso do operador diamante, tentar com conversão de recursos, uso de multicatch, trocar para aplicações String etc.

[.feature]
--
image::images/jdk7-conf-small.png[role="left", link="images/jdk7-conf.png"]
--

*Observação:* A lista de refatorações na configuração pode ser modificada na lista Inspeções da caixa de diálogo Gerenciar Inspeções, ao selecionar e cancelar a seleção de itens sob o nó  ``Suporte à Migração do JDK`` .

*Para executar e aplicar a configuração padrão  ``Migrar para JDK 7`` :*

1. Na janela Projetos, selecione o arquivo  ``PredefinedSet.java`` .
2. Escolha Refatorar > Inspecionar e Transformar no menu do IDE.
3. Na caixa de diálogo Inspecionar e Transformar, selecione a opção Configuração e escolha o conjunto de inspeções  ``Migrar para JDK 7``  na lista drop-down.
4. Clique em Inspecionar.
As alterações que convertem o código para a sintaxe do JDK 7 são exibidas no painel Visualizar.

[.feature]
--
image::images/jdk7-ref-small.png[role="left", link="images/jdk7-ref.png"]
--

5. Clique em Efetuar a Refatoração para aplicar as alterações, se necessário.


=== Migrar para JDK 8

A configuração  ``Migrar para JDK 8``  disponível no IDE por padrão incorpora essas operações de refatoramento como conversão Lambda ou Referência de Membro, importações estáticas, uso de multicatch, troca da aplicação Strings etc.

[.feature]
--
image::images/jdk8-conf-small.png[role="left", link="images/jdk8-conf.png"]
--

*Observação:* A lista de refatorações na configuração pode ser modificada na lista Inspeções da caixa de diálogo Gerenciar Inspeções, ao selecionar e cancelar a seleção de itens sob o nó  ``Suporte à Migração do JDK`` .


=== Organizar Importações

A configuração  ``Organizar Importações``  permite inspecionar a forma como estão organizadas as instruções de importação e refatorar o código, caso desejado. Por default, ela inclui uma inspeção única que verifica se as instruções de importação correspondem as regras de estilo do código especificado.

*Observação:* Para configurar as regras de estilo do código para instruções de importação:

1. Escolha Ferramentas > Opções > Editor > Formatando, na barra de ferramentas principal do IDE.
2. Selecione Java na lista drop-down Linguagem.
3. Selecione Importações na lista drop-down Categoria.
4. Especifique as opções disponíveis, conforme necessário.

[.feature]
--
image::images/org-imports-small.png[role="left", link="images/org-imports.png"]
--

5. Clique em OK para salvar suas edições.

*Para executar e aplicar a configuração default  ``Organizar Importações`` :*

1. Na janela Projetos, selecione o arquivo  ``Import.java`` .
2. Escolha Refatorar > Inspecionar e Transformar no menu do IDE.
3. Na caixa de diálogo Inspecionar e Transformar, selecione a opção Configuração e escolha o item  ``Organizar Importações`` .
4. Clique em Inspecionar.
O painel de visualização exibe uma ocorrência proposta para a seção Importar do arquivo  ``Imports.java``  para alinhá-la com as regras de estilo de código especificadas.

[.feature]
--
image::images/imports-ref-small.png[role="left", link="images/imports-ref.png"]
--

5. Clique em Efetuar a Refatoração para aplicar as alterações, se necessário.

<<top,início>>


== Gerenciando Inspeções Personalizadas

Uma inspeção personalizada pode ser criada para instruir o IDE sobre quais estruturas de código devem ser encontradas e como transformá-las.

*Observação:* Para evitar a adição de uma inspeção duplicada no IDE, escolha Refatorar > Inspecionar e Transformar no menu principal, clique em Gerenciar ou Procurar e, na caixa de diálogo Gerenciar Inspeções, use o campo Pesquisar para procurar pela inspeção necessária, antes de criar uma nova inspeção.

*Para criar uma inspeção personalizada:*

1. Escolha Refatorar > Inspecionar e Transformar no menu do IDE.
2. Na caixa de diálogo Inspecionar e Transformar, clique em Gerenciar ou Procurar.
3. Na caixa de diálogo Gerenciar Inspeções, clique em Nova.
Um nó  ``Personalizar > Inspeção``  é criado na lista Inspeções.

[.feature]
--
image::images/custom-hint-small.png[role="left", link="images/custom-hint.png"]
--

4. (Opcional) Clique com o botão direito do mouse em  ``Inspecionar`` , escolha Renomear no menu pop-up, especifique o nome necessário para sua inspeção personalizada (por exemplo,  ``MyCustomInspection`` ) e pressione Enter.
5. Clique em Editar Script. A área de texto Script é exibida.

[.feature]
--
image::images/script-small.png[role="left", link="images/script.png"]
--

6. Digite a descrição e o código da inspeção na área de texto Script ou clique em Abrir no Editor e especifique o mesmo no arquivo  ``MyCustomInspection.hint`` .

[.feature]
--
image::images/hint-file-small.png[role="left", link="images/hint-file.png"]
--

7. Clique em Salvar abaixo da área de texto Script ou pressione Ctrl-S no Editor para salvar suas edições.
8. Clique em OK para fechar a caixa de diálogo Gerenciar Inspeções ou feche o arquivo  ``MyCustomInspection.hint``  no Editor.
Sua inspeção personalizada está feita e pronta para ser aplicada.

*Para executar a inspeção personalizada que você criou:*

1. Escolha Refatorar > Inspecionar e Transformar no menu do IDE.
2. Na lista Inspecionar da caixa de diálogo Inspecionar e Transformar, especifique um arquivo, pacote ou projetos a serem inspecionados. Alternativamente, clique no botão na direita para abrir a caixa de diálogo Escopo Personalizado, para especificar o código personalizado a ser inspecionado.
3. Selecione a opção Inspeção Única e escolha a inspeção  ``MyCustomInspection`` .

[.feature]
--
image::images/mycustomhint-small.png[role="left", link="images/mycustomhint.png"]
--

4. Clique em Inspecionar.
As alterações de refatoração sugeridas são exibidas no painel de exibição.
5. Clique em Efetuar a Refatoração para aplicar as alterações, se necessário.

<<top,início>>


== Resumo

Este tutorial cobre os usos mais frequentes da funcionalidade Inspecionar e Transformar. Observe que com a funcionalidade Inspecionar e Transformar, você também pode executar a refatoração personalizada no escopo do projeto, ou aplicar determinadas configurações de refatoração à diversos projetos abertos no IDE, etc..

<<top,início>>

link:/about/contact_form.html?to=3&subject=Feedback:%20Refactoring%20with%20Inspect%20and%20Transform%20in%20the%20NetBeans%20IDE%20Java%20Editor[+Enviar Feedback neste Tutorial+]



== Consulte Também

Para ver o material relacionado, consulte os seguintes documentos:

* link:http://www.oracle.com/pls/topic/lookup?ctx=nb8000&id=NBDAG613[+Usando Dicas de Análise de Código-fonte e Refatoração+] em _Desenvolvendo Aplicações com o NetBeans IDE_
* link:http://wiki.netbeans.org/Java_Hints[+Lista Completa de Dicas Java NetBeans+]
* link:http://wiki.netbeans.org/JavaDeclarativeHintsDescriptionSketch[+Descrição de Dicas Declarativas do Java NetBeans+]
* link:code-inspect.html[+Análise de Código Estático no Editor de Java do NetBeans IDE+]
* link:http://wiki.netbeans.org/Refactoring[+Refatoração Simplificada+]
* link:http://platform.netbeans.org/tutorials/nbm-java-hint.html[+Tutorial do Módulo de Dicas Java NetBeans+]

<<top,início>>

