Typbasierte Analyse von JavaScipt



Ähnliche Dokumente
Typumwandlungen bei Referenztypen

Pädagogische Hochschule Thurgau. Lehre Weiterbildung Forschung

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Wie ist das Wissen von Jugendlichen über Verhütungsmethoden?

Algorithmen und Datenstrukturen

Objektorientierte Programmierung

Web-basierte Benutzerschnittstellen für Embedded Systeme: Eine Benutzerschnittstelle drei Sichtweisen

Excel Funktionen durch eigene Funktionen erweitern.

Wichtige Information zur Verwendung von CS-TING Version 9 für Microsoft Word 2000 (und höher)

PC-Kaufmann 2014 Neues Buchungsjahr anlegen

Methodische Grundlagen des Software Engineering - Übung 9

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Diplomarbeit. Konzeption und Implementierung einer automatisierten Testumgebung. Thomas Wehrspann. 10. Dezember 2008

Daten in EPUB visualisieren und dynamisch aktualisieren

Die Post hat eine Umfrage gemacht

How-to: Webserver NAT. Securepoint Security System Version 2007nx

Übung - Festplattenwartung in Windows Vista

Grundbegriffe der Informatik

Tel.: Fax: Ein Text oder Programm in einem Editor schreiben und zu ClassPad übertragen.

Programmieren Tutorium

Einführung in die Informatik Tools

Kurzanweisung für Google Analytics

Fassade. Objektbasiertes Strukturmuster. C. Restorff & M. Rohlfing

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

Ihre Stimme für 7 % für Kinder!

Die Invaliden-Versicherung ändert sich

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Nathan Burgener. Design by Contract. Modul SWE

Gliederung. Programmierparadigmen. Sprachmittel in SCHEME. Objekte: Motivation. Objekte in Scheme

Die Wirtschaftskrise aus Sicht der Kinder

Einführung in die Java- Programmierung

Rechnung Angebot Zeiterfassung

Online Kataloge. Wie binde ich einen SGVSB-Online-Katalog in eine Webseite ein. Versionsnummer: 1.0 Änderungsdatum:

Kurzanleitung. Toolbox. T_xls_Import

Sichtbarkeit & statische Methoden. Einsatz von Sichtbarkeit Einsatz statischer Methoden programmatische Realisierung 2 Beispielaufgaben

Programmierparadigmen

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Step by Step Softwareverteilung unter Novell. von Christian Bartl

Konfigurationsanleitung

Erfahrungen mit Hartz IV- Empfängern

Architektur des agimatec-validation Frameworks

Übung - Konfigurieren der Browser-Einstellungen in Windows 7

SimPDM Datenmodell im Kontext zu Teamcenter und PLMXML

AIM-System FUTURE-PATCH. Inbetriebnahme und Installation. Vertriebs- und Marketingschulung. 1st Level Support. Benutzerschulung

Objektorientiertes JavaScript

Vorkurs C++ Programmierung

Bedienungsanleitung Bildarchiv

Es gibt zwei Wege die elektronischen Daten aus Navision zu exportieren.

Java: Vererbung. Teil 3: super()

PHP Kurs Online Kurs Analysten Programmierer Web PHP

Ein Blick voraus. des Autors von C++: Bjarne Stroustrup Conrad Kobsch

DBS ::: SERIE 5. Join Right Semi- Join Left Semi-Join Projektion Selektion Fremdschlüssel. Kreuzprodukt

FRAGEBOGEN ANWENDUNG DES ECOPROWINE SELBSTBEWERTUNG-TOOLS

Grundlagen von Python

Eva Douma: Die Vorteile und Nachteile der Ökonomisierung in der Sozialen Arbeit

Vererbung & Schnittstellen in C#

Projekte für reale Herausforderungen Projektarbeit: Einleitung und Gliederung. Projekte für reale Herausforderungen

Multimedia im Netz Wintersemester 2011/12

Anleitung zur Bearbeitung von Prüferkommentaren in der Nachreichung

Java Einführung Packages

Projekt:,,Wieso wird Eiweiß und Sahne steif, wenn man es schlägt?

L & G TECH Industriezerspanung

Webgateway-Nutzung über Internet-Browser

HTML5. Wie funktioniert HTML5? Tags: Attribute:

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

Der SEPA-Konverter in StarMoney Business 6.0

KURZANLEITUNG CYBERDUCK MIT CLOUD OBJECT STORAGE

Die beliebtesten Smartphones der CHECK24-Kunden. nach Hersteller, Geschlecht und Alter

Investitionsentscheidungsrechnung vollständiger Finanzplan

Factory Method (Virtual Constructor)

Anbindung des eibport an das Internet

Paul Petzold Firmengründer, Verwaltungsratspräsident und Delegierter der Mirus Software AG

UMFRAGE II. QUARTAL 2014

DURCH VIDA ERZEUGTE PROTOKOLLDATEIEN 1 EINFÜHRUNG

affilinet_ Flash-Spezifikationen

Von Turbo Pascal zu Object Pascal

Entwicklung des Dentalmarktes in 2010 und Papier versus Plastik.

Modellierung von Agenten mit reicher innerer Struktur. Struktur anhand eines Einkaufzentrums

Übung - Festplattenwartung in Windows 7

5. Abstrakte Klassen. Beispiel (3) Abstrakte Klasse. Beispiel (2) Angenommen, wir wollen die folgende Klassenhierarchie implementieren:

Kundenzufriedenheit mit Strom- und Gasanbietern

Software Maintenance - Musterlösung zum Übungsblatt 1

MSDE 2000 mit Service Pack 3a

Arrays. PHP JavaScript Kapitel 9

INDEX. Öffentliche Ordner erstellen Seite 2. Offline verfügbar einrichten Seite 3. Berechtigungen setzen Seite 7. Öffentliche Ordner Offline

Qualitätsmanagementsystem der IHK Köln. Überblick 2015

Grammatiken. Einführung

Projektmanagement Training zu mehr Projektgewinn

Workshop 6. Einführung in die objektorientierte Programmierung. Teil: Java mit BlueJ

Datenerfassung Datenlogger DL2e Kurzanleitung zu LS2Win

Betriebswirtschaftliches Beratungstool für Steuerberater Ziele, Inhalte und Struktur

Webinar. Mach Dir die Welt, wie sie Dir gefällt! Die Antriebskräfte des Lebens nach dem Reiss-Profil erkennen

Google Chrome. Browsereinstellungen ab Version 33. Portal. erstellt von: EXEC Software Team GmbH Südstraße Ransbach-Baumbach

Wir arbeiten mit Zufallszahlen

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Mehrere Diagramme zu einer Darstellung kombinieren

Whitepaper. Produkt: combit Relationship Manager 7. combit Relationship Manager -rückläufer Script. combit GmbH Untere Laube Konstanz

Transkript:

Typbasierte Analyse von JavaScipt Phillip Heidegger heidegger@informatik.uni-freiburg.de Albert Ludwigs Universität Freiburg 28. Oktober 2008

Gliederung 1 Motivation 2 Einleitung in JavaScript 3 Typsystem für JavaScript 4 Typsysteme für dynamisch getypte Sprachen 5 Zusammenfassung Phillip Heidegger (Univ. of Freiburg) Typbasierte Analyse von JavaScipt 28. Oktober 2008 2 / 12

Motivation Wieso JavaScript? wichtigste Clientsprache im Internet wenige Tools vorhanden, die statische Analysen für JavaScript anbieten wird professionell eingesetzt Phillip Heidegger (Univ. of Freiburg) Typbasierte Analyse von JavaScipt 28. Oktober 2008 3 / 12

Motivation Eigenschaften von JavaScript dynamisches Typsystem automatische Konvertierung von Werten Objekte besitzen dynamischer Menge von Eigenschaften... Das Verhalten von JavaScript Programmen ist schwer zu sehen. Noch schwerer ist es, Sicherheit von JavaScript Programmen zu garantieren. Phillip Heidegger (Univ. of Freiburg) Typbasierte Analyse von JavaScipt 28. Oktober 2008 4 / 12

Einleitung in JavaScript Beispiel: 1 var x; 2 x = new Object(); 3 x.a = "2"; 4 x.b = 84; 5 x.geta = function () { return this.a; }; 6 x.mapb = function (f) { return f(this.getb()); }; 7 // call method of object x 8 firstcall = x.geta(); 9 // create anonymous function as parameter 10 theanswer = x.mapb ( function (x) { return x/firstcall; } ); Phillip Heidegger (Univ. of Freiburg) Typbasierte Analyse von JavaScipt 28. Oktober 2008 5 / 12

Einleitung in JavaScript Beispiel: 1 1 var a = "a string"; 2 a.x = 51; 3 alert(a.x); Phillip Heidegger (Univ. of Freiburg) Typbasierte Analyse von JavaScipt 28. Oktober 2008 6 / 12

Einleitung in JavaScript Beispiel: 1 1 var a = "a string"; 2 a.x = 51; 3 alert(a.x); 2 1 var a = new String("a string"); 2 a.x = 51; 3 alert(a.x); Phillip Heidegger (Univ. of Freiburg) Typbasierte Analyse von JavaScipt 28. Oktober 2008 6 / 12

Typsystem für JavaScript 1 singleton typs für Floats und Strings 2 union typs um Objektzugriff zu verbessern 3 Objekte: Information über Wrapper, Funktionen und Eigenschaften 4 Konvertierungen werden durch Relationen und durch die Wrapperinformationen der Objekte behandelt 5 Funktionen erhalten intersection typs Phillip Heidegger (Univ. of Freiburg) Typbasierte Analyse von JavaScipt 28. Oktober 2008 7 / 12

Typsystem für JavaScript Probleme 1 1 eval( e ); hybrid typs, gradual typs Phillip Heidegger (Univ. of Freiburg) Typbasierte Analyse von JavaScipt 28. Oktober 2008 8 / 12

Typsystem für JavaScript Probleme 1 1 eval( e ); hybrid typs, gradual typs 2 1 var x = new... ; 2 x.f = function... ; 3 x.f ( ) ; recency abstraction Phillip Heidegger (Univ. of Freiburg) Typbasierte Analyse von JavaScipt 28. Oktober 2008 8 / 12

Typsysteme für dynamisch getypte Sprachen Sage: Hybrid checking for flexible specifications [Gronski u.a (2006)] 1 Theorem Beweiser um Constraints zu lösen 2 Falls Theorem Beweiser fehlschlägt, dynamischen Check einführen 3 unentscheidbar Phillip Heidegger (Univ. of Freiburg) Typbasierte Analyse von JavaScipt 28. Oktober 2008 9 / 12

Typsysteme für dynamisch getypte Sprachen Gradual Typing for functional languages [Siek and Taha (2006)] Gradual Typing for Objects [Siek and Taha (2006)] Kombination aus dynamisch und statisch getypten Programmteilen möglich erlaubt Upcasts und Downcast Letztere werden dynamisch ueberprueft Phillip Heidegger (Univ. of Freiburg) Typbasierte Analyse von JavaScipt 28. Oktober 2008 10 / 12

Typsysteme für dynamisch getypte Sprachen Kombination der beiden Ansätze Well-typed Programs Can t Be Blamed [P. Wadler, R. Findler (2007)] Beweis, dass dynamisch getypter Teil der Sprache für Typfehler verantwortlich ist einfaches Typsystem bringt die beiden Ansätze in einen Kontext Wie ist dies auf JavaScript anwendbar? Phillip Heidegger (Univ. of Freiburg) Typbasierte Analyse von JavaScipt 28. Oktober 2008 11 / 12

Zusammenfassung Gelöst: 1 Konvertierungen 2 Objekte mit dynamischen Eigenschaften, ohne Zyklen 3 Funktionen mit unterschiedlichen Typen aufrufbar Probleme: 1 System sehr groß, deshalb Beweise entsprechend schwer überblickbar 2 Interaktion getypter und ungetypter Teile, eval 3 Funktionsaufrufe nach Zuweisung Phillip Heidegger (Univ. of Freiburg) Typbasierte Analyse von JavaScipt 28. Oktober 2008 12 / 12