package pl.touk.sputnik.processor.codenarc;
import org.codenarc.CodeNarcRunner;
import org.codenarc.analyzer.FilesystemSourceAnalyzer;
import org.codenarc.analyzer.SourceAnalyzer;
import org.jetbrains.annotations.NotNull;
import pl.touk.sputnik.configuration.Configuration;
import pl.touk.sputnik.configuration.GeneralOption;
import java.util.List;
class CodeNarcRunnerBuilder {
public CodeNarcRunner prepareCodeNarcRunner(List<String> reviewFiles, @NotNull Configuration configuration) {
CodeNarcRunner codeNarcRunner = new CodeNarcRunner();
codeNarcRunner.setRuleSetFiles(configuration.getProperty(GeneralOption.CODE_NARC_RULESET));
codeNarcRunner.setSourceAnalyzer(createSourceAnalyzer(reviewFiles, configuration));
return codeNarcRunner;
}
private SourceAnalyzer createSourceAnalyzer(List<String> reviewFiles, @NotNull Configuration configuration) {
FilesystemSourceAnalyzer sourceAnalyzer = new FilesystemSourceAnalyzer();
sourceAnalyzer.setBaseDirectory(".");
sourceAnalyzer.setIncludes(createFileList(reviewFiles));
sourceAnalyzer.setExcludes(configuration.getProperty(GeneralOption.CODE_NARC_EXCLUDES));
return sourceAnalyzer;
}
private String createFileList(List<String> reviewFiles) {
StringBuilder stringBuilder = new StringBuilder();
for (String filesPath : reviewFiles) {
stringBuilder.append("**/").append(filesPath).append(",");
}
return stringBuilder.toString();
}
}