1+ package de .fraunhofer .iem .swan .io .doc ;
2+
3+ import de .fraunhofer .iem .swan .data .Method ;
4+ import de .fraunhofer .iem .swan .features .FeatureSet ;
5+ import de .fraunhofer .iem .swan .io .dataset .SrmListUtils ;
6+ import org .apache .commons .io .FileUtils ;
7+ import java .io .File ;
8+ import java .util .ArrayList ;
9+ import java .util .List ;
10+ import java .util .Set ;
11+
12+ public class JavadocProcessor {
13+
14+ private File sourceDirectory ;
15+ private String outputDirectory ;
16+
17+ public JavadocProcessor (String sourceDirectory , String outputDirectory ) {
18+
19+ this .sourceDirectory = new File (sourceDirectory );
20+
21+ outputDirectory += File .separator + "xml-files" ;
22+ File output = new File (outputDirectory );
23+ output .mkdirs ();
24+
25+ this .outputDirectory = output .getAbsolutePath ();
26+ }
27+
28+ /**
29+ * Runs doclets to calculate documentation coverage and export doc comments to XML files.
30+ * Exported doc comments are used to update set of methods.
31+ *
32+ * @param methods set of methods
33+ * @param featureSets feature set specified by user
34+ */
35+ public void run (Set <Method > methods , List <String > featureSets ) {
36+
37+ if (featureSets .contains (FeatureSet .Type .DOC_AUTO .getValue ()) ||
38+ featureSets .contains (FeatureSet .Type .DOC_MANUAL .getValue ())) {
39+
40+ if (sourceDirectory .isDirectory ()) {
41+ for (File file : FileUtils .listFiles (sourceDirectory , new String []{"jar" }, true )) {
42+ SrmListUtils .addDocComments (methods , processJar (file ));
43+ }
44+ } else {
45+ SrmListUtils .addDocComments (methods , processJar (sourceDirectory ));
46+ }
47+ }
48+ }
49+
50+ public ArrayList <Javadoc > processJar (File file ) {
51+
52+ DocletExecutor coverageDoclet = new DocletExecutor ();
53+ coverageDoclet .setDoclet (DocletExecutor .COVERAGE_DOCLET );
54+ coverageDoclet .runDoclet (file .getAbsolutePath (), SourceJarEvaluator .getRootPackages (file ));
55+
56+ DocletExecutor exporterDoclet = new DocletExecutor ();
57+ exporterDoclet .setDoclet (DocletExecutor .SSL_DOCLET );
58+ exporterDoclet .setOutputDir (outputDirectory );
59+ exporterDoclet .runDoclet (file .getAbsolutePath (), SourceJarEvaluator .getRootPackages (file ));
60+
61+ XmlDocletParser javadocParser = new XmlDocletParser (outputDirectory );
62+ return javadocParser .parse ();
63+ }
64+ }
0 commit comments