r4fterman/pdf.forms

View on GitHub
src/main/java/org/pdf/forms/gui/hierarchy/tree/CTree.java

Summary

Maintainability
A
2 hrs
Test Coverage
F
11%

Method dragGestureRecognized has 40 lines of code (exceeds 25 allowed). Consider refactoring.
Open

    @Override
    public void dragGestureRecognized(final DragGestureEvent event) {
        final Point ptDragOrigin = event.getDragOrigin();
        final TreePath path = getPathForLocation(ptDragOrigin.x, ptDragOrigin.y);
        if (path == null) {
Severity: Minor
Found in src/main/java/org/pdf/forms/gui/hierarchy/tree/CTree.java - About 1 hr to fix

    Method autoscroll has a Cognitive Complexity of 8 (exceeds 5 allowed). Consider refactoring.
    Open

        @Override
        public void autoscroll(final Point pt) {
            // Figure out which row we're on.
            int nRow = getRowForLocation(pt.x, pt.y);
    
    
    Severity: Minor
    Found in src/main/java/org/pdf/forms/gui/hierarchy/tree/CTree.java - About 45 mins to fix

    Cognitive Complexity

    Cognitive Complexity is a measure of how difficult a unit of code is to intuitively understand. Unlike Cyclomatic Complexity, which determines how difficult your code will be to test, Cognitive Complexity tells you how difficult your code will be to read and comprehend.

    A method's cognitive complexity is based on a few simple rules:

    • Code is not considered more complex when it uses shorthand that the language provides for collapsing multiple statements into one
    • Code is considered more complex for each "break in the linear flow of the code"
    • Code is considered more complex when "flow breaking structures are nested"

    Further reading

    Add a nested comment explaining why this method is empty, throw an UnsupportedOperationException or complete the implementation.
    Open

        public void dragOver(final DragSourceDragEvent e) {

    There are several reasons for a method not to have a method body:

    • It is an unintentional omission, and should be fixed to prevent an unexpected behavior in production.
    • It is not yet, or never will be, supported. In this case an UnsupportedOperationException should be thrown.
    • The method is an intentionally-blank override. In this case a nested comment should explain the reason for the blank override.

    Noncompliant Code Example

    public void doSomething() {
    }
    
    public void doSomethingElse() {
    }
    

    Compliant Solution

    @Override
    public void doSomething() {
      // Do nothing because of X and Y.
    }
    
    @Override
    public void doSomethingElse() {
      throw new UnsupportedOperationException();
    }
    

    Exceptions

    Default (no-argument) constructors are ignored when there are other constructors in the class, as are empty methods in abstract classes.

    public abstract class Animal {
      void speak() {  // default implementation ignored
      }
    }
    

    Add a nested comment explaining why this method is empty, throw an UnsupportedOperationException or complete the implementation.
    Open

        public void dragExit(final DragSourceEvent e) {

    There are several reasons for a method not to have a method body:

    • It is an unintentional omission, and should be fixed to prevent an unexpected behavior in production.
    • It is not yet, or never will be, supported. In this case an UnsupportedOperationException should be thrown.
    • The method is an intentionally-blank override. In this case a nested comment should explain the reason for the blank override.

    Noncompliant Code Example

    public void doSomething() {
    }
    
    public void doSomethingElse() {
    }
    

    Compliant Solution

    @Override
    public void doSomething() {
      // Do nothing because of X and Y.
    }
    
    @Override
    public void doSomethingElse() {
      throw new UnsupportedOperationException();
    }
    

    Exceptions

    Default (no-argument) constructors are ignored when there are other constructors in the class, as are empty methods in abstract classes.

    public abstract class Animal {
      void speak() {  // default implementation ignored
      }
    }
    

    Add a nested comment explaining why this method is empty, throw an UnsupportedOperationException or complete the implementation.
    Open

        public void dropActionChanged(final DragSourceDragEvent e) {

    There are several reasons for a method not to have a method body:

    • It is an unintentional omission, and should be fixed to prevent an unexpected behavior in production.
    • It is not yet, or never will be, supported. In this case an UnsupportedOperationException should be thrown.
    • The method is an intentionally-blank override. In this case a nested comment should explain the reason for the blank override.

    Noncompliant Code Example

    public void doSomething() {
    }
    
    public void doSomethingElse() {
    }
    

    Compliant Solution

    @Override
    public void doSomething() {
      // Do nothing because of X and Y.
    }
    
    @Override
    public void doSomethingElse() {
      throw new UnsupportedOperationException();
    }
    

    Exceptions

    Default (no-argument) constructors are ignored when there are other constructors in the class, as are empty methods in abstract classes.

    public abstract class Animal {
      void speak() {  // default implementation ignored
      }
    }
    

    Add a nested comment explaining why this method is empty, throw an UnsupportedOperationException or complete the implementation.
    Open

        public void dragEnter(final DragSourceDragEvent e) {

    There are several reasons for a method not to have a method body:

    • It is an unintentional omission, and should be fixed to prevent an unexpected behavior in production.
    • It is not yet, or never will be, supported. In this case an UnsupportedOperationException should be thrown.
    • The method is an intentionally-blank override. In this case a nested comment should explain the reason for the blank override.

    Noncompliant Code Example

    public void doSomething() {
    }
    
    public void doSomethingElse() {
    }
    

    Compliant Solution

    @Override
    public void doSomething() {
      // Do nothing because of X and Y.
    }
    
    @Override
    public void doSomethingElse() {
      throw new UnsupportedOperationException();
    }
    

    Exceptions

    Default (no-argument) constructors are ignored when there are other constructors in the class, as are empty methods in abstract classes.

    public abstract class Animal {
      void speak() {  // default implementation ignored
      }
    }
    

    This block of commented-out lines of code should be removed.
    Open

                    //System.out.println("REMOVING: " + pathSource.getLastPathComponent());

    Programmers should not comment out code as it bloats programs and reduces readability.

    Unused code should be deleted and can be retrieved from source control history if required.

    This block of commented-out lines of code should be removed.
    Open

                    //((DefaultMutableTreeNode) pathSource.getLastPathComponent()).removeFromParent();

    Programmers should not comment out code as it bloats programs and reduces readability.

    Unused code should be deleted and can be retrieved from source control history if required.

    This block of commented-out lines of code should be removed.
    Open

                    //((DefaultTreeModel)getModel()).removeNodeFromParent((MutableTreeNode) pathSource.getLastPathComponent());

    Programmers should not comment out code as it bloats programs and reduces readability.

    Unused code should be deleted and can be retrieved from source control history if required.

    Make "draggedImage" transient or serializable.
    Open

        private BufferedImage draggedImage;

    Fields in a Serializable class must themselves be either Serializable or transient even if the class is never explicitly serialized or deserialized. For instance, under load, most J2EE application frameworks flush objects to disk, and an allegedly Serializable object with non-transient, non-serializable data members could cause program crashes, and open the door to attackers. In general a Serializable class is expected to fulfil its contract and not have an unexpected behaviour when an instance is serialized.

    This rule raises an issue on non-Serializable fields, and on collection fields when they are not private (because they could be assigned non-Serializable values externally), and when they are assigned non-Serializable types within the class.

    Noncompliant Code Example

    public class Address {
      //...
    }
    
    public class Person implements Serializable {
      private static final long serialVersionUID = 1905122041950251207L;
    
      private String name;
      private Address address;  // Noncompliant; Address isn't serializable
    }
    

    Compliant Solution

    public class Address implements Serializable {
      private static final long serialVersionUID = 2405172041950251807L;
    }
    
    public class Person implements Serializable {
      private static final long serialVersionUID = 1905122041950251207L;
    
      private String name;
      private Address address;
    }
    

    Exceptions

    The alternative to making all members serializable or transient is to implement special methods which take on the responsibility of properly serializing and de-serializing the object. This rule ignores classes which implement the following methods:

     private void writeObject(java.io.ObjectOutputStream out)
         throws IOException
     private void readObject(java.io.ObjectInputStream in)
         throws IOException, ClassNotFoundException;
    

    See

    Parameter name 'e' must match pattern '^[a-z][a-z0-9][a-zA-Z0-9]*$'.
    Open

        public void dragDropEnd(final DragSourceDropEvent e) {

    Checks that method parameter names conform to a specified pattern.By using accessModifiers property it is possibleto specify different formats for methods at different visibility levels.

    To validate catch parameters please useCatchParameterName.

    To validate lambda parameters please useLambdaParameterName.

    This documentation is written and maintained by the Checkstyle community and is covered under the same license as the Checkstyle project.

    Parameter name 'e' must match pattern '^[a-z][a-z0-9][a-zA-Z0-9]*$'.
    Open

        public void dragOver(final DragSourceDragEvent e) {

    Checks that method parameter names conform to a specified pattern.By using accessModifiers property it is possibleto specify different formats for methods at different visibility levels.

    To validate catch parameters please useCatchParameterName.

    To validate lambda parameters please useLambdaParameterName.

    This documentation is written and maintained by the Checkstyle community and is covered under the same license as the Checkstyle project.

    Parameter name 'e' must match pattern '^[a-z][a-z0-9][a-zA-Z0-9]*$'.
    Open

        public void dropActionChanged(final DragSourceDragEvent e) {

    Checks that method parameter names conform to a specified pattern.By using accessModifiers property it is possibleto specify different formats for methods at different visibility levels.

    To validate catch parameters please useCatchParameterName.

    To validate lambda parameters please useLambdaParameterName.

    This documentation is written and maintained by the Checkstyle community and is covered under the same license as the Checkstyle project.

    Line is longer than 100 characters (found 101).
    Open

                    raInner.y - raOuter.y + AUTOSCROLL_MARGIN, raInner.x - raOuter.x + AUTOSCROLL_MARGIN,

    Checks for long lines.

    Rationale: Long lines are hard to read in printouts or if developershave limited screen space for the source code, e.g. if the IDEdisplays additional information like project tree, class hierarchy,etc.

    This documentation is written and maintained by the Checkstyle community and is covered under the same license as the Checkstyle project.

    Extra separation in import group before 'javax.swing.*'
    Open

    import javax.swing.*;

    Checks that the groups of import declarations appear in the order specifiedby the user. If there is an import but its group is not specified in theconfiguration such an import should be placed at the end of the import list.

    This documentation is written and maintained by the Checkstyle community and is covered under the same license as the Checkstyle project.

    Extra separation in import group before 'org.pdf.forms.gui.designer.IDesigner'
    Open

    import org.pdf.forms.gui.designer.IDesigner;

    Checks that the groups of import declarations appear in the order specifiedby the user. If there is an import but its group is not specified in theconfiguration such an import should be placed at the end of the import list.

    This documentation is written and maintained by the Checkstyle community and is covered under the same license as the Checkstyle project.

    Line is longer than 100 characters (found 106).
    Open

            // Remember the path being dragged (because if it is being moved, we will have to delete it later)

    Checks for long lines.

    Rationale: Long lines are hard to read in printouts or if developershave limited screen space for the source code, e.g. if the IDEdisplays additional information like project tree, class hierarchy,etc.

    This documentation is written and maintained by the Checkstyle community and is covered under the same license as the Checkstyle project.

    Parameter name 'e' must match pattern '^[a-z][a-z0-9][a-zA-Z0-9]*$'.
    Open

        public void dragEnter(final DragSourceDragEvent e) {

    Checks that method parameter names conform to a specified pattern.By using accessModifiers property it is possibleto specify different formats for methods at different visibility levels.

    To validate catch parameters please useCatchParameterName.

    To validate lambda parameters please useLambdaParameterName.

    This documentation is written and maintained by the Checkstyle community and is covered under the same license as the Checkstyle project.

    Line is longer than 100 characters (found 102).
    Open

            draggedImageMouseClickPoint.setLocation(ptDragOrigin.x - raPath.x, ptDragOrigin.y - raPath.y);

    Checks for long lines.

    Rationale: Long lines are hard to read in printouts or if developershave limited screen space for the source code, e.g. if the IDEdisplays additional information like project tree, class hierarchy,etc.

    This documentation is written and maintained by the Checkstyle community and is covered under the same license as the Checkstyle project.

    Using the '.*' form of import should be avoided - javax.swing.*.
    Open

    import javax.swing.*;

    Checks that there are no import statements that use the * notation.

    Rationale: Importing all classes from a package or staticmembers from a class leads to tight coupling between packagesor classes and might lead to problems when a new version of alibrary introduces name clashes.

    This documentation is written and maintained by the Checkstyle community and is covered under the same license as the Checkstyle project.

    Parameter name 'e' must match pattern '^[a-z][a-z0-9][a-zA-Z0-9]*$'.
    Open

        public void dragExit(final DragSourceEvent e) {

    Checks that method parameter names conform to a specified pattern.By using accessModifiers property it is possibleto specify different formats for methods at different visibility levels.

    To validate catch parameters please useCatchParameterName.

    To validate lambda parameters please useLambdaParameterName.

    This documentation is written and maintained by the Checkstyle community and is covered under the same license as the Checkstyle project.

    Line is longer than 100 characters (found 125).
    Open

            draggedImage = new BufferedImage((int) raPath.getWidth(), (int) raPath.getHeight(), BufferedImage.TYPE_INT_ARGB_PRE);

    Checks for long lines.

    Rationale: Long lines are hard to read in printouts or if developershave limited screen space for the source code, e.g. if the IDEdisplays additional information like project tree, class hierarchy,etc.

    This documentation is written and maintained by the Checkstyle community and is covered under the same license as the Checkstyle project.

    Local variable name 'nRow' must match pattern '^[a-z][a-z0-9][a-zA-Z0-9]*$'.
    Open

            int nRow = getRowForLocation(pt.x, pt.y);

    Checks that local, non-final variable names conform to a specified pattern.A catch parameter is considered to be a local variable.

    This documentation is written and maintained by the Checkstyle community and is covered under the same license as the Checkstyle project.

    Using the '.*' form of import should be avoided - java.awt.*.
    Open

    import java.awt.*;

    Checks that there are no import statements that use the * notation.

    Rationale: Importing all classes from a package or staticmembers from a class leads to tight coupling between packagesor classes and might lead to problems when a new version of alibrary introduces name clashes.

    This documentation is written and maintained by the Checkstyle community and is covered under the same license as the Checkstyle project.

    Line is longer than 100 characters (found 103).
    Open

                    // The dragged item (_pathSource) has been inserted at the target selected by the user.

    Checks for long lines.

    Rationale: Long lines are hard to read in printouts or if developershave limited screen space for the source code, e.g. if the IDEdisplays additional information like project tree, class hierarchy,etc.

    This documentation is written and maintained by the Checkstyle community and is covered under the same license as the Checkstyle project.

    Line is longer than 100 characters (found 123).
    Open

                    //((DefaultTreeModel)getModel()).removeNodeFromParent((MutableTreeNode) pathSource.getLastPathComponent());

    Checks for long lines.

    Rationale: Long lines are hard to read in printouts or if developershave limited screen space for the source code, e.g. if the IDEdisplays additional information like project tree, class hierarchy,etc.

    This documentation is written and maintained by the Checkstyle community and is covered under the same license as the Checkstyle project.

    Line is longer than 100 characters (found 222).
    Open

         * Autoscroll Interface... The following code was borrowed from the book: Java Swing By Robert Eckstein, Marc Loy & Dave Wood Paperback - 1221 pages 1 Ed edition (September 1998) O'Reilly & Associates; ISBN: 156592455X

    Checks for long lines.

    Rationale: Long lines are hard to read in printouts or if developershave limited screen space for the source code, e.g. if the IDEdisplays additional information like project tree, class hierarchy,etc.

    This documentation is written and maintained by the Checkstyle community and is covered under the same license as the Checkstyle project.

    There are no issues that match your filters.

    Category
    Status