Skip to content

Commit 11a7d72

Browse files
committed
Add source file processor and doclet executor
1 parent 6286376 commit 11a7d72

File tree

2 files changed

+70
-8
lines changed

2 files changed

+70
-8
lines changed
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
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+
}

swan-pipeline/src/main/java/de/fraunhofer/iem/swan/io/doc/XmlDocletParser.java

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@ public ArrayList<Javadoc> parse() {
5353

5454
for (File file : FileUtils.listFiles(filePath, new String[]{"xml"}, true))
5555
parseFile(file.getAbsolutePath());
56-
5756
} else {
5857
parseFile(filePath.getAbsolutePath());
5958
}
@@ -71,15 +70,14 @@ public void parseFile(String xmlFile) {
7170

7271
HashMap<String, MethodBlockType> methods = new HashMap<>();
7372

73+
for (MethodBlockType methodBlock : xmlDoc.getPackageBlock().getClassBlock().getMethods().getMethodBlock()) {
7474

75-
for (MethodBlockType methodBlock : xmlDoc.getPackageBlock().getClassBlock().getMethods().getMethodBlock()) {
76-
77-
String methodSignature = getSignature(xmlDoc.getPackageBlock().getQualifiedName(), methodBlock);
75+
String methodSignature = getSignature(xmlDoc.getPackageBlock().getQualifiedName(), methodBlock);
7876

79-
methodBlock.setSignature(methodSignature);
80-
methods.put(methodSignature, methodBlock);
81-
}
82-
javadocs.add(new Javadoc(xmlDoc.getPackageBlock(), methods, xmlFile));
77+
methodBlock.setSignature(methodSignature);
78+
methods.put(methodSignature, methodBlock);
79+
}
80+
javadocs.add(new Javadoc(xmlDoc.getPackageBlock(), methods, xmlFile));
8381
}
8482

8583
} catch (FileNotFoundException | JAXBException e) {

0 commit comments

Comments
 (0)