Java


JAVA.CLASS.VIS.METH.PRIV : Method Should be private (Java)

Summary

A method in a weakly protected class is public, but should not be.

We call a class weakly protected if its objects are run in unsafe contexts and so its application programming interface should be as protective as possible. The checker has a built-in set of classes that are considered weakly protected: for example, java.applet.Applet. To specify additional classes should be treated as weakly protected, annotate them with @WeaklyProtected (com.juliasoft.julia.checkers.methodShouldBePrivate.WeaklyProtected).

The checker will not issue a warning for a method that overrides another method, or that is overridden in subclasses.

Properties

Class Name Method Should be private (Java)
Significance reliability
Mnemonic JAVA.CLASS.VIS.METH.PRIV
Categories
CWE CWE:1061 Insufficient Encapsulation
Availability Available for Java only.
Enabling Checks for this warning class are disabled by default. To enable them, add the following WARNING_FILTER rule to the project configuration file.
WARNING_FILTER += allow class="Method Should be private (Java)"

Example

In the following code, class MyApplet is weakly protected: public method getNumberOfStart() is defined on an applet.

// MyApplet.java 
import java.applet.Applet;

public class MyApplet extends Applet {
  private int counter;

  @Override
  public void init() {                       // ok: overrides another method 
      counter = 0;
  }

  @Override
  public void start() {                      // ok: overrides another method 
      countOneMoreStart();
  }

  public int getNumberOfStart() {  // "Method Should be private (Java)" warning issued here 
      return counter;
  }

  protected void countOneMoreStart() {       // ok: non-public 
      counter++;
  }
}

In this example, the programmer should make that method private, as follows:

// MyApplet.java, after modification 
import java.applet.Applet;

public class MyApplet extends Applet {
  private int counter;

  @Override
  public void init() {
      counter = 0;
  }

  @Override
  public void start() {
      countOneMoreStart();
  }

  private int getNumberOfStart() {
      return counter;
  }

  protected void countOneMoreStart() {
      counter++;
  }
}

Relevant Configuration File Parameters

The following configuration file parameters affect checks for this warning class.