Class PerlCpanfileAnalyzer

All Implemented Interfaces:
FileFilter, Analyzer, FileTypeAnalyzer

@ThreadSafe public class PerlCpanfileAnalyzer extends AbstractFileTypeAnalyzer

Used to analyze Perl CPAN files. The analyzer does not yet differentiate developer and test dependencies from required dependencies. Nor does the analyzer support `cpanfile.snapshot` files yet. Finally, version ranges are not yet correctly handled either.

Future enhancements should include supporting the snapshot files (which should not have version ranges) and correctly parsing the cpanfile DSL so that one can differentiate developer and test dependencies - which one may not want to include in the analysis.

Author:
Harjit Sandhu, Jeremy Long
  • Constructor Details

    • PerlCpanfileAnalyzer

      public PerlCpanfileAnalyzer()
      Create a new Perl CPAN File Analyzer.
  • Method Details

    • getFileFilter

      protected FileFilter getFileFilter()
      Description copied from class: AbstractFileTypeAnalyzer

      Returns the FileFilter used to determine which files are to be analyzed. An example would be an analyzer that inspected Java jar files. Implementors may use FileFilterBuilder.

      If the analyzer returns null it will not cause additional files to be analyzed, but will be executed against every file loaded.

      Specified by:
      getFileFilter in class AbstractFileTypeAnalyzer
      Returns:
      the file filter used to determine which files are to be analyzed
    • getName

      public String getName()
      Description copied from interface: Analyzer
      Returns the name of the analyzer.
      Returns:
      the name of the analyzer.
    • getAnalysisPhase

      public AnalysisPhase getAnalysisPhase()
      Description copied from interface: Analyzer
      Returns the phase that the analyzer is intended to run in.
      Returns:
      the phase that the analyzer is intended to run in.
    • getAnalyzerEnabledSettingKey

      protected String getAnalyzerEnabledSettingKey()
      Description copied from class: AbstractAnalyzer

      Returns the setting key to determine if the analyzer is enabled.

      Specified by:
      getAnalyzerEnabledSettingKey in class AbstractAnalyzer
      Returns:
      the key for the analyzer's enabled property
    • prepareFileTypeAnalyzer

      protected void prepareFileTypeAnalyzer(Engine engine) throws InitializationException
      Description copied from class: AbstractFileTypeAnalyzer
      Prepares the file type analyzer for dependency analysis.
      Specified by:
      prepareFileTypeAnalyzer in class AbstractFileTypeAnalyzer
      Parameters:
      engine - a reference to the dependency-check engine
      Throws:
      InitializationException - thrown if there is an exception during initialization
    • analyzeDependency

      protected void analyzeDependency(Dependency dependency, Engine engine) throws AnalysisException
      Description copied from class: AbstractAnalyzer
      Analyzes a given dependency. If the dependency is an archive, such as a WAR or EAR, the contents are extracted, scanned, and added to the list of dependencies within the engine.
      Specified by:
      analyzeDependency in class AbstractAnalyzer
      Parameters:
      dependency - the dependency to analyze
      engine - the engine scanning
      Throws:
      AnalysisException - thrown if there is an analysis exception
    • prepareContents

      protected List<String> prepareContents(String contents)
    • processFileContents

      protected void processFileContents(List<String> fileLines, String filePath, Engine engine) throws AnalysisException
      Throws:
      AnalysisException