Skip to content

Commit e72e24f

Browse files
committed
[refactoring] Isolate file analysis from report ordering
1 parent 8ca1593 commit e72e24f

File tree

6 files changed

+66
-41
lines changed

6 files changed

+66
-41
lines changed

bin/jscomplexity-cli.js

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,4 +45,3 @@ getSpec(function(pattern, globOptions, isVerbose, outPutFileName, reporter){
4545
});
4646

4747
});
48-

bin/lib/getSpec.js

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,24 @@ var pjson = require('../../package.json'),
77
pattern : './**',
88
isVerbose : false,
99
outputFileName : 'jscomplexity-report.html',
10-
reporter : 'all'
10+
reporter : 'terminal'
1111
};
1212

1313
program
1414
.version(pjson.version)
1515
.usage('[options]')
16-
.option('-p, --pattern <pattern>', 'glob pattern - default is current directory')
17-
.option('-o, --output <filename>', '(optional) customize html report filename - default is \''+ options.outputFileName +'\'')
18-
.option('-r, --reporter <reporter>', '(optional) specify a reporter: \'terminal\', \'html\' or \'all\' - default is \'all\'')
16+
.option(
17+
'-p, --pattern <pattern>',
18+
'glob pattern - default is current directory'
19+
)
20+
.option(
21+
'-o, --output <filename>',
22+
'(optional) customize html report filename - default is \''+ options.outputFileName +'\''
23+
)
24+
.option(
25+
'-r, --reporter <reporter>',
26+
'(optional) specify a reporter: \'terminal\', \'html\' or \'all\' - default is \'terminal\''
27+
)
1928
.option('-v, --verbose', '(optional) outputs analysisis logs')
2029
.parse(process.argv);
2130

@@ -40,4 +49,4 @@ module.exports = function getSpec(callback){
4049
options.outputFileName,
4150
options.reporter
4251
);
43-
};
52+
};

bin/lib/outputCLIReport.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,4 @@ module.exports = function logReport(report){
1818

1919
console.log(table.toString());
2020

21-
};
21+
};

bin/lib/outputHTMLReport.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,4 @@ module.exports = function outputHTMLReport(data, filename){
3030

3131
return writeFile(filename, html);
3232

33-
};
33+
};

src/lib/analyser.js

Lines changed: 18 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,14 @@ var createFileReport = require('./createFileReport');
1717

1818
function Analyser(isVerboseParam){
1919

20-
var
21-
resolver = Promise.defer(),
22-
isVerbose = isVerboseParam || false
23-
;
24-
25-
this.reportList = [];
26-
this.failsList = [];
20+
this.isVerbose = isVerboseParam || false;
2721

2822
/**
2923
* Populates report with informations about one file
3024
*
3125
* @param {String} 'root' The file folder's path
3226
* @param {Object} 'fileStats' The informations about current file
33-
* @returns {Promise} The promise shall always fulfill
27+
* @returns {Promise} The promise shall always be fulfilled
3428
*/
3529

3630
this.analyse = function (fileRef) {
@@ -40,34 +34,30 @@ function Analyser(isVerboseParam){
4034
.then(function(){
4135
return readFileAsync(fileRef, 'utf8');
4236
})
37+
4338
.then(function(data){
4439
return createFileReport(fileRef, data);
4540
})
46-
.then(function(report){
47-
if (isVerbose) {
48-
console.log('%s | %s', report.complexity, fileRef);
41+
42+
.then(function(result){
43+
if (this.isVerbose) {
44+
console.log('%s | %s', result.complexity, fileRef);
4945
}
50-
this.reportList.push(report);
46+
return {
47+
success : true,
48+
result : result
49+
};
5150
}.bind(this))
52-
.caught(function(err){
53-
this.failsList.push({ref : fileRef, message : err.message });
54-
}.bind(this));
55-
56-
};
5751

58-
/**
59-
* Returns report
60-
*
61-
* @returns {Object} The report object
62-
*/
52+
.caught(function(err){
53+
return {
54+
success : false,
55+
error : err
56+
};
57+
});
6358

64-
this.getResults = function(){
65-
return {
66-
report : _.chain(this.reportList).sortBy('complexity').reverse().value(),
67-
fails : this.failsList
68-
};
6959
};
7060

7161
}
7262

73-
module.exports = Analyser;
63+
module.exports = Analyser;

src/scan.js

Lines changed: 32 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,16 +34,43 @@ module.exports = function (pattern, globOptions, isVerbose){
3434

3535
.then(function (files) {
3636

37-
var reporter = new Analyser(isVerbose ? isVerbose : false),
37+
var analyser = new Analyser(isVerbose ? isVerbose : false),
3838
filesReports = [];
3939

4040
_.each(files, function(file){
41-
filesReports.push(reporter.analyse(file));
41+
filesReports.push(analyser.analyse(file));
4242
});
4343

44-
Promise.all(filesReports).then(function(){
45-
resolve(reporter.getResults());
46-
});
44+
Promise.all(filesReports)
45+
46+
.then(function(results){
47+
48+
return Promise.props({
49+
50+
report : Promise
51+
.filter(results, function(result){
52+
return result.success;
53+
})
54+
.map(function(result){
55+
return result.result;
56+
})
57+
.then(function(results){
58+
return _.chain(results).sortBy('complexity').reverse().value();
59+
}),
60+
61+
fails : Promise
62+
.filter(results, function(result){
63+
return !result.success;
64+
})
65+
.map(function(result){
66+
return result.error;
67+
})
68+
69+
});
70+
71+
})
72+
73+
.then(resolve);
4774

4875
})
4976

0 commit comments

Comments
 (0)