// 
//     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"]
--



. 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"]
--



. 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"]
--



. 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"]
--



. 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"]
--



. (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.


. Clique em Editar Script. A área de texto Script é exibida.

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



. 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"]
--



. Clique em Salvar abaixo da área de texto Script ou pressione Ctrl-S no Editor para salvar suas edições.


. 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"]
--



. Clique em Inspecionar.
As alterações de refatoração sugeridas são exibidas no painel de exibição.


. 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>>

