Class Project

java.lang.Object
edu.umd.cs.findbugs.Project
All Implemented Interfaces:
XMLWriteable, AutoCloseable

public class Project extends Object implements XMLWriteable, AutoCloseable

A project in the GUI. This consists of some number of Jar files to analyze for bugs, and optionally

  • some number of source directories, for locating the program's source code
  • some number of auxiliary classpath entries, for locating classes referenced by the program which the user doesn't want to analyze
  • some number of boolean options
Author:
David Hovemeyer
  • Field Details

  • Constructor Details

    • Project

      public Project()
      Create an anonymous project.
  • Method Details

    • getPluginStatus

      @CheckForNull public Boolean getPluginStatus(Plugin plugin)
    • setPluginStatusTrinary

      public void setPluginStatusTrinary(String pluginId, Boolean enabled)
    • getConfiguration

      public UserPreferences getConfiguration()
    • setConfiguration

      public void setConfiguration(@Nonnull UserPreferences configuration)
      Parameters:
      configuration - The configuration to set, non null
    • duplicate

      public Project duplicate()
      Return an exact copy of this Project.
    • getSourceFinder

      public SourceFinder getSourceFinder()
    • isGuiAvaliable

      public boolean isGuiAvaliable()
    • add

      public void add(Project project2)
      add information from project2 to this project
    • appendWithoutDuplicates

      public static <T> List<T> appendWithoutDuplicates(List<T> lst1, List<T> lst2)
    • setCurrentWorkingDirectory

      public void setCurrentWorkingDirectory(File f)
    • isModified

      public boolean isModified()
      Return whether or not this Project has unsaved modifications.
    • setModified

      public void setModified(boolean isModified)
      Set whether or not this Project has unsaved modifications.
    • addFile

      public boolean addFile(String fileName)
      Add a file to the project.
      Parameters:
      fileName - the file to add
      Returns:
      true if the file was added, or false if the file was already present
    • addSourceDir

      @Deprecated public boolean addSourceDir(String sourceDir)
      Deprecated.
      Calling this method repeatedly performs poorly because a SourceFinder is created each time, which checks all files for existence each time. Use addSourceDirs(java.util.Collection<java.lang.String>) instead.
      Add a source directory to the project.
      Parameters:
      sourceDir - The source directory to add. These can be either an absolute path or relative to any of the working directories in this project object.
      Returns:
      true if the source directory was added or false if it was already present
    • addSourceDirs

      public boolean addSourceDirs(Collection<String> sourceDirs)
      Add source directories to the project.
      Parameters:
      sourceDirs - The source directories to add. These can be either absolute paths or relative to any of the working directories in this project object.
      Returns:
      true if a source directory was added or false if all source directories were already present
    • addWorkingDir

      public boolean addWorkingDir(String dirName)
      Add a working directory to the project.
      Parameters:
      dirName - the directory to add
      Returns:
      true if the working directory was added, or false if the working directory was already present
    • getFileCount

      public int getFileCount()
      Get the number of files in the project.
      Returns:
      the number of files in the project
    • getFile

      public String getFile(int num)
      Get the given file in the list of project files.
      Parameters:
      num - the number of the file in the list of project files
      Returns:
      the name of the file
    • removeFile

      public void removeFile(int num)
      Remove file at the given index in the list of project files
      Parameters:
      num - index of the file to remove in the list of project files
    • getFileList

      public List<String> getFileList()
      Get the list of files, directories, and zip files in the project.
    • getNumSourceDirs

      public int getNumSourceDirs()
      Get the number of source directories in the project.
      Returns:
      the number of source directories in the project
    • getSourceDir

      public String getSourceDir(int num)
      Get the given source directory.
      Parameters:
      num - the number of the source directory
      Returns:
      the source directory
    • removeSourceDir

      public void removeSourceDir(int num)
      Remove source directory at given index.
      Parameters:
      num - index of the source directory to remove
    • getFileArray

      public String[] getFileArray()
      Get project files as an array of Strings.
    • getSourceDirArray

      public String[] getSourceDirArray()
      Get source dirs as an array of Strings.
    • getSourceDirList

      public List<String> getSourceDirList()
      Get the source dir list.
    • addAuxClasspathEntry

      public boolean addAuxClasspathEntry(String auxClasspathEntry)
      Add an auxiliary classpath entry
      Parameters:
      auxClasspathEntry - the entry
      Returns:
      true if the entry was added successfully, or false if the given entry is already in the list
    • getNumAuxClasspathEntries

      public int getNumAuxClasspathEntries()
      Get the number of auxiliary classpath entries.
    • getAuxClasspathEntry

      public String getAuxClasspathEntry(int n)
      Get the n'th auxiliary classpath entry.
    • removeAuxClasspathEntry

      public void removeAuxClasspathEntry(int n)
      Remove the n'th auxiliary classpath entry.
    • getAuxClasspathEntryList

      public List<String> getAuxClasspathEntryList()
      Return the list of aux classpath entries.
    • getImplicitClasspathEntryList

      @Deprecated public List<String> getImplicitClasspathEntryList()
      Deprecated.
      FindBugs2 and ClassPathBuilder take care of this automatically
      Return the list of implicit classpath entries. The implicit classpath is computed from the closure of the set of jar files that are referenced by the "Class-Path" attribute of the manifest of the any jar file that is part of this project or by the "Class-Path" attribute of any directly or indirectly referenced jar. The referenced jar files that exist are the list of implicit classpath entries.
    • write

      @Deprecated public void write(String outputFile, boolean useRelativePaths, String relativeBase) throws IOException
      Deprecated.
      Save the project to an output file.
      Parameters:
      outputFile - name of output file
      useRelativePaths - true if the project should be written using only relative paths
      relativeBase - if useRelativePaths is true, this file is taken as the base directory in terms of which all files should be made relative
      Throws:
      IOException - if an error occurs while writing
    • readXML

      Throws:
      IOException
      SAXException
      ParserConfigurationException
    • writeXML

      public void writeXML(File f, @CheckForNull BugCollection bugCollection) throws IOException
      Throws:
      IOException
    • readProject

      public static Project readProject(String argument) throws IOException
      Read Project from named file.
      Parameters:
      argument - command line argument containing project file name
      Returns:
      the Project
      Throws:
      IOException
    • toString

      public String toString()
      Convert to a string in a nice (displayable) format.
      Overrides:
      toString in class Object
    • transformFilename

      public static String transformFilename(String fileName)
      Transform a user-entered filename into a proper filename, by adding the ".fb" file extension if it isn't already present.
    • writeXML

      public void writeXML(XMLOutput xmlOutput) throws IOException
      Description copied from interface: XMLWriteable
      Write this object to given XMLOutput.
      Specified by:
      writeXML in interface XMLWriteable
      Parameters:
      xmlOutput - the XMLOutput for the document
      Throws:
      IOException
    • writeXML

      public void writeXML(XMLOutput xmlOutput, @CheckForNull File destination, @CheckForNull BugCollection bugCollection) throws IOException
      Throws:
      IOException
    • setTimestamp

      public void setTimestamp(long timestamp)
    • addTimestamp

      public void addTimestamp(long timestamp)
    • getTimestamp

      public long getTimestamp()
    • setProjectName

      public void setProjectName(String projectName)
    • getProjectName

      public String getProjectName()
    • setSuppressionFilter

      public void setSuppressionFilter(@Nonnull Filter suppressionFilter)
    • getSuppressionFilter

      @Nonnull public Filter getSuppressionFilter()
    • setGuiCallback

      public void setGuiCallback(IGuiCallback guiCallback)
    • getGuiCallback

      public IGuiCallback getGuiCallback()
    • getResolvedSourcePaths

      public Iterable<String> getResolvedSourcePaths()
    • close

      public void close()
      Specified by:
      close in interface AutoCloseable