// 
//     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.2 Beta Java 编辑器中引入的新静态代码分析功能。此截屏视频演示了如何使用 FindBugs 和 NetBeans Java 提示执行 Java 代码的静态分析，而不实际运行应用程序。

作者：Jan Lahoda、Alyona Stashkova 
播放时长：3:47

link:http://bits.netbeans.org/media/code-inspect.swf[+观看全图/下载+] (.swf)（按住 Ctrl 键单击即可下载，大小为 2,7 MB）


link:/about/contact_form.html?to=3&subject=Feedback:%20Video%20of%20the%20Static%20Analysis%20Feature%20in%20the%20NetBeans%20IDE[+发送有关此教程的反馈意见+]
 
|===


== 相关链接

* link:http://wiki.netbeans.org/Java_Hints[+NetBeans Java 提示+]
* link:http://platform.netbeans.org/tutorials/nbm-java-hint.html[+NetBeans Java 提示模块教程+]
* _使用 NetBeans IDE 开发应用程序_中的link:http://www.oracle.com/pls/topic/lookup?ctx=nb8000&id=NBDAG613[+在源代码分析和重构中使用提示+]
