View Javadoc

1   package org.kit.furia.fragment;
2   
3   import java.io.FileNotFoundException;
4   import java.io.IOException;
5   
6   import org.kit.furia.exceptions.IRException;
7   import org.kit.furia.fragment.soot.NoClassesFound;
8   import org.kit.furia.fragment.soot.NoClassesFoundByStealer;
9   
10  import soot.util.cfgcmd.CFGGraphType;
11  
12  /*
13   Furia-chan: An Open Source software license violation detector.    
14   Copyright (C) 2008 Kyushu Institute of Technology
15  
16   This program is free software: you can redistribute it and/or modify
17   it under the terms of the GNU General Public License as published by
18   the Free Software Foundation, either version 3 of the License, or
19   (at your option) any later version.
20  
21   This program is distributed in the hope that it will be useful,
22   but WITHOUT ANY WARRANTY; without even the implied warranty of
23   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
24   GNU General Public License for more details.
25  
26   You should have received a copy of the GNU General Public License
27   along with this program.  If not, see <http://www.gnu.org/licenses/>.
28   */
29  
30  /**
31   * FragmentExtractors take a directory with class files and extract all the
32   * fragments from it.
33   * @author Arnoldo Jose Muller Molina
34   */
35  
36  public interface FragmentExtractor {
37  
38             
39      
40      /**
41       * Extracts fragments from the given directory.
42       * Furia-chan's fragment file format is:
43       * <repetitions count>\t<fragment>\n
44       * where <repetitions count> is a string representation of an integer
45       * and <fragment> is a string representation of a tree (for example: a(b,c))
46       * @param directory Directory from where we will extract fragments.
47       * @param maxStructuresAllowed  Maximum nodes per tree.
48       * @param minStructuresAllowed Minimum nodes per tree.
49       * @param outputPath Output path where logs will be written.
50       * @param outputFile The file where the fragments will be stored.
51       * @throws FileNotFoundException If the input or output files cannot be found.
52       * @throws NoClassesFound If no classes were found. 
53       * @throws IOException If an IO error occurs.
54       * @throws IRException If some other error occurs it will be wrapped on this exception.
55       * @throws FragmentParseException If a fragment is not generated properly, this exception will be thrown. For debugging purposes.
56       */
57      public  void extractMethodsFromDirectory(
58              final String directory,
59              final int maxStructuresAllowed, final int minStructuresAllowed,
60              final String outputPath, String outputFile) throws
61              FileNotFoundException, NoClassesFound, IOException, IRException, FragmentParseException;
62  
63  }