From 6857f69373081b984b8e607b725e57a6042b9336 Mon Sep 17 00:00:00 2001 From: David Craine Date: Fri, 9 Aug 2002 15:50:04 +0000 Subject: [PATCH] Finished first implementation of CPD git-svn-id: https://pmd.svn.sourceforge.net/svnroot/pmd/trunk@669 51baf565-9d33-0410-a72c-fc3788e3496d --- pmd-jbuilder/lib/PMDOpenTool.jar | Bin 110780 -> 119544 bytes pmd-jbuilder/src/html/cpd-props.html | 7 ++ .../pmd/jbuilder/CPDPropertyGroup.java | 37 +++++++ .../pmd/jbuilder/CPDPropertyPage.java | 96 ++++++++++++++++++ .../sourceforge/pmd/jbuilder/PMDOpenTool.java | 67 +++++++++--- 5 files changed, 192 insertions(+), 15 deletions(-) create mode 100644 pmd-jbuilder/src/html/cpd-props.html create mode 100644 pmd-jbuilder/src/net/sourceforge/pmd/jbuilder/CPDPropertyGroup.java create mode 100644 pmd-jbuilder/src/net/sourceforge/pmd/jbuilder/CPDPropertyPage.java diff --git a/pmd-jbuilder/lib/PMDOpenTool.jar b/pmd-jbuilder/lib/PMDOpenTool.jar index 68951f85c97731956e34dcf884c6dfc0edcebab0..774c2cf8d62cf4be7436e3e369a02d75147f25bf 100644 GIT binary patch delta 15998 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%0Dy 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 KcEfQo1^*w)-x?SI delta 11550 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 RG_)PHqxCS<&`t8T^*>k_hsgi{ diff --git a/pmd-jbuilder/src/html/cpd-props.html b/pmd-jbuilder/src/html/cpd-props.html new file mode 100644 index 0000000000..7a0685be93 --- /dev/null +++ b/pmd-jbuilder/src/html/cpd-props.html @@ -0,0 +1,7 @@ + + +CPD stands for "Cut and Paste Tool". The function of CPD is to find duplicate code across all the files in a particular
+project. You can specify the minimum number of tokens that constitute a legitimate CPD find. A token represents the smallest
+parseable unit in the Java language. For example, all java keywords, variable names, method names, etc are considered tokens. + + \ No newline at end of file diff --git a/pmd-jbuilder/src/net/sourceforge/pmd/jbuilder/CPDPropertyGroup.java b/pmd-jbuilder/src/net/sourceforge/pmd/jbuilder/CPDPropertyGroup.java new file mode 100644 index 0000000000..98f263df0f --- /dev/null +++ b/pmd-jbuilder/src/net/sourceforge/pmd/jbuilder/CPDPropertyGroup.java @@ -0,0 +1,37 @@ +package net.sourceforge.pmd.jbuilder; + +import com.borland.primetime.properties.PropertyGroup; +import com.borland.primetime.properties.PropertyPageFactory; +import com.borland.primetime.properties.PropertyPage; +import com.borland.primetime.ide.MessageCategory; +import com.borland.primetime.properties.GlobalIntegerProperty; + +/** + *

Title: JBuilder OpenTool for PMD

+ *

Description: Provides an environemnt for using the PMD aplication from within JBuilder

+ *

Copyright: Copyright (c) 2002

+ *

Company: InfoEther

+ * @author David Craine + * @version 1.0 + */ + +public class CPDPropertyGroup implements PropertyGroup { + static GlobalIntegerProperty PROP_MIN_TOKEN_COUNT = new GlobalIntegerProperty(Constants.RULESETS, "mintokencount", 30); + + public CPDPropertyGroup() { + } + public void initializeProperties() { + } + + public PropertyPageFactory getPageFactory(Object topic) { + if (topic == Constants.RULESETS_TOPIC) { + return new PropertyPageFactory("CPD Properties", "Configure the CPD RuleSets") { + + public PropertyPage createPropertyPage () { + return new CPDPropertyPage(); + } + }; + } + return null; + } +} \ No newline at end of file diff --git a/pmd-jbuilder/src/net/sourceforge/pmd/jbuilder/CPDPropertyPage.java b/pmd-jbuilder/src/net/sourceforge/pmd/jbuilder/CPDPropertyPage.java new file mode 100644 index 0000000000..2d851f6191 --- /dev/null +++ b/pmd-jbuilder/src/net/sourceforge/pmd/jbuilder/CPDPropertyPage.java @@ -0,0 +1,96 @@ +package net.sourceforge.pmd.jbuilder; + +import java.awt.*; +import java.awt.event.*; +import java.util.*; + +import javax.swing.*; +import javax.swing.border.*; +import javax.swing.event.*; + +import com.borland.primetime.help.*; +import com.borland.primetime.ide.*; +import com.borland.primetime.properties.*; +import net.sourceforge.pmd.*; +import com.borland.jbcl.layout.*; + + +/** + *

Title: JBuilder OpenTool for PMD

+ *

Description: Provides an environemnt for using the PMD aplication from within JBuilder

+ *

Copyright: Copyright (c) 2002

+ *

Company: InfoEther

+ * @author David Craine + * @version 1.0 + */ + +public class CPDPropertyPage extends PropertyPage { + static CPDPropertyPage currentInstance = null; + private JPanel jPanel1 = new JPanel(); + private VerticalFlowLayout verticalFlowLayout1 = new VerticalFlowLayout(); + private JLabel jLabel1 = new JLabel(); + private JTextField jTextField1 = new JTextField(); + + public CPDPropertyPage() { + currentInstance = this; + try { + jbInit(); + init2(); + } + catch(Exception e) { + e.printStackTrace(); + } + } + + + /** + * This methiod is called by JBuilder when the user presses "OK" in the property dialog + */ + public void writeProperties() { + try { + int minTokenCount = Integer.parseInt(jTextField1.getText()); + CPDPropertyGroup.PROP_MIN_TOKEN_COUNT.setInteger(minTokenCount); + } + catch (Exception ex) { + + } + + } + + /** + * This methiod is called by JBuilder + */ + public HelpTopic getHelpTopic() { + return new ZipHelpTopic( + null, + getClass().getResource("/html/cpd-props.html").toString()); + } + + /** + * This methiod is called by JBuilder + */ + public void readProperties() { + } + + /** + * JBuilder-constructed initialization + * @throws Exception + */ + private void jbInit() throws Exception { + this.setLayout(verticalFlowLayout1); + jLabel1.setText("Minimum Token Count"); + jTextField1.setPreferredSize(new Dimension(40, 21)); + this.add(jPanel1, null); + jPanel1.add(jLabel1, null); + jPanel1.add(jTextField1, null); + } + + /** + * additional intiialzation + */ + private void init2() { + jTextField1.setText(String.valueOf(CPDPropertyGroup.PROP_MIN_TOKEN_COUNT.getInteger())); + } + +} + diff --git a/pmd-jbuilder/src/net/sourceforge/pmd/jbuilder/PMDOpenTool.java b/pmd-jbuilder/src/net/sourceforge/pmd/jbuilder/PMDOpenTool.java index d132e63e57..3fcfae3ac1 100644 --- a/pmd-jbuilder/src/net/sourceforge/pmd/jbuilder/PMDOpenTool.java +++ b/pmd-jbuilder/src/net/sourceforge/pmd/jbuilder/PMDOpenTool.java @@ -43,6 +43,7 @@ public class PMDOpenTool { static MessageCategory msgCat = new MessageCategory("PMD Results"); static MessageCategory cpdCat = new MessageCategory("CPD Results"); public static ActionGroup GROUP_PMD = new ActionGroup("PMD", 'p', true); + public static ActionGroup GROUP_TOOLBAR_PMD = new ActionGroup("PMD", 'P', true); static Font fileNameMsgFont = new Font("Dialog", Font.BOLD, 12); static Font stdMsgFont = new Font("Dialog", Font.PLAIN, 12); @@ -65,11 +66,14 @@ public class PMDOpenTool { GROUP_PMD.add(B_ACTION_PMDCheck); + GROUP_PMD.add(B_ACTION_PMDProjectCheck); + GROUP_PMD.add(B_ACTION_CPDProjectCheck); GROUP_PMD.add(B_ACTION_PMDConfig); JBuilderMenu.GROUP_Tools.add(GROUP_PMD); - JBuilderToolBar.GROUP_RunBar.add(B_ACTION_PMDCheck); - JBuilderToolBar.GROUP_RunBar.add(B_ACTION_PMDProjectCheck); - JBuilderToolBar.GROUP_RunBar.add(B_ACTION_CPDProjectCheck); + GROUP_TOOLBAR_PMD.add(B_ACTION_PMDCheck); + GROUP_TOOLBAR_PMD.add(B_ACTION_PMDProjectCheck); + GROUP_TOOLBAR_PMD.add(B_ACTION_CPDProjectCheck); + Browser.addToolBarGroup(GROUP_TOOLBAR_PMD); registerWithContentManager(); registerWithProjectView(); @@ -82,6 +86,7 @@ public class PMDOpenTool { ActiveRuleSetPropertyGroup apropGrp = new ActiveRuleSetPropertyGroup(); ConfigureRuleSetPropertyGroup cpropGrp = new ConfigureRuleSetPropertyGroup(); AcceleratorPropertyGroup accpropGrp = new AcceleratorPropertyGroup(); + CPDPropertyGroup cpdPropGrp = new CPDPropertyGroup(); //register the Keymap shortcuts if they are enabled if (AcceleratorPropertyGroup.PROP_KEYS_ENABLED.getBoolean()) { @@ -92,6 +97,7 @@ public class PMDOpenTool { PropertyManager.registerPropertyGroup(cpropGrp); PropertyManager.registerPropertyGroup(ipropGrp); PropertyManager.registerPropertyGroup(accpropGrp); + PropertyManager.registerPropertyGroup(cpdPropGrp); } } @@ -332,7 +338,7 @@ public class PMDOpenTool { try { Browser.getActiveBrowser().getMessageView().clearMessages(cpdCat); //clear the message window CPD cpd = new CPD(); - cpd.setMinimumTileSize(25); + cpd.setMinimumTileSize(CPDPropertyGroup.PROP_MIN_TOKEN_COUNT.getInteger()); Node[] nodes = Browser.getActiveBrowser().getActiveProject().getDisplayChildren(); CPDDialog cpdd = new CPDDialog(cpd); for (int i=0; i