Search code examples
javaconstructorsonarqubesonarqube-scandefault-constructor

How to disable warning on Sonar: Hide Utility Class Constructor?


I'm getting this warning on Sonar:

Hide Utility Class Constructor:

Utility classes should not have a public or default constructor

My class:

public class FilePathHelper {
    private static String resourcesPath;
    public static String getFilePath(HttpServletRequest request) {
        if(resourcesPath == null) {
            String serverpath = request.getSession()
                                       .getServletContext()
                                       .getRealPath("");
            resourcesPath = serverpath + "/WEB-INF/classes/";   
        }
        return resourcesPath;       
    }
}

I want solution to remove this warning on Sonar Qube.


Solution

  • If this class is only a utility class, you should make the class final and define a private constructor:

    public final class FilePathHelper {
       private FilePathHelper() {
          //not called
       }
    }
    

    This prevents the default parameter-less constructor from being used elsewhere in your code.

    Additionally, you can make the class final, so that it can't be extended in subclasses, which is a best practice for utility classes. Since you declared only a private constructor, other classes wouldn't be able to extend it anyway, but it is still a best practice to mark the class as final.