in cli/src/main/java/nl/obren/sokrates/cli/CommandLineInterface.java [362:423]
private void generateReports(CommandLine cmd) throws IOException {
File sokratesConfigFile;
if (!cmd.hasOption(confFile.getOpt())) {
String confFilePath = "./_sokrates/config.json";
sokratesConfigFile = new File(confFilePath);
} else {
sokratesConfigFile = new File(cmd.getOptionValue(confFile.getOpt()));
}
System.out.println("Configuration file: " + sokratesConfigFile.getPath());
if (noFileError(sokratesConfigFile)) return;
String jsonContent = FileUtils.readFileToString(sokratesConfigFile, UTF_8);
CodeConfiguration codeConfiguration = (CodeConfiguration) new JsonMapper().getObject(jsonContent, CodeConfiguration.class);
LanguageAnalyzerFactory.getInstance().setOverrides(codeConfiguration.getAnalysis().getAnalyzerOverrides());
detailedInfo("Starting analysis based on the configuration file " + sokratesConfigFile.getPath());
File reportsFolder;
if (!cmd.hasOption(outputFolder.getOpt())) {
reportsFolder = prepareReportsFolder("./_sokrates/reports");
} else {
reportsFolder = prepareReportsFolder(cmd.getOptionValue(outputFolder.getOpt()));
}
System.out.println("Reports folder: " + reportsFolder.getPath());
if (noFileError(reportsFolder)) return;
if (this.progressFeedback == null) {
this.progressFeedback = new ProgressFeedback() {
public void setText(String text) {
System.out.println(text);
}
public void setDetailedText(String text) {
System.out.println(text);
}
};
}
try {
CodeAnalyzer codeAnalyzer = new CodeAnalyzer(getCodeAnalyzerSettings(cmd), codeConfiguration, sokratesConfigFile);
CodeAnalysisResults analysisResults = codeAnalyzer.analyze(progressFeedback);
boolean useDefault = noReportingOptions(cmd);
if (useDefault || cmd.hasOption(all.getOpt()) || cmd.hasOption(data.getOpt())) {
dataExporter.saveData(sokratesConfigFile, codeConfiguration, reportsFolder, analysisResults);
saveTextualSummary(reportsFolder, analysisResults);
}
if (useDefault || cmd.hasOption(all.getOpt()) || cmd.hasOption(logicalDecomposition.getOpt())) {
generateVisuals(reportsFolder, analysisResults);
}
generateAndSaveReports(sokratesConfigFile, reportsFolder, sokratesConfigFile.getParentFile(), codeAnalyzer, analysisResults);
} catch (Exception e) {
e.printStackTrace();
}
}