private void generateReports()

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();
        }
    }