标签: eclipse

在eclipse中安装mat插件

 

地址:http://download.eclipse.org/mat/1.2/update-site

Java程序员应该知道的10个eclipse调试技巧

在开始前给大家提3点建议!
  不要使用System.out.println作为调试工具
  把所有涉及到的组件日志级别激活并使用
  使用日志分析器来读取日志

1.条件断点

 条件断点

  如果你不知道如何添加断点,只需点击左边面板(行号前面)断点即被创建。在调试界面中,“断点”视图会把所有被创建的断点列出来。我们可以给它加一个布尔条件,也就是说,该断点会被激活并且如果布尔条件为真,就会执行该断点,否则将会跳过往下执行。

  2.异常断点

 异常断点

  在断点视图中,有一个J!标记按钮!我们可以使用该按钮来添加一个Java异常断点。例如,我们想让程序在遇到空指针异常(NullPointerException)时,仍然能继续调试,那么我们可以使用该按钮来添加一个异常断点!

  3.监视点

 监视点

  这是一个非常好的功能,当选定的属性访问或修改程序时,程序会停止执行并允许进行调试。在Outline视图中选择一个类变量并从上下文菜单中选择切换监视点,属性监视点将会被创建,在断点(Breakpoints)视图中会把所有监视点用列表的形式显示出来。

  4.评估/检查 阅读详细 »

错误解决:Some projects cannot be imported because they already exist in the workspace

eclipse导入项目时出现:Some projects cannot be imported because they already exist in the workspace

解决方法如下:

取消勾选:”copy projects into workspace”,再重新导入即可

Eclipse 打开当前文件所在文件夹

 

默认情况下使用eclipse打开当前文件所在文件夹很麻烦,需要右键点击 Package Explorer 中的节点选择属性,然后复制路径,再打开资源管理器,然后再把路径粘贴进去。使用下面的方式可以一步打开文件夹

 
Run —- External Tools —- External Tools Configurations
 
1.在 program 下面新建一个工具;
 
2.在 Location 中填写 windows 资源管理器路径;
 
3.在 Arguments 中填写 ${container_loc};(不带分号)
 
4.选择 Common 选项卡;
 
5.选中 External Tools 复选框(使该项出现在工具栏中);
 
6.点击 Apply 按钮。
 
ok,单击工具栏上的 External Tools 按钮即可在资源管理器中打开你在 Package Explorer 中选中的文件所在的目录了。

eclipse单例模板配置

 

Window->Preferences->Java->Editor->Templates->New

定义一个名字:singleton

private static final ${enclosing_type} instance = new ${enclosing_type}();  
private ${enclosing_type}(){  
}  
public static ${enclosing_type} getInstance(){  
    return instance;  
}  
 
保存,定义完类以后输入singleton就ok了

自定义findBugs检测器

1.java 检测类 继承?OpcodeStackDetector

public class SysoutDetector extends OpcodeStackDetector {

BugReporter bugReporter;

public SysoutDetector(BugReporter bugReporter) {

this.bugReporter = bugReporter;

}

@Override

public void sawOpcode(int seen) {

if (seen == GETSTATIC) {

if (getClassConstantOperand().equals(“java/lang/System”)// get class mapping

&& (getNameConstantOperand().equals(“out”))) {

BugInstance bug = new BugInstance(this, “CHECK_SYSTEMCLASS”, NORMAL_PRIORITY).addClassAndMethod(this).addSourceLine(this, getPC());

bug.addInt(getPC());

bugReporter.reportBug(bug);

}

}

}

}

BugInstance 的type参数 为 messages.xml中发布的?<BugPattern type=”CHECK_SYSTEMCLASS”>

2.更改messages.xml

注册

<BugPattern type=”CHECK_SYSTEMCLASS”>

<ShortDescription>使用了System.out </ShortDescription>

<LongDescription>checks {1} method.Changes to logger if needed.</LongDescription>

<Details>

<![CDATA[

<p>system class used.

</p>

]]>

</Details>

该 ?BugPattern 的?ShortDescription 为findbugs静态检测后bug exlpoer 中的bug 节点名称

注册?<Detector class=”edu.umd.cs.findbugs.detect. SysoutDetector “>

<Details>

<![CDATA[

<p>Checks for classes used System class. </p>

]]>

</Details>

</Detector>

注册?<BugCode abbrev=”CUSTOM”>System class used</BugCode> ,注册一个自己的bugCode,意义不大,如果自己不注册一个,

findbugs.xml中 abbrev值就要使用系统的

3.修改findbugs.xml 文件

注册 <BugPattern abbrev=”CUSTOM” type=”CHECK_SYSTEMCLASS” category=”EXPERIMENTAL” />

此意: ?CHECK_SYSTEMCLASS 为?EXPERIMENTAL 下检测器,

EXPERIMENTAL 在Myeclispe/window/preferences/java/findbugs 中勾选

注册<Detector class=”edu.umd.cs.findbugs.detect.SysoutDetector”

speed=”fast” reports=”CHECK_SYSTEMCLASS” hidden=”false”/>

4.发布

找到findbugs的Myeclipse插件目录,找到?findbugs-plugin.jar

替换其下的findbugs.xml 和 messages.xml,以及加入新的class文件。重启Myeclipse即可。

使用FindBugs插件提高代码质量和在重构中发现问题

FindBugs 是什么?

FindBugs 是一个静态分析工具,它检查类或者 JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题。之所以叫做静态分析工具,是因为它在不实际运行程序的情况对软件进行分析。使用findbugs有很多种方式,从 GUI、从命令行、使用 Ant、作为 Eclipse 插件程序和使用 Maven,甚至作为hudson持续集成的插件。FindBugs发现的不是引起编译错误的bugs,它只检查一些不好的编程习惯、检测系统潜在的性能和并发等问题。

findbugs自己定义了一系列的检测器,1.3.9版本的检测器有83种Bad practice(不好的习惯),133种Correctness(正确性),2种Experimental(实验性问题),1种 Internationalization(国际化问题),12种Malicious code vulnerability(恶意的代码),41种Multithreaded correctness(线程问题),27种Performance(性能问题),9种Security(安全性问题),62种Dodgy(狡猾的问题)。

安装方法(插件在附件中)

直接解压放到myeclipse\eclipse\plugins下

举例

在PivotServlet..java右击FindBugs—>FindBugs;插件会根据预先定义好的检测器,查找问题。

1、 在循环中使用“+”号连接字符串(Method concatenates strings using + in a loop)

下方会提示问题产生原因,并给出修改建议还有代码示例(英文很简单、不懂的单词查下即可)

2、 静态变量问题(Write to static field from instance method)

edu.umd.cs.findbugs.plugin.eclipse_1.3.9.20090821