Giter Club home page Giter Club logo

pmd-intellij's Introduction

Hi there ๐Ÿ‘‹

See some of my projects below. Also see my blog.

pmd-intellij's People

Contributors

actions-user avatar amitdev avatar cyanotyp avatar gorshkov-leonid avatar jborgers avatar jlopezmanrique avatar leonardlaszlo avatar lvanderveekens avatar martenbohlin avatar sashokbg avatar ybroeker avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

pmd-intellij's Issues

Real-time scanning

It would be great if PMDplugin could do real-time scanning of the file currently being edited. The Checkstyle-IDEA plugin does that, and it's very useful.

Add custom ruleset

I've seen multiple issues that express confusion on how to add a custom ruleset to intellij.
I'm opening this issue to hopefully understand what class file I need to put into the classes directory.

I'm simply trying to add a custom ruleset like:

<?xml version="1.0"?>

<ruleset name="full-visual-force-pmd-ruleset"
    xmlns="http://pmd.sourceforge.net/ruleset/2.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 http://pmd.sourceforge.net/ruleset_2_0_0.xsd">
    <description>VisualForce - All Rules</description>

    <!-- Security -->
    <rule ref="category/vf/security.xml/VfCsrf" />
    <rule ref="category/vf/security.xml/VfUnescapeEl" />

</ruleset>

When I try to add the ruleset I get:
The selected file is not a vaild PMD ruleset: Can't find the resource 'category/vf/security.xml' for rule VfCsrf. Make sure the resource is a valid file or URL and is on the CLASSPATH

I've dug into this issue
And I've created a classes directory under ~/Library/Application\ Support/ideaIC2018.1/PMD-Intellij, but i have no clue what the class file is or what it should look like...

I'm using pmd 6.2.0 and I'm able to run the custom ruleset outside of IntelliJ.

Any help is appreciated.

NoSuchMethodError

I'm using Intellij 13 Ultimate.

Throwable: Icon cannot be found in '/nodes/folderOpen.png', aClass='class com.intellij.plugins.bodhi.pmd.tree.PMDCellRenderer'

NoSuchMethodError: update failed for AnAction with ID=RunFlexPMD: com.intellij.openapi.module.Module.getModuleType()Lcom/intellij/openapi/module/ModuleType;

Hear is detail message for "NoSuchMethodError"

update failed for AnAction with ID=RunFlexPMD: com.intellij.openapi.module.Module.getModuleType()Lcom/intellij/openapi/module/ModuleType;
java.lang.NoSuchMethodError: com.intellij.openapi.module.Module.getModuleType()Lcom/intellij/openapi/module/ModuleType;
at com.code4hire.flexpmd.actions.RunFlexPMDAction.update(RunFlexPMDAction.java:69)
at com.intellij.openapi.actionSystem.ex.ActionUtil.performDumbAwareUpdate(ActionUtil.java:113)
at com.intellij.openapi.actionSystem.impl.Utils.a(Utils.java:187)
at com.intellij.openapi.actionSystem.impl.Utils.expandActionGroup(Utils.java:138)
at com.intellij.openapi.actionSystem.impl.Utils.expandActionGroup(Utils.java:85)
at com.intellij.openapi.actionSystem.impl.Utils.fillMenu(Utils.java:279)
at com.intellij.openapi.actionSystem.impl.ActionPopupMenuImpl$MyMenu.show(ActionPopupMenuImpl.java:96)
at com.intellij.ide.ui.customization.CustomizationUtil$3.invokePopup(CustomizationUtil.java:284)
at com.intellij.ui.PopupHandler.mousePressed(PopupHandler.java:48)
at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:263)
at java.awt.AWTEventMulticaster.mousePressed(AWTEventMulticaster.java:262)
at java.awt.Component.processMouseEvent(Component.java:6411)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3275)
at com.intellij.ui.treeStructure.Tree.processMouseEvent(Tree.java:418)
at com.intellij.ide.dnd.aware.DnDAwareTree.processMouseEvent(DnDAwareTree.java:52)
at java.awt.Component.processEvent(Component.java:6179)
at java.awt.Container.processEvent(Container.java:2084)
at java.awt.Component.dispatchEventImpl(Component.java:4776)
at java.awt.Container.dispatchEventImpl(Container.java:2142)
at java.awt.Component.dispatchEvent(Component.java:4604)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4618)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4276)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4209)
at java.awt.Container.dispatchEventImpl(Container.java:2128)
at java.awt.Window.dispatchEventImpl(Window.java:2492)
at java.awt.Component.dispatchEvent(Component.java:4604)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:717)
at java.awt.EventQueue.access$400(EventQueue.java:82)
at java.awt.EventQueue$2.run(EventQueue.java:676)
at java.awt.EventQueue$2.run(EventQueue.java:674)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:690)
at java.awt.EventQueue$3.run(EventQueue.java:688)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:687)
at com.intellij.ide.IdeEventQueue.e(IdeEventQueue.java:697)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:520)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:335)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Cannot add custom ruleset - missing 'language' attribute?

Hi,
I get the following error when adding my custom ruleset:

The selected file is not a valid PMD ruleset : Rule CyclomaticComplexity does not have a Language; missing 'language' attribute?

This is my ruleset file:

    <?xml version="1.0"?>
    <ruleset name="custom" xmlns="http://pmd.sourceforge.net/ruleset/2.0.0"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 http://pmd.sourceforge.net/ruleset_2_0_0.xsd">
        <description>
            PMD Plugin preferences rule set
        </description>
        <rule ref="rulesets/java/codesize.xml/CyclomaticComplexity" language="java">
            <properties>
                <property name="reportLevel" value="5" />
            </properties>
        </rule>
    </ruleset>

I get the error regardless of whether I specify the attribute 'language'.

I'm using plugin version 1.7 on Android Studio 0.8.14.

Not compatible with Intellij IDEA v14 (Android Studio 1.4)

Hi!
I like this plugin very much and use it a lot to detect issues, but unfortunately after I updated my Android Studio to version 1.4 (which is based on IDEA build 141.+) - plugin disappeared from list of plugins. Based on repository info PMD's supported version is 139.659
Can we expect a support for newer version of IDEA? ^_^

PMD plugin is not listing the custom rules

I added a custom rule in my project to PMD, but it is not listed.
pmd_plugin
When I try to run it, there are four rules listed.
pmd_rules
PMD plugin version:
1.8.2
IntelliJ version:
2017.1.5

NullPointerException on setting

I've got error from PMDPlugins as below.
This occurs when i want to add custom rule-set on the setting.

My environment are

IntelliJ IDEA 2017.1.5
Build #IU-171.4694.70, built on July 4, 2017
JRE: 1.8.0_112-release-736-b21 amd64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Windows 7 6.1
cannot reset configurable
java.lang.NullPointerException
	at com.intellij.plugins.bodhi.pmd.PMDConfigurationForm.setData(PMDConfigurationForm.java:76)
	at com.intellij.plugins.bodhi.pmd.PMDConfigurable.reset(PMDConfigurable.java:49)
	at com.intellij.openapi.options.ex.ConfigurableWrapper.reset(ConfigurableWrapper.java:174)
	at com.intellij.openapi.options.ex.ConfigurableCardPanel.reset(ConfigurableCardPanel.java:127)
	at com.intellij.openapi.options.ex.ConfigurableCardPanel$1.compute(ConfigurableCardPanel.java:84)
	at com.intellij.openapi.options.ex.ConfigurableCardPanel$1.compute(ConfigurableCardPanel.java:69)
	at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:942)
	at com.intellij.openapi.options.ex.ConfigurableCardPanel.createConfigurableComponent(ConfigurableCardPanel.java:69)
	at com.intellij.openapi.options.ex.ConfigurableCardPanel.create(ConfigurableCardPanel.java:55)
	at com.intellij.openapi.options.newEditor.ConfigurableEditor$1.create(ConfigurableEditor.java:68)
	at com.intellij.openapi.options.newEditor.ConfigurableEditor$1.create(ConfigurableEditor.java:65)
	at com.intellij.ui.CardLayoutPanel.a(CardLayoutPanel.java:88)
	at com.intellij.ui.CardLayoutPanel.b(CardLayoutPanel.java:116)
	at com.intellij.ui.CardLayoutPanel.a(CardLayoutPanel.java:132)
	at com.intellij.openapi.application.TransactionGuardImpl$2.run(TransactionGuardImpl.java:303)
	at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.a(LaterInvocator.java:410)
	at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.run(LaterInvocator.java:399)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:762)
	at java.awt.EventQueue.access$500(EventQueue.java:98)
	at java.awt.EventQueue$3.run(EventQueue.java:715)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:732)
	at com.intellij.ide.IdeEventQueue.i(IdeEventQueue.java:827)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:655)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:365)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:109)
	at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:184)
	at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:229)
	at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:227)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:227)
	at java.awt.Dialog.show(Dialog.java:1084)
	at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl$MyDialog.show(DialogWrapperPeerImpl.java:735)
	at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl.show(DialogWrapperPeerImpl.java:457)
	at com.intellij.openapi.ui.DialogWrapper.invokeShow(DialogWrapper.java:1696)
	at com.intellij.openapi.ui.DialogWrapper.show(DialogWrapper.java:1645)
	at com.intellij.openapi.options.newEditor.SettingsDialog.a(SettingsDialog.java:77)
	at com.intellij.openapi.application.TransactionGuardImpl.a(TransactionGuardImpl.java:86)
	at com.intellij.openapi.application.TransactionGuardImpl.submitTransactionAndWait(TransactionGuardImpl.java:151)
	at com.intellij.openapi.options.newEditor.SettingsDialog.show(SettingsDialog.java:77)
	at com.intellij.ide.actions.ShowSettingsUtilImpl.showSettingsDialog(ShowSettingsUtilImpl.java:94)
	at com.intellij.ide.actions.TemplateProjectPropertiesAction.actionPerformed(TemplateProjectPropertiesAction.java:28)
	at com.intellij.openapi.actionSystem.ex.ActionUtil$1.run(ActionUtil.java:215)
	at com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAware(ActionUtil.java:232)
	at com.intellij.openapi.actionSystem.impl.ActionMenuItem$ActionTransmitter.a(ActionMenuItem.java:309)
	at com.intellij.openapi.wm.impl.FocusManagerImpl.runOnOwnContext(FocusManagerImpl.java:929)
	at com.intellij.openapi.wm.impl.IdeFocusManagerImpl.runOnOwnContext(IdeFocusManagerImpl.java:136)
	at com.intellij.openapi.actionSystem.impl.ActionMenuItem$ActionTransmitter.actionPerformed(ActionMenuItem.java:299)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
	at com.intellij.openapi.actionSystem.impl.ActionMenuItem.a(ActionMenuItem.java:116)
	at com.intellij.openapi.application.TransactionGuardImpl.a(TransactionGuardImpl.java:86)
	at com.intellij.openapi.application.TransactionGuardImpl.a(TransactionGuardImpl.java:109)
	at com.intellij.openapi.application.TransactionGuardImpl.submitTransaction(TransactionGuardImpl.java:118)
	at com.intellij.openapi.application.TransactionGuard.submitTransaction(TransactionGuard.java:122)
	at com.intellij.openapi.actionSystem.impl.ActionMenuItem.fireActionPerformed(ActionMenuItem.java:116)
	at com.intellij.ui.plaf.beg.BegMenuItemUI.a(BegMenuItemUI.java:513)
	at com.intellij.ui.plaf.beg.BegMenuItemUI.access$300(BegMenuItemUI.java:45)
	at com.intellij.ui.plaf.beg.BegMenuItemUI$MyMouseInputHandler.mouseReleased(BegMenuItemUI.java:533)
	at java.awt.Component.processMouseEvent(Component.java:6541)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
	at java.awt.Component.processEvent(Component.java:6306)
	at java.awt.Container.processEvent(Container.java:2236)
	at java.awt.Component.dispatchEventImpl(Component.java:4897)
	at java.awt.Container.dispatchEventImpl(Container.java:2294)
	at java.awt.Component.dispatchEvent(Component.java:4719)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
	at java.awt.Container.dispatchEventImpl(Container.java:2280)
	at java.awt.Window.dispatchEventImpl(Window.java:2746)
	at java.awt.Component.dispatchEvent(Component.java:4719)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:764)
	at java.awt.EventQueue.access$500(EventQueue.java:98)
	at java.awt.EventQueue$3.run(EventQueue.java:715)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
	at java.awt.EventQueue$4.run(EventQueue.java:737)
	at java.awt.EventQueue$4.run(EventQueue.java:735)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:734)
	at com.intellij.ide.IdeEventQueue.i(IdeEventQueue.java:827)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:651)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:365)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Missing "Other Settings" menu option with IntelliJ 2016.1

When using the latest PMDPlugin v1.7.7 with IntelliJ 2016.1, the "PMD" option under IntelliJ's Settings >> Other Settings menu is no longer present. As a result, there is no way to specify custom rulesets for PMDPlugin when using the latest version of IntelliJ.

This issue is not present when using IntelliJ 15.0.x.

Custom rule set resulted in 0 violations, but I know there are some

I have a modest custom pmd.xml to limit some of the warnings that I'm not concerned about. I imported it by using Preferences => PMD => RuleSets => + => navigating to my file (which is in the intellij project structure).

The option under Tools => Run PMD => Custom Rules => (filename) then becomes active and I am able to select it to run it. However, I never get any results from this custom ruleset. I know there are some violations to find, because I get reports when running it through maven, but not with the plug-in.

Here is the full text of the pmd.xml file that I am attempting to use:

<?xml version="1.0"?>
<ruleset name="my_pmd"
         xmlns="http://pmd.sourceforge.net/ruleset/2.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 http://pmd.sourceforge.net/ruleset_2_0_0.xsd">

    <rule ref="rulesets/java/android.xml"/>
    <rule ref="rulesets/java/basic.xml"/>
    <rule ref="rulesets/java/braces.xml"/>
    <rule ref="rulesets/java/codesize.xml">
        <!-- This was too strict, doesn't account for ctors, equals, hashCode, to String, etc. -->
        <exclude name="TooManyMethods"/>
    </rule>
    <rule ref="rulesets/java/design.xml">
        <exclude name="TooFewBranchesForASwitchStatement"/>
    </rule>
    <rule ref="rulesets/java/empty.xml"/>
<!--
    <rule ref="rulesets/java/naming.xml"/>
-->
    <rule ref="rulesets/java/strictexception.xml"/>
    <rule ref="rulesets/java/strings.xml"/>
    <rule ref="rulesets/java/typeresolution.xml"/>
    <rule ref="rulesets/java/unnecessary.xml">
        <exclude name="UselessParentheses"/>
    </rule>
    <rule ref="rulesets/java/unusedcode.xml"/>
    <rule ref="rulesets/java/optimizations.xml">
        <exclude name="LocalVariableCouldBeFinal"/>
        <exclude name="MethodArgumentCouldBeFinal"/>
    </rule>

</ruleset>

Invalid ruleset file (but it's not)

We have a PMD ruleset file that we're using fine from Maven. When I attempt to configure this for Intellij (13.1.1), I get this error:

Invalid File
The selected file is not a valie PMD ruleset : Couldn't find that class Can't find resource rulesets/java/basic.xml.  Make sure the resource is valid or the URL or is on the CLASSPATH

Here is a full copy of the ruleset I'm trying to add:

    ZCorum standardized rules 
    .*/generated-sources/.*

    
        
    
    
    
    
    
        
        
        
        
        
        
        
        
        
          
         
          
          
    
    
         
         
    
    
        
        
         
    
    
    
         
    
    
    
    
         
    
    
        
        
        
        
        
    
    
    
    
    
    
        
        
        
        
         
         
         
    
    
        
         
    
    
        
    

    
        
        
    

    
    
    
        
        
    
    
    
    
        
           
        
    
    
    
        
            
        
    
    
    
        
            
        
    
    


Run PMD check before commit

It will be nice to implement next enhancement:
run PMD check on changelist before commit.
It has already been implemented for similar tools: checkstyle, findbugs
image

PMD plugin not working when scanning only part of the code

Hi,
I was creating a custom rule and added it to the PMD IntelliJ plugin and it is working. I was executing the custom rule on a full Java Project and the pattern was identified in IntelliJ. The pattern I am looking for is a dummy so doesn't make sense now, I just wanted to see how the creation of rules is working with XPath.

screenshot at feb 04 15-40-43

If I only scan this one Java file in another Instance of IntelliJ with the same custom rule the pattern cannot be identified.

screenshot at feb 04 15-41-22

Sometimes I need to scan single Java files without actually having access to the full source. PDM would be quiet useful for this job as I can create custom rules.

Is it possible to scan only one or a bunch of Java files without actually having the full source? If so, how can it be done and what am I doing wrong?

Thanks and cheers.

Suppress more than one item

Hi,

Thanks for your effort. The Plugin for IntelliJ is really great and exactly what I was looking for. It's working like a charm, but I have one enhancement request:

At the moment it's only possible to suppress one item at a time, even if more than one is selected. Would be very helpful if several items can be selected and suppressed by selecting it once to get rid of false positives for example.

Is it possible to implemented this?

screenshot at mar 10 11-17-19

Scan before commit feature ignores "skip test sources" setting

Version = 1.8.3

I have the PMD plugin configured to skip test sources, and this works correctly when manually running a scan. The setting is ignored when running the scan automatically before a git commit, causing unwanted PMD problems to be reported.

Error loading rules set file

Hi,
i have a problem with a rules set file (intelliJ). When i load the file, an error occure: the selected file is not a valid PMD ruleset: Can't find resource 'rulesets/strings.xml' for rule 'null' ...

<ruleset name ="Danilo Pianini's ruleset"
	xmlns="http://pmd.sourceforge.net/ruleset/2.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://pmd.sourceforge.net/ruleset/2.0.0 http://pmd.sourceforge.net/ruleset_2_0_0.xsd">
	<description>Alchemist PMD Plugin preferences rule set</description>
	<rule ref="rulesets/java/design.xml/AbstractClassWithoutAbstractMethod" />
	<rule ref="rulesets/java/design.xml/AbstractClassWithoutAnyMethod" />
	<rule ref="rulesets/java/design.xml/AccessorClassGeneration" />
	<rule ref="rulesets/java/optimizations.xml/AddEmptyString" />
	<rule ref="rulesets/java/strings.xml/AppendCharacterWithChar" />
	<rule ref="rulesets/java/sunsecure.xml/ArrayIsStoredDirectly" />
	<rule ref="rulesets/java/controversial.xml/AssignmentInOperand" />
	<rule ref="rulesets/java/design.xml/AssignmentToNonFinalStatic" />
	<rule ref="rulesets/java/controversial.xml/AvoidAccessibilityAlteration" />
	<rule ref="rulesets/java/optimizations.xml/AvoidArrayLoops" />
	<rule ref="rulesets/java/migrating.xml/AvoidAssertAsIdentifier" />
	<rule ref="rulesets/java/basic.xml/AvoidBranchingStatementAsLastInLoop" />
	<rule ref="rulesets/java/finalizers.xml/AvoidCallingFinalize" />
	<rule ref="rulesets/java/strictexception.xml/AvoidCatchingNPE" />
	<rule ref="rulesets/java/strictexception.xml/AvoidCatchingThrowable" />
	<rule ref="rulesets/java/design.xml/AvoidConstantsInterface" />
	<rule ref="rulesets/java/basic.xml/AvoidDecimalLiteralsInBigDecimalConstructor" />
	<rule ref="rulesets/java/naming.xml/AvoidDollarSigns" />
	<rule ref="rulesets/java/strings.xml/AvoidDuplicateLiterals" />
	<rule ref="rulesets/java/migrating.xml/AvoidEnumAsIdentifier" />
	<rule ref="rulesets/java/naming.xml/AvoidFieldNameMatchingMethodName" />
	<rule ref="rulesets/java/naming.xml/AvoidFieldNameMatchingTypeName" />
	<rule ref="rulesets/java/design.xml/AvoidInstanceofChecksInCatchClause" />
	<rule ref="rulesets/java/strictexception.xml/AvoidLosingExceptionInformation" />
	<rule ref="rulesets/java/basic.xml/AvoidMultipleUnaryOperators" />
	<rule ref="rulesets/java/design.xml/AvoidProtectedFieldInFinalClass" />
	<rule ref="rulesets/java/design.xml/AvoidProtectedMethodInFinalClassNotExtending" />
	<rule ref="rulesets/vm/basic.xml/AvoidReassigningParameters" />
	<rule ref="rulesets/java/design.xml/AvoidReassigningParameters" />
	<rule ref="rulesets/java/strictexception.xml/AvoidRethrowingException" />
	<rule ref="rulesets/java/strings.xml/AvoidStringBufferField" />
	<rule ref="rulesets/java/basic.xml/AvoidThreadGroup" />
	<rule ref="rulesets/java/strictexception.xml/AvoidThrowingNewInstanceOfSameException" />
	<rule ref="rulesets/java/strictexception.xml/AvoidThrowingNullPointerException" />
	<rule ref="rulesets/java/basic.xml/AvoidUsingHardCodedIP" />
	<rule ref="rulesets/java/controversial.xml/AvoidUsingNativeCode" />
	<rule ref="rulesets/java/basic.xml/AvoidUsingOctalValues" />
	<rule ref="rulesets/java/controversial.xml/AvoidUsingShortType" />
	<rule ref="rulesets/java/design.xml/BadComparison" />
	<rule ref="rulesets/java/basic.xml/BigIntegerInstantiation" />
	<rule ref="rulesets/java/naming.xml/BooleanGetMethodName" />
	<rule ref="rulesets/java/basic.xml/BooleanInstantiation" />
	<rule ref="rulesets/java/controversial.xml/BooleanInversion" />
	<rule ref="rulesets/java/basic.xml/BrokenNullCheck" />
	<rule ref="rulesets/java/migrating.xml/ByteInstantiation" />
	<rule ref="rulesets/java/android.xml/CallSuperLast" />
	<rule ref="rulesets/java/basic.xml/CheckResultSet" />
	<rule ref="rulesets/java/basic.xml/CheckSkipResult" />
	<rule ref="rulesets/java/basic.xml/ClassCastExceptionWithToArray" />
	<rule ref="rulesets/java/naming.xml/ClassNamingConventions" />
	<rule ref="rulesets/java/design.xml/ClassWithOnlyPrivateConstructorsShouldBeFinal" />
	<rule ref="rulesets/java/design.xml/CloseResource" />
	<rule ref="rulesets/vm/basic.xml/CollapsibleIfStatements" />
	<rule ref="rulesets/java/basic.xml/CollapsibleIfStatements" />
	<rule ref="rulesets/java/comments.xml/CommentContent" />
	<rule ref="rulesets/java/design.xml/CompareObjectsWithEquals" />
	<rule ref="rulesets/java/strings.xml/ConsecutiveLiteralAppends" />
	<rule ref="rulesets/java/design.xml/ConstructorCallsOverridableMethod" />
	<rule ref="rulesets/java/coupling.xml/CouplingBetweenObjects" />
	<rule ref="rulesets/java/design.xml/DefaultLabelNotLastInSwitchStmt" />
	<rule ref="rulesets/java/controversial.xml/DefaultPackage" />
	<rule ref="rulesets/java/controversial.xml/DoNotCallGarbageCollectionExplicitly" />
	<rule ref="rulesets/java/strictexception.xml/DoNotExtendJavaLangError" />
	<rule ref="rulesets/java/android.xml/DoNotHardCodeSDCard" />
	<rule ref="rulesets/java/strictexception.xml/DoNotThrowExceptionInFinally" />
	<rule ref="rulesets/java/basic.xml/DontCallThreadRun" />
	<rule ref="rulesets/java/imports.xml/DontImportJavaLang" />
	<rule ref="rulesets/java/controversial.xml/DontImportSun" />
	<rule ref="rulesets/jsp/basic-jsf.xml/DontNestJsfInJstlIteration" />
	<rule ref="rulesets/java/basic.xml/DontUseFloatTypeForLoopIndices" />
	<rule ref="rulesets/java/basic.xml/DoubleCheckedLocking" />
	<rule ref="rulesets/java/imports.xml/DuplicateImports" />
	<rule ref="rulesets/jsp/basic.xml/DuplicateJspImports" />
	<rule ref="rulesets/java/empty.xml/EmptyCatchBlock" />
	<rule ref="rulesets/java/finalizers.xml/EmptyFinalizer" />
	<rule ref="rulesets/java/empty.xml/EmptyFinallyBlock" />
	<rule ref="rulesets/vm/basic.xml/EmptyForeachStmt" />
	<rule ref="rulesets/java/empty.xml/EmptyIfStmt" />
	<rule ref="rulesets/java/empty.xml/EmptyInitializer" />
	<rule ref="rulesets/java/empty.xml/EmptyStatementBlock" />
	<rule ref="rulesets/java/empty.xml/EmptyStatementNotInLoop" />
	<rule ref="rulesets/java/empty.xml/EmptyStaticInitializer" />
	<rule ref="rulesets/java/empty.xml/EmptySwitchStatements" />
	<rule ref="rulesets/java/empty.xml/EmptySynchronizedBlock" />
	<rule ref="rulesets/java/empty.xml/EmptyTryBlock" />
	<rule ref="rulesets/java/empty.xml/EmptyWhileStmt" />
	<rule ref="rulesets/java/design.xml/EqualsNull" />
	<rule ref="rulesets/java/strictexception.xml/ExceptionAsFlowControl" />
	<rule ref="rulesets/java/codesize.xml/ExcessivePublicCount" />
	<rule ref="rulesets/vm/basic.xml/ExcessiveTemplateLength" />
	<rule ref="rulesets/plsql/codesize.xml/ExcessiveTypeLength" />
	<rule ref="rulesets/java/basic.xml/ExtendsObject" />
	<rule ref="rulesets/java/design.xml/FieldDeclarationsShouldBeAtStartOfClass" />
	<rule ref="rulesets/java/design.xml/FinalFieldCouldBeStatic" />
	<rule ref="rulesets/java/finalizers.xml/FinalizeDoesNotCallSuperFinalize" />
	<rule ref="rulesets/java/finalizers.xml/FinalizeOnlyCallsSuperFinalize" />
	<rule ref="rulesets/java/finalizers.xml/FinalizeOverloaded" />
	<rule ref="rulesets/java/finalizers.xml/FinalizeShouldBeProtected" />
	<rule ref="rulesets/java/basic.xml/ForLoopShouldBeWhileLoop" />
	<rule ref="rulesets/java/braces.xml/ForLoopsMustUseBraces" />
	<rule ref="rulesets/java/naming.xml/GenericsNaming" />
	<rule ref="rulesets/java/design.xml/IdempotentOperations" />
	<rule ref="rulesets/java/braces.xml/IfElseStmtsMustUseBraces" />
	<rule ref="rulesets/java/braces.xml/IfStmtsMustUseBraces" />
	<rule ref="rulesets/jsp/basic.xml/IframeMissingSrcAttribute" />
	<rule ref="rulesets/java/design.xml/ImmutableField" />
	<rule ref="rulesets/java/imports.xml/ImportFromSamePackage" />
	<rule ref="rulesets/java/strings.xml/InefficientEmptyStringCheck" />
	<rule ref="rulesets/java/strings.xml/InefficientStringBuffering" />
	<rule ref="rulesets/java/design.xml/InstantiationToGetClass" />
	<rule ref="rulesets/java/strings.xml/InsufficientStringBufferDeclaration" />
	<rule ref="rulesets/java/migrating.xml/IntegerInstantiation" />
	<rule ref="rulesets/java/migrating.xml/JUnit4SuitesShouldUseSuiteAnnotation" />
	<rule ref="rulesets/java/migrating.xml/JUnit4TestShouldUseAfterAnnotation" />
	<rule ref="rulesets/java/migrating.xml/JUnit4TestShouldUseBeforeAnnotation" />
	<rule ref="rulesets/java/migrating.xml/JUnit4TestShouldUseTestAnnotation" />
	<rule ref="rulesets/java/junit.xml/JUnitAssertionsShouldIncludeMessage" />
	<rule ref="rulesets/java/junit.xml/JUnitSpelling" />
	<rule ref="rulesets/java/junit.xml/JUnitStaticSuite" />
	<rule ref="rulesets/java/junit.xml/JUnitTestsShouldIncludeAssert" />
	<rule ref="rulesets/java/migrating.xml/JUnitUseExpected" />
	<rule ref="rulesets/jsp/basic.xml/JspEncoding" />
	<rule ref="rulesets/java/basic.xml/JumbledIncrementer" />
	<rule ref="rulesets/java/j2ee.xml/LocalHomeNamingConvention" />
	<rule ref="rulesets/java/j2ee.xml/LocalInterfaceSessionNamingConvention" />
	<rule ref="rulesets/java/optimizations.xml/LocalVariableCouldBeFinal" />
	<rule ref="rulesets/java/logging-java.xml/LoggerIsNotStaticFinal" />
	<rule ref="rulesets/java/design.xml/LogicInversion" />
	<rule ref="rulesets/java/migrating.xml/LongInstantiation" />
	<rule ref="rulesets/java/coupling.xml/LooseCoupling" />
	<rule ref="rulesets/java/optimizations.xml/MethodArgumentCouldBeFinal" />
	<rule ref="rulesets/java/naming.xml/MethodNamingConventions" />
	<rule ref="rulesets/java/sunsecure.xml/MethodReturnsInternalArray" />
	<rule ref="rulesets/java/naming.xml/MethodWithSameNameAsEnclosingClass" />
	<rule ref="rulesets/java/naming.xml/MisleadingVariableName" />
	<rule ref="rulesets/java/basic.xml/MisplacedNullCheck" />
	<rule ref="rulesets/java/javabeans.xml/MissingSerialVersionUID" />
	<rule ref="rulesets/java/design.xml/MissingStaticMethodInNonInstantiatableClass" />
	<rule ref="rulesets/xml/basic.xml/MistypedCDATASection" />
	<rule ref="rulesets/java/logging-java.xml/MoreThanOneLogger" />
	<rule ref="rulesets/java/codesize.xml/NcssConstructorCount" />
	<rule ref="rulesets/plsql/codesize.xml/NcssMethodCount" />
	<rule ref="rulesets/java/codesize.xml/NcssMethodCount" />
	<rule ref="rulesets/plsql/codesize.xml/NcssObjectCount" />
	<rule ref="rulesets/java/codesize.xml/NcssTypeCount" />
	<rule ref="rulesets/jsp/basic.xml/NoClassAttribute" />
	<rule ref="rulesets/jsp/basic.xml/NoHtmlComments" />
	<rule ref="rulesets/vm/basic.xml/NoInlineJavaScript" />
	<rule ref="rulesets/jsp/basic.xml/NoInlineScript" />
	<rule ref="rulesets/jsp/basic.xml/NoInlineStyleInformation" />
	<rule ref="rulesets/vm/basic.xml/NoInlineStyles" />
	<rule ref="rulesets/jsp/basic.xml/NoJspForward" />
	<rule ref="rulesets/jsp/basic.xml/NoLongScripts" />
	<rule ref="rulesets/java/naming.xml/NoPackage" />
	<rule ref="rulesets/jsp/basic.xml/NoScriptlets" />
	<rule ref="rulesets/java/design.xml/NonCaseLabelInSwitchStatement" />
	<rule ref="rulesets/java/design.xml/NonStaticInitializer" />
	<rule ref="rulesets/java/design.xml/NonThreadSafeSingleton" />
	<rule ref="rulesets/java/design.xml/OptimizableToArrayCall" />
	<rule ref="rulesets/java/basic.xml/OverrideBothEqualsAndHashcode" />
	<rule ref="rulesets/java/naming.xml/PackageCase" />
	<rule ref="rulesets/java/optimizations.xml/PrematureDeclaration" />
	<rule ref="rulesets/java/logging-jakarta-commons.xml/ProperLogger" />
	<rule ref="rulesets/java/optimizations.xml/RedundantFieldInitializer" />
	<rule ref="rulesets/java/j2ee.xml/RemoteInterfaceNamingConvention" />
	<rule ref="rulesets/java/j2ee.xml/RemoteSessionInterfaceNamingConvention" />
	<rule ref="rulesets/java/migrating.xml/ReplaceEnumerationWithIterator" />
	<rule ref="rulesets/java/migrating.xml/ReplaceHashtableWithMap" />
	<rule ref="rulesets/java/migrating.xml/ReplaceVectorWithList" />
	<rule ref="rulesets/java/basic.xml/ReturnFromFinallyBlock" />
	<rule ref="rulesets/java/migrating.xml/ShortInstantiation" />
	<rule ref="rulesets/java/strictexception.xml/SignatureDeclareThrowsException" />
	<rule ref="rulesets/java/design.xml/SimpleDateFormatNeedsLocale" />
	<rule ref="rulesets/java/junit.xml/SimplifyBooleanAssertion" />
	<rule ref="rulesets/java/design.xml/SimplifyBooleanExpressions" />
	<rule ref="rulesets/java/design.xml/SimplifyBooleanReturns" />
	<rule ref="rulesets/java/design.xml/SimplifyConditional" />
	<rule ref="rulesets/java/design.xml/SingularField" />
	<rule ref="rulesets/java/j2ee.xml/StaticEJBFieldShouldBeFinal" />
	<rule ref="rulesets/java/strings.xml/StringBufferInstantiationWithChar" />
	<rule ref="rulesets/java/strings.xml/StringInstantiation" />
	<rule ref="rulesets/java/strings.xml/StringToString" />
	<rule ref="rulesets/java/naming.xml/SuspiciousConstantFieldName" />
	<rule ref="rulesets/java/naming.xml/SuspiciousHashcodeMethodName" />
	<rule ref="rulesets/java/controversial.xml/SuspiciousOctalEscape" />
	<rule ref="rulesets/java/design.xml/SwitchDensity" />
	<rule ref="rulesets/java/design.xml/SwitchStmtsShouldHaveDefault" />
	<rule ref="rulesets/plsql/dates.xml/TO_DATEWithoutDateFormat" />
	<rule ref="rulesets/plsql/dates.xml/TO_DATE_TO_CHAR" />
	<rule ref="rulesets/plsql/dates.xml/TO_TIMESTAMPWithoutDateFormat" />
	<rule ref="rulesets/java/junit.xml/TestClassWithoutTestCases" />
	<rule ref="rulesets/plsql/TomKytesDespair.xml/TomKytesDespair" />
	<rule ref="rulesets/java/design.xml/TooFewBranchesForASwitchStatement" />
	<rule ref="rulesets/java/design.xml/UncommentedEmptyConstructor" />
	<rule ref="rulesets/java/basic.xml/UnconditionalIfStatement" />
	<rule ref="rulesets/java/junit.xml/UnnecessaryBooleanAssertion" />
	<rule ref="rulesets/java/strings.xml/UnnecessaryCaseChange" />
	<rule ref="rulesets/java/controversial.xml/UnnecessaryConstructor" />
	<rule ref="rulesets/java/unnecessary.xml/UnnecessaryConversionTemporary" />
	<rule ref="rulesets/java/unnecessary.xml/UnnecessaryFinalModifier" />
	<rule ref="rulesets/java/imports.xml/UnnecessaryFullyQualifiedName" />
	<rule ref="rulesets/java/design.xml/UnnecessaryLocalBeforeReturn" />
	<rule ref="rulesets/java/unnecessary.xml/UnnecessaryReturn" />
	<rule ref="rulesets/java/optimizations.xml/UnnecessaryWrapperObjectCreation" />
	<rule ref="rulesets/java/design.xml/UnsynchronizedStaticDateFormatter" />
	<rule ref="rulesets/java/unusedcode.xml/UnusedFormalParameter" />
	<rule ref="rulesets/java/imports.xml/UnusedImports" />
	<rule ref="rulesets/java/unusedcode.xml/UnusedLocalVariable" />
	<rule ref="rulesets/vm/basic.xml/UnusedMacroParameter" />
	<rule ref="rulesets/java/unusedcode.xml/UnusedModifier" />
	<rule ref="rulesets/java/unnecessary.xml/UnusedNullCheckInEquals" />
	<rule ref="rulesets/java/unusedcode.xml/UnusedPrivateField" />
	<rule ref="rulesets/java/unusedcode.xml/UnusedPrivateMethod" />
	<rule ref="rulesets/java/optimizations.xml/UseArrayListInsteadOfVector" />
	<rule ref="rulesets/java/optimizations.xml/UseArraysAsList" />
	<rule ref="rulesets/java/junit.xml/UseAssertEqualsInsteadOfAssertTrue" />
	<rule ref="rulesets/java/junit.xml/UseAssertNullInsteadOfAssertTrue" />
	<rule ref="rulesets/java/junit.xml/UseAssertSameInsteadOfAssertTrue" />
	<rule ref="rulesets/java/junit.xml/UseAssertTrueInsteadOfAssertEquals" />
	<rule ref="rulesets/java/design.xml/UseCollectionIsEmpty" />
	<rule ref="rulesets/xsl/xpath.xml/UseConcatOnce" />
	<rule ref="rulesets/java/logging-jakarta-commons.xml/UseCorrectExceptionLogging" />
	<rule ref="rulesets/java/strings.xml/UseEqualsToCompareStrings" />
	<rule ref="rulesets/java/strings.xml/UseIndexOfChar" />
	<rule ref="rulesets/java/design.xml/UseLocaleWithCaseConversions" />
	<rule ref="rulesets/java/design.xml/UseNotifyAllInsteadOfNotify" />
	<rule ref="rulesets/java/controversial.xml/UseObjectForClearerAPI" />
	<rule ref="rulesets/java/strings.xml/UseStringBufferLength" />
	<rule ref="rulesets/java/design.xml/UseUtilityClass" />
	<rule ref="rulesets/java/unnecessary.xml/UselessOperationOnImmutable" />
	<rule ref="rulesets/java/unnecessary.xml/UselessOverridingMethod" />
	<rule ref="rulesets/java/strings.xml/UselessStringValueOf" />
	<rule ref="rulesets/java/naming.xml/VariableNamingConventions" />
	<rule ref="rulesets/java/braces.xml/WhileLoopsMustUseBraces" />
</ruleset>

Is a bug or there is a problem with my rules file?

Add the option to use local rules from current project

Hi,

it would be awesome if there was an option to specify a rules file local to the project (like Checkstyle does :)
Also the file choosing dialog looks pixelated and not as nice as all the other ones in IDEA.

Thanks

Scanning XML files

Hi Amit,

according to the project page of PMD also XML files can be scanned (https://pmd.github.io/). Is it therefore possible to check for the existence of attributes or tags in XML files with PMD-IntelliJ? If so, how can it be done?

I tried with the following rule to check if allowBackup is set as attribute in an AndroidManifest.xml, but it cannot be detected.

  <rule class="net.sourceforge.pmd.lang.rule.XPathRule" deprecated="false" dfa="false" language="java" message="" name="" typeResultion="true">
    <description>AllowBackup - android:allowBackup is set</description>
    <priority>3</priority>
    <properties>
      <property name="xpath">
        <value>//Name[matches(@Image,'allowBackup','i')]</value>
      </property>
      <property name="version" value="2.0"/>
    </properties>
    <example/>
  </rule>

Also the following value in the rule above was not working and the attribute could not be identified.

<value>//Name[contains(lower-case(@Image),'allowBackup')]</value>

Re-Run Checks with custom RuleSet causes NPE

I use a custom RuleSet with PMD Plugin 1.8.5 (PMD 6.3.0), IntelliJ 2018.1.5.
When I re-run checks from the "PMD" Tool window on the same .java file, I get following NPE

null
java.lang.NullPointerException
	at com.intellij.plugins.bodhi.pmd.PMDResultPanel$ReRunAction.isCustomRuleSet(PMDResultPanel.java:447)
	at com.intellij.plugins.bodhi.pmd.PMDResultPanel$ReRunAction.actionPerformed(PMDResultPanel.java:441)
	at com.intellij.openapi.actionSystem.ex.ActionUtil$1.run(ActionUtil.java:220)
	at com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAware(ActionUtil.java:237)
	at com.intellij.openapi.actionSystem.impl.ActionButton.actionPerformed(ActionButton.java:208)
	at com.intellij.openapi.actionSystem.impl.ActionButton.performAction(ActionButton.java:158)
	at com.intellij.openapi.actionSystem.impl.ActionButton.processMouseEvent(ActionButton.java:372)
	at java.awt.Component.processEvent(Component.java:6313)
	at java.awt.Container.processEvent(Container.java:2237)
	at java.awt.Component.dispatchEventImpl(Component.java:4903)
	at java.awt.Container.dispatchEventImpl(Container.java:2295)
	at java.awt.Component.dispatchEvent(Component.java:4725)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4889)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4526)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4467)
	at java.awt.Container.dispatchEventImpl(Container.java:2281)
	at java.awt.Window.dispatchEventImpl(Window.java:2746)
	at java.awt.Component.dispatchEvent(Component.java:4725)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:764)
	at java.awt.EventQueue.access$500(EventQueue.java:98)
	at java.awt.EventQueue$3.run(EventQueue.java:715)
	at java.awt.EventQueue$3.run(EventQueue.java:709)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
	at java.awt.EventQueue$4.run(EventQueue.java:737)
	at java.awt.EventQueue$4.run(EventQueue.java:735)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:734)
	at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:786)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:723)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:395)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

PMD IDEA Plugin 1.8.1.bugs

Hi, I have some problems with the running of PMD plugin version 1.8.1.

  1. If I run PMD in IDEA IDE, I get always the error message "Error while parsing .../MyEnum.java".
    This class MyEnum (the name is changed here) is an enum-class with only one String-member and with two methods get/set.
    But the maven PMD-plugin works fine .

  2. This IDEA-PMD plugin 1.8.1 doesnโ€™t support the jsp/jsf rules
    "rulesets/jsp/basic-jsf.xml" and "rulesets/jsp/basic.xml". Why?

  3. The properties of the rules are not supported. Example:
    I use custom PMD ruleset and added it into the PMD plugin in IDEA IDE.
    I have configured the rule "CommentSize" in the corresponding XML file as follows:
    rule ref="rulesets/java/comments.xml" name="CommentSize"
    properties
    property name="maxLineLength" value="160"
    property name="maxLines" value="30"
    properties
    rule
    But I still get the messages "Comment is too large: Line too long" and "Comment is too large: Too many lines", because the plugin uses the default values 80 and 6 for these properties and because I have long comments in my code. Eclipse PMD plugin doesn't load these properties maxLineLength and maxLines from the ruleset file too, but it has at lest the possibility to edit the rules in the IDE. Your plugin doesn't do that unfortunately.

Can we help me?
Best regards,
Valerius Kaiser, Germany

Importing custom rules fails with error message

I tried to import custom rules, but got the following error message:

pmd error

The rule looks like this:

<rule name="DoubleCheckedLocking"
          message="Double checked locking is not thread safe."
          class="net.sourceforge.pmd.rules.DoubleCheckedLocking"
          externalInfoUrl="http://examplecpm/wiki/PMDRuleDoubleCheckedLocking">
  <priority>1</priority>
</rule>

If I comment that rule out, it fails with the next one.

Any idea how to fix this? :-)
Do I maybe have to add PMD to the PATH or something?

NPE when attempting to choose pmd.xml file

IntelliJ throws a NPE when ever I try to add a ruleset for my project via the file chooser. Prevents user from choosing a pmd.xml file, basically preventing the entire plugin from working.

IntelliJ version: IntelliJ IDEA 13.1.2
Build Number: IU-135.690

Stacktrace follows:

java.lang.NullPointerException
    at com.apple.laf.AquaFileChooserUI$ScrollPaneCornerPanel.paintComponent(AquaFileChooserUI.java:1736)
    at javax.swing.JComponent.paint(JComponent.java:1037)
    at javax.swing.JComponent.paintChildren(JComponent.java:870)
    at javax.swing.JComponent.paint(JComponent.java:1046)
    at javax.swing.JComponent.paintChildren(JComponent.java:870)
    at javax.swing.JComponent.paint(JComponent.java:1046)
    at javax.swing.JComponent.paintChildren(JComponent.java:870)
    at javax.swing.JComponent.paint(JComponent.java:1046)
    at javax.swing.JComponent.paintChildren(JComponent.java:870)
    at javax.swing.JComponent.paint(JComponent.java:1046)
    at javax.swing.JComponent.paintChildren(JComponent.java:870)
    at javax.swing.JComponent.paint(JComponent.java:1046)
    at javax.swing.JComponent.paintChildren(JComponent.java:870)
    at javax.swing.JComponent.paint(JComponent.java:1046)
    at javax.swing.JLayeredPane.paint(JLayeredPane.java:567)
    at javax.swing.JComponent.paintChildren(JComponent.java:870)
    at javax.swing.JComponent.paint(JComponent.java:1046)
    at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:34)
    at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:60)
    at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:97)
    at java.awt.Container.paint(Container.java:1792)
    at java.awt.Window.paint(Window.java:3393)
    at sun.awt.RepaintArea.paintComponent(RepaintArea.java:276)
    at sun.awt.RepaintArea.paint(RepaintArea.java:241)
    at apple.awt.ComponentModel.handleEvent(ComponentModel.java:263)
    at apple.awt.CWindow.handleEvent(CWindow.java:545)
    at java.awt.Component.dispatchEventImpl(Component.java:4852)
    at java.awt.Container.dispatchEventImpl(Container.java:2142)
    at java.awt.Window.dispatchEventImpl(Window.java:2492)
    at java.awt.Component.dispatchEvent(Component.java:4604)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:717)
    at java.awt.EventQueue.access$400(EventQueue.java:82)
    at java.awt.EventQueue$2.run(EventQueue.java:676)
    at java.awt.EventQueue$2.run(EventQueue.java:674)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:690)
    at java.awt.EventQueue$3.run(EventQueue.java:688)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:687)
    at com.intellij.ide.IdeEventQueue.e(IdeEventQueue.java:697)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:524)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:335)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:205)
    at java.awt.Dialog$1.run(Dialog.java:1049)
    at java.awt.Dialog$3.run(Dialog.java:1101)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.awt.Dialog.show(Dialog.java:1099)
    at javax.swing.JFileChooser.privateShowDialog(JFileChooser.java:758)
    at javax.swing.JFileChooser.showDialog(JFileChooser.java:721)
    at com.intellij.plugins.bodhi.pmd.PMDConfigurationForm$BrowsePanel$1.actionPerformed(PMDConfigurationForm.java:301)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
    at java.awt.Component.processMouseEvent(Component.java:6414)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3275)
    at java.awt.Component.processEvent(Component.java:6179)
    at java.awt.Container.processEvent(Container.java:2084)
    at java.awt.Component.dispatchEventImpl(Component.java:4776)
    at java.awt.Container.dispatchEventImpl(Container.java:2142)
    at java.awt.Component.dispatchEvent(Component.java:4604)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4618)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4279)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4209)
    at java.awt.Container.dispatchEventImpl(Container.java:2128)
    at java.awt.Window.dispatchEventImpl(Window.java:2492)
    at java.awt.Component.dispatchEvent(Component.java:4604)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:717)
    at java.awt.EventQueue.access$400(EventQueue.java:82)
    at java.awt.EventQueue$2.run(EventQueue.java:676)
    at java.awt.EventQueue$2.run(EventQueue.java:674)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:690)
    at java.awt.EventQueue$3.run(EventQueue.java:688)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:687)
    at com.intellij.ide.IdeEventQueue.e(IdeEventQueue.java:697)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:520)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:335)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:205)
    at java.awt.Dialog$1.run(Dialog.java:1049)
    at java.awt.Dialog$3.run(Dialog.java:1101)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.awt.Dialog.show(Dialog.java:1099)
    at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl$MyDialog.show(DialogWrapperPeerImpl.java:787)
    at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl.show(DialogWrapperPeerImpl.java:463)
    at com.intellij.openapi.ui.DialogWrapper.showAndGetOk(DialogWrapper.java:1555)
    at com.intellij.openapi.ui.DialogWrapper.show(DialogWrapper.java:1522)
    at com.intellij.openapi.ui.DialogBuilder.showImpl(DialogBuilder.java:81)
    at com.intellij.openapi.ui.DialogBuilder.show(DialogBuilder.java:54)
    at com.intellij.plugins.bodhi.pmd.PMDConfigurationForm.modifyRuleSet(PMDConfigurationForm.java:132)
    at com.intellij.plugins.bodhi.pmd.PMDConfigurationForm.access$200(PMDConfigurationForm.java:31)
    at com.intellij.plugins.bodhi.pmd.PMDConfigurationForm$AddRuleSetAction.actionPerformed(PMDConfigurationForm.java:167)
    at com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAware(ActionUtil.java:164)
    at com.intellij.openapi.actionSystem.impl.ActionButton.a(ActionButton.java:170)
    at com.intellij.openapi.actionSystem.impl.ActionButton.a(ActionButton.java:133)
    at com.intellij.openapi.actionSystem.impl.ActionButton.processMouseEvent(ActionButton.java:313)
    at java.awt.Component.processEvent(Component.java:6179)
    at java.awt.Container.processEvent(Container.java:2084)
    at java.awt.Component.dispatchEventImpl(Component.java:4776)
    at java.awt.Container.dispatchEventImpl(Container.java:2142)
    at java.awt.Component.dispatchEvent(Component.java:4604)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4618)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4279)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4209)
    at java.awt.Container.dispatchEventImpl(Container.java:2128)
    at java.awt.Window.dispatchEventImpl(Window.java:2492)
    at java.awt.Component.dispatchEvent(Component.java:4604)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:717)
    at java.awt.EventQueue.access$400(EventQueue.java:82)
    at java.awt.EventQueue$2.run(EventQueue.java:676)
    at java.awt.EventQueue$2.run(EventQueue.java:674)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:690)
    at java.awt.EventQueue$3.run(EventQueue.java:688)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:687)
    at com.intellij.ide.IdeEventQueue.e(IdeEventQueue.java:697)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:520)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:335)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:205)
    at java.awt.Dialog$1.run(Dialog.java:1049)
    at java.awt.Dialog$3.run(Dialog.java:1101)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.awt.Dialog.show(Dialog.java:1099)
    at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl$MyDialog.show(DialogWrapperPeerImpl.java:787)
    at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl.show(DialogWrapperPeerImpl.java:463)
    at com.intellij.openapi.ui.DialogWrapper.showAndGetOk(DialogWrapper.java:1555)
    at com.intellij.openapi.ui.DialogWrapper.show(DialogWrapper.java:1522)
    at com.intellij.ide.actions.ShowSettingsUtilImpl.showSettingsDialog(ShowSettingsUtilImpl.java:164)
    at com.intellij.ide.actions.GotoActionAction$4.run(GotoActionAction.java:100)
    at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.run(LaterInvocator.java:319)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:715)
    at java.awt.EventQueue.access$400(EventQueue.java:82)
    at java.awt.EventQueue$2.run(EventQueue.java:676)
    at java.awt.EventQueue$2.run(EventQueue.java:674)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:685)
    at com.intellij.ide.IdeEventQueue.e(IdeEventQueue.java:697)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:524)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:335)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)



java.lang.NullPointerException
    at com.apple.laf.AquaFileChooserUI$ScrollPaneCornerPanel.paintComponent(AquaFileChooserUI.java:1736)
    at javax.swing.JComponent.paint(JComponent.java:1037)
    at javax.swing.JComponent.paintChildren(JComponent.java:870)
    at javax.swing.JComponent.paint(JComponent.java:1046)
    at javax.swing.JComponent.paintChildren(JComponent.java:870)
    at javax.swing.JComponent.paint(JComponent.java:1046)
    at javax.swing.JComponent.paintChildren(JComponent.java:870)
    at javax.swing.JComponent.paint(JComponent.java:1046)
    at javax.swing.JComponent.paintChildren(JComponent.java:870)
    at javax.swing.JComponent.paint(JComponent.java:1046)
    at javax.swing.JComponent.paintChildren(JComponent.java:870)
    at javax.swing.JComponent.paint(JComponent.java:1046)
    at javax.swing.JComponent.paintChildren(JComponent.java:870)
    at javax.swing.JComponent.paint(JComponent.java:1046)
    at javax.swing.JLayeredPane.paint(JLayeredPane.java:567)
    at javax.swing.JComponent.paintChildren(JComponent.java:870)
    at javax.swing.JComponent.paint(JComponent.java:1046)
    at java.awt.GraphicsCallback$PaintCallback.run(GraphicsCallback.java:34)
    at sun.awt.SunGraphicsCallback.runOneComponent(SunGraphicsCallback.java:60)
    at sun.awt.SunGraphicsCallback.runComponents(SunGraphicsCallback.java:97)
    at java.awt.Container.paint(Container.java:1792)
    at java.awt.Window.paint(Window.java:3393)
    at sun.awt.RepaintArea.paintComponent(RepaintArea.java:276)
    at sun.awt.RepaintArea.paint(RepaintArea.java:241)
    at apple.awt.ComponentModel.handleEvent(ComponentModel.java:263)
    at apple.awt.CWindow.handleEvent(CWindow.java:545)
    at java.awt.Component.dispatchEventImpl(Component.java:4852)
    at java.awt.Container.dispatchEventImpl(Container.java:2142)
    at java.awt.Window.dispatchEventImpl(Window.java:2492)
    at java.awt.Component.dispatchEvent(Component.java:4604)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:717)
    at java.awt.EventQueue.access$400(EventQueue.java:82)
    at java.awt.EventQueue$2.run(EventQueue.java:676)
    at java.awt.EventQueue$2.run(EventQueue.java:674)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:690)
    at java.awt.EventQueue$3.run(EventQueue.java:688)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:687)
    at com.intellij.ide.IdeEventQueue.e(IdeEventQueue.java:697)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:524)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:335)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:205)
    at java.awt.Dialog$1.run(Dialog.java:1049)
    at java.awt.Dialog$3.run(Dialog.java:1101)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.awt.Dialog.show(Dialog.java:1099)
    at javax.swing.JFileChooser.privateShowDialog(JFileChooser.java:758)
    at javax.swing.JFileChooser.showDialog(JFileChooser.java:721)
    at com.intellij.plugins.bodhi.pmd.PMDConfigurationForm$BrowsePanel$1.actionPerformed(PMDConfigurationForm.java:301)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
    at java.awt.Component.processMouseEvent(Component.java:6414)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3275)
    at java.awt.Component.processEvent(Component.java:6179)
    at java.awt.Container.processEvent(Container.java:2084)
    at java.awt.Component.dispatchEventImpl(Component.java:4776)
    at java.awt.Container.dispatchEventImpl(Container.java:2142)
    at java.awt.Component.dispatchEvent(Component.java:4604)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4618)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4279)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4209)
    at java.awt.Container.dispatchEventImpl(Container.java:2128)
    at java.awt.Window.dispatchEventImpl(Window.java:2492)
    at java.awt.Component.dispatchEvent(Component.java:4604)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:717)
    at java.awt.EventQueue.access$400(EventQueue.java:82)
    at java.awt.EventQueue$2.run(EventQueue.java:676)
    at java.awt.EventQueue$2.run(EventQueue.java:674)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:690)
    at java.awt.EventQueue$3.run(EventQueue.java:688)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:687)
    at com.intellij.ide.IdeEventQueue.e(IdeEventQueue.java:697)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:520)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:335)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:205)
    at java.awt.Dialog$1.run(Dialog.java:1049)
    at java.awt.Dialog$3.run(Dialog.java:1101)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.awt.Dialog.show(Dialog.java:1099)
    at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl$MyDialog.show(DialogWrapperPeerImpl.java:787)
    at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl.show(DialogWrapperPeerImpl.java:463)
    at com.intellij.openapi.ui.DialogWrapper.showAndGetOk(DialogWrapper.java:1555)
    at com.intellij.openapi.ui.DialogWrapper.show(DialogWrapper.java:1522)
    at com.intellij.openapi.ui.DialogBuilder.showImpl(DialogBuilder.java:81)
    at com.intellij.openapi.ui.DialogBuilder.show(DialogBuilder.java:54)
    at com.intellij.plugins.bodhi.pmd.PMDConfigurationForm.modifyRuleSet(PMDConfigurationForm.java:132)
    at com.intellij.plugins.bodhi.pmd.PMDConfigurationForm.access$200(PMDConfigurationForm.java:31)
    at com.intellij.plugins.bodhi.pmd.PMDConfigurationForm$AddRuleSetAction.actionPerformed(PMDConfigurationForm.java:167)
    at com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAware(ActionUtil.java:164)
    at com.intellij.openapi.actionSystem.impl.ActionButton.a(ActionButton.java:170)
    at com.intellij.openapi.actionSystem.impl.ActionButton.a(ActionButton.java:133)
    at com.intellij.openapi.actionSystem.impl.ActionButton.processMouseEvent(ActionButton.java:313)
    at java.awt.Component.processEvent(Component.java:6179)
    at java.awt.Container.processEvent(Container.java:2084)
    at java.awt.Component.dispatchEventImpl(Component.java:4776)
    at java.awt.Container.dispatchEventImpl(Container.java:2142)
    at java.awt.Component.dispatchEvent(Component.java:4604)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4618)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4279)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4209)
    at java.awt.Container.dispatchEventImpl(Container.java:2128)
    at java.awt.Window.dispatchEventImpl(Window.java:2492)
    at java.awt.Component.dispatchEvent(Component.java:4604)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:717)
    at java.awt.EventQueue.access$400(EventQueue.java:82)
    at java.awt.EventQueue$2.run(EventQueue.java:676)
    at java.awt.EventQueue$2.run(EventQueue.java:674)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:690)
    at java.awt.EventQueue$3.run(EventQueue.java:688)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:687)
    at com.intellij.ide.IdeEventQueue.e(IdeEventQueue.java:697)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:520)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:335)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:205)
    at java.awt.Dialog$1.run(Dialog.java:1049)
    at java.awt.Dialog$3.run(Dialog.java:1101)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.awt.Dialog.show(Dialog.java:1099)
    at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl$MyDialog.show(DialogWrapperPeerImpl.java:787)
    at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl.show(DialogWrapperPeerImpl.java:463)
    at com.intellij.openapi.ui.DialogWrapper.showAndGetOk(DialogWrapper.java:1555)
    at com.intellij.openapi.ui.DialogWrapper.show(DialogWrapper.java:1522)
    at com.intellij.ide.actions.ShowSettingsUtilImpl.showSettingsDialog(ShowSettingsUtilImpl.java:164)
    at com.intellij.ide.actions.GotoActionAction$4.run(GotoActionAction.java:100)
    at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.run(LaterInvocator.java:319)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:715)
    at java.awt.EventQueue.access$400(EventQueue.java:82)
    at java.awt.EventQueue$2.run(EventQueue.java:676)
    at java.awt.EventQueue$2.run(EventQueue.java:674)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:86)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:685)
    at com.intellij.ide.IdeEventQueue.e(IdeEventQueue.java:697)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:524)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:335)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

Error creating a Custom RuleSet

While trying to add a new ruleset, it is throwing the below error message:

"the selected file is not a valid PMD ruleset: Can't find resource 'category/apex/design.xml' for rule 'ExcessiveClassLength'. Make sure the resource us a valid file or URL and is on The CLASSPATH."

Can you please help me out! Thanks!
Here is my xml:


Default ruleset used for Salesforce.com Apex

3 3 4 3 4 1 1 1 1 1 3 1 4 4 4 4 1 1 3 3 1 3 1 1 1 3 3 3 3 4 4 4 4 3 3 3 3 3

Support for Incremental Analysis

Since version 6.0.0 PMD allows to cache the outcome of the SCA.
The plugin should be able to leverage such a nice feature by setting a per module cache file.

IntelliJ IDEA 2016.2 How to add a custom RuleSet ?

When I add a ruleset I get a Couldn't find the class ... error.

Do you have an example on how I would add a new custom ruleset that works?
Maybe tell me what classpath it's looking at or what I need to change in the ruleset file to get it to work?

Thank you or your help.

IntelliJ NPE

I get the following after installing and enabling the plug in in 13.1.5

Cannot load project: com.intellij.ide.plugins.PluginManager$StartupAbortedException: java.lang.NullPointerException

Plugin 'PMDPlugin' failed to initialize and will be disabled. Please restart IntelliJ IDEA.

java.lang.NullPointerException
at com.intellij.plugins.bodhi.pmd.PMDProjectComponent.initComponent(PMDProjectComponent.java:76)
at com.intellij.openapi.components.impl.ComponentManagerImpl$ComponentConfigComponentAdapter$1.getComponentInstance(ComponentManagerImpl.java:548)
at com.intellij.openapi.components.impl.ComponentManagerImpl$ComponentConfigComponentAdapter.getComponentInstance(ComponentManagerImpl.java:590)
at com.intellij.util.pico.DefaultPicoContainer.getLocalInstance(DefaultPicoContainer.java:225)
at com.intellij.util.pico.DefaultPicoContainer.getInstance(DefaultPicoContainer.java:212)
at com.intellij.util.pico.DefaultPicoContainer.getComponentInstance(DefaultPicoContainer.java:199)
at org.picocontainer.alternatives.AbstractDelegatingMutablePicoContainer.getComponentInstance(AbstractDelegatingMutablePicoContainer.java:75)
at com.intellij.openapi.components.impl.ComponentManagerImpl.createComponent(ComponentManagerImpl.java:121)
at com.intellij.openapi.components.impl.ComponentManagerImpl.a(ComponentManagerImpl.java:112)
at com.intellij.openapi.components.impl.ComponentManagerImpl.init(ComponentManagerImpl.java:89)
at com.intellij.openapi.project.impl.ProjectImpl.init(ProjectImpl.java:296)
at com.intellij.openapi.project.impl.ProjectManagerImpl.a(ProjectManagerImpl.java:280)
at com.intellij.openapi.project.impl.ProjectManagerImpl.access$400(ProjectManagerImpl.java:83)
at com.intellij.openapi.project.impl.ProjectManagerImpl$10.compute(ProjectManagerImpl.java:580)
at com.intellij.openapi.project.impl.ProjectManagerImpl$10.compute(ProjectManagerImpl.java:576)
at com.intellij.openapi.progress.impl.ProgressManagerImpl$4.run(ProgressManagerImpl.java:240)
at com.intellij.openapi.progress.impl.ProgressManagerImpl$TaskRunnable.run(ProgressManagerImpl.java:471)
at com.intellij.openapi.progress.impl.ProgressManagerImpl$6.run(ProgressManagerImpl.java:281)
at com.intellij.openapi.progress.impl.ProgressManagerImpl$2.run(ProgressManagerImpl.java:178)
at com.intellij.openapi.progress.ProgressManager.executeProcessUnderProgress(ProgressManager.java:209)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:212)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.runProcess(ProgressManagerImpl.java:171)
at com.intellij.openapi.application.impl.ApplicationImpl$10$1.run(ApplicationImpl.java:645)
at com.intellij.openapi.application.impl.ApplicationImpl$8.run(ApplicationImpl.java:419)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:695)
at com.intellij.openapi.application.impl.ApplicationImpl$1$1.run(ApplicationImpl.java:149)

Update to PMD 5.6.1

The latest version of the Maven PMD plugin (3.8) is using PMD 5.6.1. It would be nice if the IntelliJ plugin could be updated to match that, as there are some new and modified rules compared to PMD 5.5.1.

NPE during background scan.

Hi,

with IntelliJ IDEA 13.0.2 and jre 1.7.09_b05 amd64
and QAPlug v 1.3.7, QAPlug - PMD v 1.3.6
on Windows 7 Enterprise 64bit, service pack 1.
I am getting many NPE exceptions, as the plug in does it background scan (QAPlug Real-Time Analysis is selected) here are three NullPointerException exceptions..

EXCEPTION-1

null
java.lang.NullPointerException
at com.soldevelo.pmd.PMDChecker.generateReport(PMDChecker.java:341)
at com.soldevelo.pmd.PMDChecker.run(PMDChecker.java:146)
at com.soldevelo.pmd.PMDManagerImpl.performAnalysis(PMDManagerImpl.java:81)
at com.soldevelo.qaplug.scanner.ScannerManagerImpl.performAnalysisOnTheFly(ScannerManagerImpl.java:139)
at com.soldevelo.qaplug.inspection.QAPlugInspection.checkFile(QAPlugInspection.java:118)
at com.intellij.codeInspection.LocalInspectionTool$1.visitFile(LocalInspectionTool.java:144)
at com.intellij.psi.impl.source.PsiCodeFragmentImpl.accept(PsiCodeFragmentImpl.java:178)
at com.intellij.codeInspection.InspectionEngine.acceptElements(InspectionEngine.java:74)
at com.intellij.codeInspection.InspectionEngine.createVisitorAndAcceptElements(InspectionEngine.java:63)
at com.intellij.codeInsight.daemon.impl.LocalInspectionsPass.a(LocalInspectionsPass.java:358)
at com.intellij.codeInsight.daemon.impl.LocalInspectionsPass.access$000(LocalInspectionsPass.java:75)
at com.intellij.codeInsight.daemon.impl.LocalInspectionsPass$3.process(LocalInspectionsPass.java:327)
at com.intellij.codeInsight.daemon.impl.LocalInspectionsPass$3.process(LocalInspectionsPass.java:324)
at com.intellij.concurrency.ApplierCompleter.a(ApplierCompleter.java:119)
at com.intellij.concurrency.ApplierCompleter.access$000(ApplierCompleter.java:42)
at com.intellij.concurrency.ApplierCompleter$1.run(ApplierCompleter.java:82)
at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1150)
at com.intellij.concurrency.ApplierCompleter$2.run(ApplierCompleter.java:91)
at com.intellij.openapi.progress.ProgressManager.executeProcessUnderProgress(ProgressManager.java:209)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:212)
at com.intellij.concurrency.ApplierCompleter.a(ApplierCompleter.java:103)
at com.intellij.concurrency.ApplierCompleter.compute(ApplierCompleter.java:79)
at jsr166e.CountedCompleter.exec(CountedCompleter.java:684)
at jsr166e.ForkJoinTask.doExec(ForkJoinTask.java:260)
at jsr166e.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:858)
at jsr166e.ForkJoinPool.scan(ForkJoinPool.java:1687)
at jsr166e.ForkJoinPool.runWorker(ForkJoinPool.java:1642)
at jsr166e.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:109)

EXCEPTION-2

null
java.lang.NullPointerException
at com.soldevelo.pmd.PMDChecker.generateReport(PMDChecker.java:341)
at com.soldevelo.pmd.PMDChecker.run(PMDChecker.java:146)
at com.soldevelo.pmd.PMDManagerImpl.performAnalysis(PMDManagerImpl.java:81)
at com.soldevelo.qaplug.scanner.ScannerManagerImpl.performAnalysisOnTheFly(ScannerManagerImpl.java:139)
at com.soldevelo.qaplug.inspection.QAPlugInspection.checkFile(QAPlugInspection.java:118)
at com.intellij.codeInspection.LocalInspectionTool$1.visitFile(LocalInspectionTool.java:144)
at com.intellij.psi.impl.source.PsiCodeFragmentImpl.accept(PsiCodeFragmentImpl.java:178)
at com.intellij.codeInspection.InspectionEngine.acceptElements(InspectionEngine.java:74)
at com.intellij.codeInsight.daemon.impl.LocalInspectionsPass$5.process(LocalInspectionsPass.java:382)
at com.intellij.codeInsight.daemon.impl.LocalInspectionsPass$5.process(LocalInspectionsPass.java:377)
at com.intellij.concurrency.ApplierCompleter.a(ApplierCompleter.java:119)
at com.intellij.concurrency.ApplierCompleter.access$000(ApplierCompleter.java:42)
at com.intellij.concurrency.ApplierCompleter$1.run(ApplierCompleter.java:82)
at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1150)
at com.intellij.concurrency.ApplierCompleter$2.run(ApplierCompleter.java:91)
at com.intellij.openapi.progress.ProgressManager.executeProcessUnderProgress(ProgressManager.java:209)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:212)
at com.intellij.concurrency.ApplierCompleter.a(ApplierCompleter.java:103)
at com.intellij.concurrency.ApplierCompleter.compute(ApplierCompleter.java:79)
at jsr166e.CountedCompleter.exec(CountedCompleter.java:684)
at jsr166e.ForkJoinTask.doExec(ForkJoinTask.java:260)
at jsr166e.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:858)
at jsr166e.ForkJoinPool.scan(ForkJoinPool.java:1687)
at jsr166e.ForkJoinPool.runWorker(ForkJoinPool.java:1642)
at jsr166e.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:109)

EXCEPTION-3

null
java.lang.NullPointerException
at com.soldevelo.pmd.PMDChecker.generateReport(PMDChecker.java:341)
at com.soldevelo.pmd.PMDChecker.run(PMDChecker.java:146)
at com.soldevelo.pmd.PMDManagerImpl.performAnalysis(PMDManagerImpl.java:81)
at com.soldevelo.qaplug.scanner.ScannerManagerImpl.performAnalysisOnTheFly(ScannerManagerImpl.java:139)
at com.soldevelo.qaplug.inspection.QAPlugInspection.checkFile(QAPlugInspection.java:118)
at com.intellij.codeInspection.LocalInspectionTool$1.visitFile(LocalInspectionTool.java:144)
at com.intellij.psi.impl.source.xml.XmlFileImpl.accept(XmlFileImpl.java:74)
at com.intellij.codeInspection.InspectionEngine.acceptElements(InspectionEngine.java:74)
at com.intellij.codeInsight.daemon.impl.LocalInspectionsPass$5.process(LocalInspectionsPass.java:382)
at com.intellij.codeInsight.daemon.impl.LocalInspectionsPass$5.process(LocalInspectionsPass.java:377)
at com.intellij.concurrency.ApplierCompleter.a(ApplierCompleter.java:119)
at com.intellij.concurrency.ApplierCompleter.access$000(ApplierCompleter.java:42)
at com.intellij.concurrency.ApplierCompleter$1.run(ApplierCompleter.java:82)
at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1150)
at com.intellij.concurrency.ApplierCompleter$2.run(ApplierCompleter.java:91)
at com.intellij.openapi.progress.ProgressManager.executeProcessUnderProgress(ProgressManager.java:209)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:212)
at com.intellij.concurrency.ApplierCompleter.a(ApplierCompleter.java:103)
at com.intellij.concurrency.ApplierCompleter.compute(ApplierCompleter.java:79)
at jsr166e.CountedCompleter.exec(CountedCompleter.java:684)
at jsr166e.ForkJoinTask.doExec(ForkJoinTask.java:260)
at jsr166e.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:858)
at jsr166e.ForkJoinPool.scan(ForkJoinPool.java:1687)
at jsr166e.ForkJoinPool.runWorker(ForkJoinPool.java:1642)
at jsr166e.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:109)

Update to PMD 5.5.1 to support Apex?

The Salesforce Apex language has been added to PMD in versions 5.5.x since the last time this plugin was updated, can the plugin be updated to support the new features?

Opens a new file with a different editor

When double clicked on rule violation in PMD window, it opens a file not taking into consideration that file was already opened. File is opened in different editor window

License

That license is used for plugin. Could you please add license to repository

Issues severity

As a user I would like to see severity of each rule violation with possible filtering.

comical overcounting of totals in results pane

I am not sure what is going on with the arithmetic for the totals... The folders that only contain actual warnings make sense. (The nodes a single step in from the leaves.) But the folders one level up from that do not.

This screenshot was produced by right-clicking on my src folder in the product structure and choosing Run PMD => Pre Defined => All from the resulting context menu.

screen shot 2014-08-24 at 8 05 30 pm

Cancelling the scan has no effect

I started a scan, and then decided I didn't want it. So I clicked Cancel. Now the button stays in pressed state, but it continues on scanning.

See the screenshot. I cancelled right away, while it was still scanning the Android ruleset, but it's still continuing:
screenshot from 2017-03-30 13-50-48

I'm running PMDPlugin 1.8.1 and IDEA 17.1.

Plugin doesn't show up in the menu

I installed PMDPlugin 1.7.1 in Idea Ultimate 13.1.6, but it doesn't show up anywhere. I would have expected some kind of menu entry in tools or analyze, but there's neither.

Use Xpath 2.0

Hi,
how can I specify to use Xpath 2.0 for a custom rule in IntelliJ?

My rule is working in the designer if I select Xpath 2.0, but when I use it in IntelliJ Xpath 1.0 is used.

Thanks and cheers,

Sven

Newest PMDPlugin doesn't work with IntelliJ 13.1.1: Compiled with wrong Java version?

After updating PMDPlugin can't be used anymore with the latest IntelliJ version. It shows the following startup screen. IntelliJ runs on a JDK6, it seems like PMDPlugin has been compiled using JDK7:

Plugin 'PMDPlugin' failed to initialize and will be disabled. Please restart IntelliJ IDEA.

com.intellij.diagnostic.PluginException: com/intellij/plugins/bodhi/pmd/PMDProjectComponent : Unsupported major.minor version 51.0 [Plugin: PMDPlugin]
at com.intellij.ide.plugins.cl.PluginClassLoader.b(PluginClassLoader.java:130)
at com.intellij.ide.plugins.cl.PluginClassLoader.a(PluginClassLoader.java:77)
at com.intellij.ide.plugins.cl.PluginClassLoader.loadClass(PluginClassLoader.java:66)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:249)
at com.intellij.openapi.components.impl.ComponentManagerImpl$ComponentsRegistry.a(ComponentManagerImpl.java:408)
at com.intellij.openapi.components.impl.ComponentManagerImpl$ComponentsRegistry.a(ComponentManagerImpl.java:398)
at com.intellij.openapi.components.impl.ComponentManagerImpl$ComponentsRegistry.access$000(ComponentManagerImpl.java:384)
at com.intellij.openapi.components.impl.ComponentManagerImpl.a(ComponentManagerImpl.java:107)
at com.intellij.openapi.components.impl.ComponentManagerImpl.init(ComponentManagerImpl.java:89)
at com.intellij.openapi.project.impl.ProjectImpl.init(ProjectImpl.java:296)
at com.intellij.openapi.project.impl.ProjectManagerImpl.a(ProjectManagerImpl.java:281)
at com.intellij.openapi.project.impl.ProjectManagerImpl.access$300(ProjectManagerImpl.java:83)
at com.intellij.openapi.project.impl.ProjectManagerImpl$9.compute(ProjectManagerImpl.java:569)
at com.intellij.openapi.project.impl.ProjectManagerImpl$9.compute(ProjectManagerImpl.java:565)
at com.intellij.openapi.progress.impl.ProgressManagerImpl$4.run(ProgressManagerImpl.java:240)
at com.intellij.openapi.progress.impl.ProgressManagerImpl$TaskRunnable.run(ProgressManagerImpl.java:464)
at com.intellij.openapi.progress.impl.ProgressManagerImpl$6.run(ProgressManagerImpl.java:274)
at com.intellij.openapi.progress.impl.ProgressManagerImpl$2.run(ProgressManagerImpl.java:178)
at com.intellij.openapi.progress.ProgressManager.executeProcessUnderProgress(ProgressManager.java:209)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:212)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.runProcess(ProgressManagerImpl.java:171)
at com.intellij.openapi.application.impl.ApplicationImpl$10$1.run(ApplicationImpl.java:645)
at com.intellij.openapi.application.impl.ApplicationImpl$8.run(ApplicationImpl.java:419)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:439)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
at java.lang.Thread.run(Thread.java:695)
at com.intellij.openapi.application.impl.ApplicationImpl$1$1.run(ApplicationImpl.java:149)

Please enable Navigate > Next / Previous Occurrence in the editor pane

As a user, I want to be able to fix batches of small issues quickly and efficiently by using the keyboard as much as possible. So, I'd like to use the Navigate > Next shortcut (bound to Ctrl-Alt-Down on Linux) to jump to the next issue all within the editor pane, without having to reach for the mouse in order to active the PMD tool window and click the next item.
QAPlug-PMD supports this but PMD-IntelliJ does not, perhaps some additional work is required?

Plugin incompatible with Android Studio 2.1

The plugin is not available for using with Android Studio 2.1. Also including the plugin locally does not work, since the specified idea-version is too new. I've tried enabling the plugin by downgrading to version 143 (which I think is the basis for Android Studio 2.1). But while installation is not prevented using this setting, the plugin seems to be automatically removed at startup, silently without generating any error.

Related issue #18

Setting TargetJDK is lost when not tabbing out of that table cell

In File - Settings - PMD - Options - TagetJDK, you need to set your Java version. Default is 1.4 now, and if you leave it like that, for example Enum classes or @annotations will result in Parse errors.

If you change it to e.g. 1.8 and OK or Apply, the value does not really change. If you revisit the options, you see it is still on 1.4. If you tab out of the cell first, it behaves correctly: the value will persist.

I would like the changed value to persist without the need to tab out of the cell.

See #36

adding custom ruleset required IntelliJ restart

I am using IntelliJ Ultimate 13.1.4 (Build #IU135.1230) on Mac OS X 10.9.4 on JRE 1.6.0_65-b14-462-11M4609 x86_64

Reproduction steps:

  1. Open Preferences => PMD => +
  2. Click Browse in the dialog box
  3. Navigate to the pmd.xml file in the resulting file chooser
  4. The path to the file is displayed in the text box of the dialog
  5. Click OK on the dialog

Expected:

  • the path to the file should be listed in the list of custom rules
  • the Custom Rules menu option should be active, and the file available to choose

Actual:

  • nothing is listed in the list of custom rules (although the '-' and edit buttons become active)
  • the Tools => Run PMD => Custom Rules menu is still disabled

After restarting IntelliJ, reality matched expectation. But, I wasn't expecting to have to restart, and there was no indication that I should.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.