JavaScript Qualitätssicherung
-
Upload
sebastian-springer -
Category
Technology
-
view
543 -
download
0
Transcript of JavaScript Qualitätssicherung
![Page 1: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/1.jpg)
Werkzeuge zur Qualitätssicherung in JavaScript
Tuesday 5 November 13
![Page 2: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/2.jpg)
WER BIN ICH?
• Sebastian Springer
• https://github.com/sspringer82
• @basti_springer
Tuesday 5 November 13
![Page 3: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/3.jpg)
JAVASCRIPT?
Tuesday 5 November 13
![Page 4: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/4.jpg)
QUALITÄT?
Tuesday 5 November 13
![Page 5: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/5.jpg)
Unter Softwarequalität versteht man die Gesamtheit der Merkmale und Merkmalswerte eines
Softwareprodukts, die sich auf dessen Eignung beziehen, festgelegte oder vorausgesetzte Erfordernisse zu
erfüllen.(Balzert)
Tuesday 5 November 13
![Page 6: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/6.jpg)
DOKUMENTATION?
Tuesday 5 November 13
![Page 7: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/7.jpg)
README.MD
Tuesday 5 November 13
![Page 8: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/8.jpg)
API DOC
npm install -g git://github.com/jsdoc3/jsdoc.git
Tuesday 5 November 13
![Page 9: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/9.jpg)
STATISCHE VS. DYNAMISCHE CODEANALYSE
Tuesday 5 November 13
![Page 10: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/10.jpg)
STATISCHE CODEANALYSE
Tuesday 5 November 13
![Page 11: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/11.jpg)
TOKENIZER?
Tuesday 5 November 13
![Page 12: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/12.jpg)
var answer = 6 * 7;
Tuesday 5 November 13
![Page 13: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/13.jpg)
SYNTAX{ "type": "Program", "body": [ { "type": "VariableDeclaration", "declarations": [ { "type": "VariableDeclarator", "id": { "type": "Identifier", "name": "answer" }, "init": { "type": "BinaryExpression", "operator": "*", "left": { "type": "Literal", "value": 6, "raw": "6" }, "right": { "type": "Literal", "value": 7, "raw": "7" } } } ], "kind": "var" } ]}
Tuesday 5 November 13
![Page 14: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/14.jpg)
TOKENS[ { "type": "Keyword", "value": "var" }, { "type": "Identifier", "value": "answer" }, { "type": "Punctuator", "value": "=" }, { "type": "Numeric", "value": "6" }, { "type": "Punctuator", "value": "*" }, { "type": "Numeric", "value": "7" }, { "type": "Punctuator", "value": ";" }]
Tuesday 5 November 13
![Page 15: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/15.jpg)
VALIDATOR VS. LINTER
Tuesday 5 November 13
![Page 16: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/16.jpg)
Tuesday 5 November 13
![Page 17: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/17.jpg)
by Douglas Crockford
Tuesday 5 November 13
![Page 18: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/18.jpg)
by Douglas Crockford
Warning: JSLint will hurt your feelings
Tuesday 5 November 13
![Page 19: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/19.jpg)
sudo npm install -g jslint
Tuesday 5 November 13
![Page 20: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/20.jpg)
var Calculator = function () {};
Calculator.prototype.add = function(a, b) {
if('number' !== typeof a ||'number' !== typeof b) throw new Error('Can add only numbers');
return a+b;
}
Tuesday 5 November 13
![Page 21: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/21.jpg)
#1 Missing 'use strict' statement. var Calculator = function () {}; // Line 1, Pos 31 #2 Empty block. var Calculator = function () {}; // Line 1, Pos 30 #3 Expected exactly one space between 'function' and '('. Calculator.prototype.add = function(a, b) { // Line 3, Pos 36 #4 Missing 'use strict' statement. if('number' !== typeof a ||'number' !== typeof b) // Line 5, Pos 5 #5 Expected exactly one space between 'if' and '('. if('number' !== typeof a ||'number' !== typeof b) // Line 5, Pos 7 #6 Missing space between '||' and 'number'. if('number' !== typeof a ||'number' !== typeof b) // Line 5, Pos 32 #7 Expected exactly one space between ')' and 'throw'. throw new Error('Can add only numbers'); // Line 6, Pos 9 #8 Expected '{' and instead saw 'throw'. throw new Error('Can add only numbers'); // Line 6, Pos 9 #9 Stopping. (54% scanned). // Line 6, Pos 9
Tuesday 5 November 13
![Page 23: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/23.jpg)
sudo npm install -g esvalidate
Tuesday 5 November 13
![Page 24: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/24.jpg)
return 42; // Return statement not inside a function
function f() { 'use strict';
// No more octal var x = 042;
// Duplicate property var y = { x: 1, x: 2 };
// With statement can't be used with (z) {}}
Tuesday 5 November 13
![Page 25: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/25.jpg)
validate.js:1: Illegal return statementvalidate.js:7: Octal literals are not allowed in strict mode.validate.js:10: Duplicate data property in object literal not allowed in strict modevalidate.js:10: Strict mode code may not include a with statement
Tuesday 5 November 13
![Page 26: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/26.jpg)
KOMPLEXITÄT
Tuesday 5 November 13
![Page 27: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/27.jpg)
PLATO
Tuesday 5 November 13
![Page 28: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/28.jpg)
Tuesday 5 November 13
![Page 29: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/29.jpg)
LOC
Maintainability
Estimated Errors in Implementation
Lint Errors
Tuesday 5 November 13
![Page 30: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/30.jpg)
Tuesday 5 November 13
![Page 31: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/31.jpg)
https://sourceforge.net/projects/pmd/files/pmd/5.0.5/pmd-bin-5.0.5.zip/download
Tuesday 5 November 13
![Page 32: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/32.jpg)
run.sh pmd -d ./pmd -rulesets ecmascript-basic
Tuesday 5 November 13
![Page 33: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/33.jpg)
pmd/example.js:3:!Avoid assignments in operandspmd/example.js:3:!Avoid using global variablespmd/example.js:3:!Use ===/!== to compare with true/false or Numbers
Tuesday 5 November 13
![Page 34: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/34.jpg)
AssignmentInOperand
UnreachableCode
InaccurateNumericLiteral
ConsistentReturn
ScopeForInVariable
EqualComparison
GlobalVariable AvoidTrailingComma
UseBaseWithParseInt
Tuesday 5 November 13
![Page 35: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/35.jpg)
CPD
Tuesday 5 November 13
![Page 36: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/36.jpg)
run.sh cpd --minimum-tokens 12 --files /path/to/src --language ecmascript --
format xml > cpd.xml
Tuesday 5 November 13
![Page 37: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/37.jpg)
TESTS
Tuesday 5 November 13
![Page 38: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/38.jpg)
FRAMEWORKS
Tuesday 5 November 13
![Page 39: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/39.jpg)
FRAMEWORKSSinon.js
Tuesday 5 November 13
![Page 40: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/40.jpg)
FRAMEWORKS
jsunit
Sinon.js
Tuesday 5 November 13
![Page 41: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/41.jpg)
FRAMEWORKS
jsunit
doh
Sinon.js
Tuesday 5 November 13
![Page 42: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/42.jpg)
FRAMEWORKS
jsunit
dohJS Test Driver
Sinon.js
Tuesday 5 November 13
![Page 43: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/43.jpg)
FRAMEWORKS
jsunit
qunit
dohJS Test Driver
Sinon.js
Tuesday 5 November 13
![Page 44: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/44.jpg)
FRAMEWORKS
jsunit
qunit
dohJasmine JS Test Driver
Sinon.js
Tuesday 5 November 13
![Page 45: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/45.jpg)
FRAMEWORKS
jsunit
qunit
dohJasmine JS Test Driver
Sinon.js Siesta
Tuesday 5 November 13
![Page 46: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/46.jpg)
FRAMEWORKS
jsunit
qunit
dohJasmine JS Test Driver
Sinon.js Siesta
Karma
Tuesday 5 November 13
![Page 47: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/47.jpg)
SERVERSIDE VS. CLIENTSIDE
Tuesday 5 November 13
![Page 48: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/48.jpg)
Tuesday 5 November 13
![Page 49: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/49.jpg)
Tuesday 5 November 13
![Page 50: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/50.jpg)
COVERAGE
Tuesday 5 November 13
![Page 51: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/51.jpg)
Tuesday 5 November 13
![Page 52: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/52.jpg)
ENTWICKLUNGSUMGEBUNG(IDE)
Tuesday 5 November 13
![Page 53: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/53.jpg)
Tuesday 5 November 13
![Page 54: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/54.jpg)
SERVERSIDE
https://code.google.com/p/js-test-driver/Tuesday 5 November 13
![Page 55: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/55.jpg)
AUTOMATISIERUNG
Tuesday 5 November 13
![Page 56: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/56.jpg)
Tuesday 5 November 13
![Page 57: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/57.jpg)
JENKINS
Tasks per Ant ausführen
Visualisierung über Plugins
Tuesday 5 November 13
![Page 58: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/58.jpg)
FRAGEN?
Tuesday 5 November 13
![Page 59: JavaScript Qualitätssicherung](https://reader034.fdocument.pub/reader034/viewer/2022052303/5564b098d8b42a366c8b56e9/html5/thumbnails/59.jpg)
Sebastian [email protected]
Mayflower GmbHMannhardtstr. 680538 MünchenDeutschland
@basti_springer
https://github.com/sspringer82
Kontakt
Tuesday 5 November 13