Conditions | 2 |
Paths | 128 |
Total Lines | 93 |
Lines | 0 |
Ratio | 0 % |
Changes | 1 | ||
Bugs | 0 | Features | 0 |
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
1 | /** |
||
11 | (function(jasmine, console) { |
||
12 | if (!jasmine) { |
||
13 | throw "jasmine library isn't loaded!"; |
||
14 | } |
||
15 | |||
16 | var ANSI = {} |
||
17 | ANSI.color_map = { |
||
18 | "green" : 32, |
||
19 | "red" : 31 |
||
20 | } |
||
21 | |||
22 | ANSI.colorize_text = function(text, color) { |
||
23 | var color_code = this.color_map[color]; |
||
24 | return "\033[" + color_code + "m" + text + "\033[0m"; |
||
25 | } |
||
26 | |||
27 | var ConsoleReporter = function() { |
||
28 | if (!console || !console.log) { throw "console isn't present!"; } |
||
29 | this.status = this.statuses.stopped; |
||
30 | }; |
||
31 | |||
32 | var proto = ConsoleReporter.prototype; |
||
33 | proto.statuses = { |
||
34 | stopped : "stopped", |
||
35 | running : "running", |
||
36 | fail : "fail", |
||
37 | success : "success" |
||
38 | }; |
||
39 | |||
40 | proto.reportRunnerStarting = function(runner) { |
||
|
|||
41 | this.status = this.statuses.running; |
||
42 | this.start_time = (new Date()).getTime(); |
||
43 | this.executed_specs = 0; |
||
44 | this.passed_specs = 0; |
||
45 | this.log("Starting..."); |
||
46 | }; |
||
47 | |||
48 | proto.reportRunnerResults = function(runner) { |
||
49 | var failed = this.executed_specs - this.passed_specs; |
||
50 | var spec_str = this.executed_specs + (this.executed_specs === 1 ? " spec, " : " specs, "); |
||
51 | var fail_str = failed + (failed === 1 ? " failure in " : " failures in "); |
||
52 | var color = (failed > 0)? "red" : "green"; |
||
53 | var dur = (new Date()).getTime() - this.start_time; |
||
54 | |||
55 | this.log(""); |
||
56 | this.log("Finished"); |
||
57 | this.log("-----------------"); |
||
58 | this.log(spec_str + fail_str + (dur/1000) + "s.", color); |
||
59 | |||
60 | this.status = (failed > 0)? this.statuses.fail : this.statuses.success; |
||
61 | |||
62 | /* Print something that signals that testing is over so that headless browsers |
||
63 | like PhantomJs know when to terminate. */ |
||
64 | this.log(""); |
||
65 | this.log("ConsoleReporter finished"); |
||
66 | }; |
||
67 | |||
68 | |||
69 | proto.reportSpecStarting = function(spec) { |
||
70 | this.executed_specs++; |
||
71 | }; |
||
72 | |||
73 | proto.reportSpecResults = function(spec) { |
||
74 | if (spec.results().passed()) { |
||
75 | this.passed_specs++; |
||
76 | return; |
||
77 | } |
||
78 | |||
79 | var resultText = spec.suite.description + " : " + spec.description; |
||
80 | this.log(resultText, "red"); |
||
81 | |||
82 | var items = spec.results().getItems() |
||
83 | for (var i = 0; i < items.length; i++) { |
||
84 | var trace = items[i].trace.stack || items[i].trace; |
||
85 | this.log(trace, "red"); |
||
86 | } |
||
87 | }; |
||
88 | |||
89 | proto.reportSuiteResults = function(suite) { |
||
90 | if (!suite.parentSuite) { return; } |
||
91 | var results = suite.results(); |
||
92 | var failed = results.totalCount - results.passedCount; |
||
93 | var color = (failed > 0)? "red" : "green"; |
||
94 | this.log(suite.getFullName() + ": " + results.passedCount + " of " + results.totalCount + " passed.", color); |
||
95 | }; |
||
96 | |||
97 | proto.log = function(str, color) { |
||
98 | var text = (color != undefined)? ANSI.colorize_text(str, color) : str; |
||
99 | console.log(text) |
||
100 | }; |
||
101 | |||
102 | jasmine.ConsoleReporter = ConsoleReporter; |
||
103 | })(jasmine, console); |
||
This check looks for parameters in functions that are not used in the function body and are not followed by other parameters which are used inside the function.