+ All Categories
Home > Technology > JavaScript Qualitätssicherung

JavaScript Qualitätssicherung

Date post: 27-May-2015
Category:
Upload: sebastian-springer
View: 543 times
Download: 0 times
Share this document with a friend
59
Werkzeuge zur Qualitätssicherung in JavaScript Tuesday 5 November 13
Transcript
Page 1: JavaScript Qualitätssicherung

Werkzeuge zur Qualitätssicherung in JavaScript

Tuesday 5 November 13

Page 2: JavaScript Qualitätssicherung

WER BIN ICH?

• Sebastian Springer

• https://github.com/sspringer82

• @basti_springer

Tuesday 5 November 13

Page 3: JavaScript Qualitätssicherung

JAVASCRIPT?

Tuesday 5 November 13

Page 4: JavaScript Qualitätssicherung

QUALITÄT?

Tuesday 5 November 13

Page 5: JavaScript Qualitätssicherung

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

DOKUMENTATION?

Tuesday 5 November 13

Page 7: JavaScript Qualitätssicherung

README.MD

Tuesday 5 November 13

Page 8: JavaScript Qualitätssicherung

API DOC

npm install -g git://github.com/jsdoc3/jsdoc.git

Tuesday 5 November 13

Page 9: JavaScript Qualitätssicherung

STATISCHE VS. DYNAMISCHE CODEANALYSE

Tuesday 5 November 13

Page 10: JavaScript Qualitätssicherung

STATISCHE CODEANALYSE

Tuesday 5 November 13

Page 11: JavaScript Qualitätssicherung

TOKENIZER?

Tuesday 5 November 13

Page 12: JavaScript Qualitätssicherung

var answer = 6 * 7;

Tuesday 5 November 13

Page 13: JavaScript Qualitätssicherung

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

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

VALIDATOR VS. LINTER

Tuesday 5 November 13

Page 16: JavaScript Qualitätssicherung

Tuesday 5 November 13

Page 17: JavaScript Qualitätssicherung

by Douglas Crockford

Tuesday 5 November 13

Page 18: JavaScript Qualitätssicherung

by Douglas Crockford

Warning: JSLint will hurt your feelings

Tuesday 5 November 13

Page 19: JavaScript Qualitätssicherung

sudo npm install -g jslint

Tuesday 5 November 13

Page 20: JavaScript Qualitätssicherung

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

#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 22: JavaScript Qualitätssicherung

ESVALIDATEby http://esprima.org/

Tuesday 5 November 13

Page 23: JavaScript Qualitätssicherung

sudo npm install -g esvalidate

Tuesday 5 November 13

Page 24: JavaScript Qualitätssicherung

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

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

KOMPLEXITÄT

Tuesday 5 November 13

Page 27: JavaScript Qualitätssicherung

PLATO

Tuesday 5 November 13

Page 28: JavaScript Qualitätssicherung

Tuesday 5 November 13

Page 29: JavaScript Qualitätssicherung

LOC

Maintainability

Estimated Errors in Implementation

Lint Errors

Tuesday 5 November 13

Page 30: JavaScript Qualitätssicherung

Tuesday 5 November 13

Page 32: JavaScript Qualitätssicherung

run.sh pmd -d ./pmd -rulesets ecmascript-basic

Tuesday 5 November 13

Page 33: JavaScript Qualitätssicherung

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

AssignmentInOperand

UnreachableCode

InaccurateNumericLiteral

ConsistentReturn

ScopeForInVariable

EqualComparison

GlobalVariable AvoidTrailingComma

UseBaseWithParseInt

Tuesday 5 November 13

Page 35: JavaScript Qualitätssicherung

CPD

Tuesday 5 November 13

Page 36: JavaScript Qualitätssicherung

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

TESTS

Tuesday 5 November 13

Page 38: JavaScript Qualitätssicherung

FRAMEWORKS

Tuesday 5 November 13

Page 39: JavaScript Qualitätssicherung

FRAMEWORKSSinon.js

Tuesday 5 November 13

Page 40: JavaScript Qualitätssicherung

FRAMEWORKS

jsunit

Sinon.js

Tuesday 5 November 13

Page 41: JavaScript Qualitätssicherung

FRAMEWORKS

jsunit

doh

Sinon.js

Tuesday 5 November 13

Page 42: JavaScript Qualitätssicherung

FRAMEWORKS

jsunit

dohJS Test Driver

Sinon.js

Tuesday 5 November 13

Page 43: JavaScript Qualitätssicherung

FRAMEWORKS

jsunit

qunit

dohJS Test Driver

Sinon.js

Tuesday 5 November 13

Page 44: JavaScript Qualitätssicherung

FRAMEWORKS

jsunit

qunit

dohJasmine JS Test Driver

Sinon.js

Tuesday 5 November 13

Page 45: JavaScript Qualitätssicherung

FRAMEWORKS

jsunit

qunit

dohJasmine JS Test Driver

Sinon.js Siesta

Tuesday 5 November 13

Page 46: JavaScript Qualitätssicherung

FRAMEWORKS

jsunit

qunit

dohJasmine JS Test Driver

Sinon.js Siesta

Karma

Tuesday 5 November 13

Page 47: JavaScript Qualitätssicherung

SERVERSIDE VS. CLIENTSIDE

Tuesday 5 November 13

Page 48: JavaScript Qualitätssicherung

Tuesday 5 November 13

Page 49: JavaScript Qualitätssicherung

Tuesday 5 November 13

Page 50: JavaScript Qualitätssicherung

COVERAGE

Tuesday 5 November 13

Page 51: JavaScript Qualitätssicherung

Tuesday 5 November 13

Page 52: JavaScript Qualitätssicherung

ENTWICKLUNGSUMGEBUNG(IDE)

Tuesday 5 November 13

Page 53: JavaScript Qualitätssicherung

Tuesday 5 November 13

Page 54: JavaScript Qualitätssicherung

SERVERSIDE

https://code.google.com/p/js-test-driver/Tuesday 5 November 13

Page 55: JavaScript Qualitätssicherung

AUTOMATISIERUNG

Tuesday 5 November 13

Page 56: JavaScript Qualitätssicherung

Tuesday 5 November 13

Page 57: JavaScript Qualitätssicherung

JENKINS

Tasks per Ant ausführen

Visualisierung über Plugins

Tuesday 5 November 13

Page 58: JavaScript Qualitätssicherung

FRAGEN?

Tuesday 5 November 13

Page 59: JavaScript Qualitätssicherung

Sebastian [email protected]

Mayflower GmbHMannhardtstr. 680538 MünchenDeutschland

@basti_springer

https://github.com/sspringer82

Kontakt

Tuesday 5 November 13


Recommended