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

= NetBeans IDE での「検査と変換」リファクタリング機能のビデオ
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: NetBeans IDE での「検査と変換」リファクタリング機能のビデオ - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, NetBeans IDE での「検査と変換」リファクタリング機能のビデオ

|===
|このスクリーンキャストは、NetBeans IDE 7.1での新しい「検査と変換」リファクタリング機能に対するサポートについて説明します。このスクリーンキャストでは、リファクタリングを含む検査や事前定義された一連の検査を使用したコードのレビューの実行、構成の管理、およびカスタム検査の作成を行う方法を示します。このスクリーンキャストでは、NetBeans IDE 7.1 Javaエディタが、選択された範囲のファイルに対するコードのリファクタリングにどのように役立つかを示します。

作成者: Alyona Stashkova
時間: 9:12

link:http://bits.netbeans.org/media/refactor-nb71.swf[+フルサイズを視聴/ダウンロード+] (.swf)([Ctrl]を押しながらクリックするとダウンロード、9.4MB)


link:/about/contact_form.html?to=3&subject=Feedback:%20Video%20of%20the%20Inspect%20and%20Refactoring%20Feature%20in%20NetBeans%20IDE%207%20.%201[+ご意見をお寄せください+]
 
|===


== 関連リンク

* link:editor-inspect-transform.html[+NetBeans IDE Javaエディタでの「検査と変換」を使用したリファクタリング+]
* link:http://wiki.netbeans.org/Refactoring[+リファクタリングの単純化+]
