1818package org .sonar .plugins .swift .coverage ;
1919
2020import org .apache .tools .ant .DirectoryScanner ;
21+ import org .slf4j .Logger ;
22+ import org .slf4j .LoggerFactory ;
2123import org .sonar .api .config .Settings ;
2224
2325import java .io .File ;
26+ import java .util .Arrays ;
2427import java .util .ArrayList ;
2528import java .util .List ;
2629
2730final class ReportFilesFinder {
2831
32+ private static final Logger LOGGER = LoggerFactory .getLogger (ReportFilesFinder .class );
33+
2934 private final Settings conf ;
30- private final String settingsKey ;
31- private final String settingsDefault ;
35+ private final String settingsReportKey ;
36+ private final String settingsReportDefault ;
37+ private final String settingsDirectoryKey ;
3238
33- public ReportFilesFinder (final Settings settings , final String key , final String defaultValue ) {
39+ public ReportFilesFinder (final Settings settings , final String settingsReportKey , final String settingsReportDefault , final String settingsDirectoryKey ) {
3440
3541 conf = settings ;
36- settingsKey = key ;
37- settingsDefault = defaultValue ;
42+ this .settingsReportKey = settingsReportKey ;
43+ this .settingsReportDefault = settingsReportDefault ;
44+ this .settingsDirectoryKey = settingsDirectoryKey ;
3845 }
3946
40- public List <File > reportsIn (final String baseDirPath ) {
47+ public List <File > reportsIn (final String module , final String rootDirectory , final String baseDirectory ) {
4148
42- final String [] relPaths = filesMathingPattern (baseDirPath , reportPattern ());
49+ final String reportDirectory = getReportDirectory (module , rootDirectory , baseDirectory );
50+ final String reportPattern = getReportPattern (module );
51+ final String [] relPaths = filesMatchingPattern (reportDirectory , reportPattern );
4352
4453 final List <File > reports = new ArrayList <File >();
4554
4655 for (final String relPath : relPaths ) {
47- reports .add (new File (baseDirPath , relPath ));
56+ reports .add (new File (reportDirectory , relPath ));
4857 }
4958
5059 return reports ;
5160 }
5261
53- private String [] filesMathingPattern (final String baseDirPath , final String reportPath ) {
62+ private String [] filesMatchingPattern (final String reportDirectory , final String reportPath ) {
5463
5564 final DirectoryScanner scanner = new DirectoryScanner ();
5665 scanner .setIncludes (new String [] { reportPath });
57- scanner .setBasedir (new File (baseDirPath ));
66+ scanner .setBasedir (new File (reportDirectory ));
5867 scanner .scan ();
68+
69+ LOGGER .info ("Files found in directory '" + reportDirectory + "' including '" + reportPath + "': " + Arrays .toString (scanner .getIncludedFiles ()));
5970
6071 return scanner .getIncludedFiles ();
6172 }
6273
63- private String reportPattern () {
74+ private String getReportPattern (final String module ) {
75+
76+ String reportPath = conf .getString (module + "." + settingsReportKey );
6477
65- String reportPath = conf .getString (settingsKey );
78+ if (reportPath == null ) {
79+ reportPath = conf .getString (settingsReportKey );
80+ }
6681
6782 if (reportPath == null ) {
68- reportPath = settingsDefault ;
83+ reportPath = settingsReportDefault ;
6984 }
7085
7186 return reportPath ;
7287 }
7388
89+ private String getReportDirectory (final String module , final String rootDirectory , final String defaultDirectory ) {
90+
91+ String reportDirectory = conf .getString (module + "." + settingsDirectoryKey );
92+
93+ if (reportDirectory == null ) {
94+ reportDirectory = conf .getString (settingsDirectoryKey );
95+ }
96+
97+ if (reportDirectory != null ) {
98+ reportDirectory = rootDirectory + reportDirectory ;
99+ }
100+ else {
101+ reportDirectory = defaultDirectory ;
102+ }
103+
104+ return reportDirectory ;
105+ }
106+
74107}
0 commit comments