RubyPolish: Static Bug Detection in Ruby Programs John Locke Alex Mont.

Slides:



Advertisements
Similar presentations
Dataflow Analysis for Datarace-Free Programs (ESOP 11) Arnab De Joint work with Deepak DSouza and Rupesh Nasre Indian Institute of Science, Bangalore.
Advertisements

Javascript Code Quality Check Tools Javascript Code Quality Check Tools JavaScript was originally intended to do small tasks in webpages, but now JavaScript.
Welcome to. Who am I? A better way to code Design Patterns ???  What are design patterns?  How many are there?  How do I use them?  When do I use.
Data-Flow Analysis Framework Domain – What kind of solution is the analysis looking for? Ex. Variables have not yet been defined – Algorithm assigns a.
3-Valued Logic Analyzer (TVP) Tal Lev-Ami and Mooly Sagiv.
SPLINT STATIC CHECKING TOOL Sripriya Subramanian 10/29/2002.
Advanced Compiler Design CSE 231 Instructor: Sorin Lerner.
Type Checking Compiler Design Lecture (02/25/98) Computer Science Rensselaer Polytechnic.
Evaluating and Tuning a Static Analysis to Find Null Pointer Bugs David Hovemeyer, Jaime Spacco, and William Pugh Presented by Nathaniel Ayewah CMSC838P.
Aliases in a bug finding tool Benjamin Chelf Seth Hallem June 5 th, 2002.
Advanced Compilers CSE 231 Instructor: Sorin Lerner.
Advanced Compilers CSE 231 Instructor: Sorin Lerner.
Advanced Compilers CSE 231 Instructor: Sorin Lerner.
OOP #10: Correctness Fritz Henglein. Wrap-up: Types A type is a collection of objects with common behavior (operations and properties). (Abstract) types.
Automatically Extracting and Verifying Design Patterns in Java Code James Norris Ruchika Agrawal Computer Science Department Stanford University {jcn,
1 Software, Programmings. 2 Types of Software Figure 9.1 Shakeel Ahmad.
Peter Juszczyk CS 492/493 - ISGS. // Is this C# or Java? class TestApp { static void Main() { int counter = 0; counter++; } } The answer is C# - In C#
Oakkar Fall The Need for Decision Engine Automate business processes Implement complex business decision logic Separation of rules and process Business.
CSE 6329 Project Team 1 Aliasgar Kagalwala Aditya Mone Derek White Dengfeng (Thomas) Xia.
XFindBugs: eXtended FindBugs for AspectJ Haihao Shen, Sai Zhang, Jianjun Zhao, Jianhong Fang, Shiyuan Yao Software Theory and Practice Group (STAP) Shanghai.
Crystal-izing Sophisticated Code Analyses Ciera Jaspan Kevin Bierhoff Jonathan Aldrich
Control Flow Resolution in Dynamic Language Author: Štěpán Šindelář Supervisor: Filip Zavoral, Ph.D.
Software Engineering Prof. Dr. Bertrand Meyer March 2007 – June 2007 Chair of Software Engineering Static program checking and verification Slides: Based.
Evaluating and Tuning a Static Analysis to Find Null Pointer Bugs Dave Hovemeyer Bill Pugh Jaime Spacco.
1 Debugging and Testing Overview Defensive Programming The goal is to prevent failures Debugging The goal is to find cause of failures and fix it Testing.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 22 Slide 1 Verification and Validation Slightly adapted by Anders Børjesson.
Ranga Rodrigo. The purpose of software engineering is to find ways of building quality software.
Introduction and Features of Java. What is java? Developed by Sun Microsystems (James Gosling) A general-purpose object-oriented language Based on C/C++
(Business) Process Centric Exchanges
Refactoring An Automated Tool for the Tiger Language Leslie A Hensley
Fundamental Programming: Fundamental Programming K.Chinnasarn, Ph.D.
Created By: Kevin Cherry. A library that creates a display to run on top of your game allowing you to retrieve/set values and invoke methods.
Tom Connolly Rob Liddel Scott Lucas. © 2008 Tom Connolly, Rob Liddel, and Scott Lucas This presentation is Copyrighted by Tom Connolly, Rob Liddel, and.
Methodology: The AOP Refactoring Process Aspect-Oriented Refactoring of the Apache Cocoon Shared-Object Resource Allocation System Jeff Dalton Advisor:
Advanced Compiler Design An Introduction to the Javali Compiler Framework Zoltán Majó 1.
DTS ( Defect Testing System ) Yang Zhao Hong, Gong Yun Zhan,Xiao Qing, Wang Ya Wen Beijing University of Posts and Telecommunications
Pluggable Domains for C Dataflow Analysis Nathan Cooprider and John Regehr {coop, School of Computing, University of Utah.
1 An Aspect-Oriented Implementation Method Sérgio Soares CIn – UFPE Orientador: Paulo Borba.
Linked List. Iterators Operation to find a link, deleting, and inserting before or after a specified link, also involve searching through the list to.
Introduction to Design Patterns. Questions What is a design pattern? Who needs design patterns? How different are classes and objects in APL compared.
1 Splint: A Static Memory Leakage tool Presented By: Krishna Balasubramanian.
1 JTransformer Framework Tobias Windeln Institut für Informatik III Rheinische Friedrich-Wilhelms-Universität Bonn.
1 Typing XQuery WANG Zhen (Selina) Something about the Internship Group Name: PROTHEO, Inria, France Research: Rewriting and strategies, Constraints,
CPSC 873 John D. McGregor Session 9 Testing Vocabulary.
Introduction Selenium IDE is a Firefox extension that allows you to record, edit, and debug tests for HTML Easy record and playback Intelligent field selection.
Demo of Scalable Pluggable Types Michael Ernst MIT Dagstuhl Seminar “Scalable Program Analysis” April 17, 2008.
School of Computer Science & Information Technology G6DICP - Lecture 6 Errors, bugs and debugging.
CPSC 871 John D. McGregor Module 8 Session 1 Testing.
How to execute Program structure Variables name, keywords, binding, scope, lifetime Data types – type system – primitives, strings, arrays, hashes – pointers/references.
Combining Static and Dynamic Reasoning for Bug Detection Yannis Smaragdakis and Christoph Csallner Elnatan Reisner – April 17, 2008.
IConverter TEAM 1 Denesh Kumar Krishnan Rajaram Sumanth Meda Jayaprakash Kapil Vyas.
Today's Ninja Challenge: Write Your First Computer Game!
Crystal-izing Sophisticated Code Analyses Ciera Jaspan Kevin Bierhoff Jonathan Aldrich
Course topics Representing programs Analyzing and transforming programs Applications of these techniques.
Static Analysis Introduction Emerson Murphy-Hill.
CPSC 372 John D. McGregor Module 8 Session 1 Testing.
Findbugs Tin Bui-Huy September, Content What is bug? What is bug? What is Findbugs? What is Findbugs? How to use Findbugs? How to use Findbugs?
Static Analysis Tools Emerson Murphy-Hill. A Comparison of Bug Finding Tools for Java Bug pattern detection PMD FindBugs JLint Theorem proving [involves.
How to execute Program structure Variables name, keywords, binding, scope, lifetime Data types – type system – primitives, strings, arrays, hashes – pointers/references.
Advanced Compiler Design
John D. McGregor Session 9 Testing Vocabulary
CSE 374 Programming Concepts & Tools
Harry Xu University of California, Irvine & Microsoft Research
John D. McGregor Session 9 Testing Vocabulary
UNO Static Analysis With a Simple Twist.
John D. McGregor Session 9 Testing Vocabulary
BugHint: A Visual Debugger Based on Graph Mining
Advanced Compiler Design
C021TV-I3-S2.
Assignment 5 … Data Next pointer Data Next pointer Data Next pointer
Presentation transcript:

RubyPolish: Static Bug Detection in Ruby Programs John Locke Alex Mont

Background FindBugs is a static analysis tool used to identify common bugs in Java programs Ruby is a dynamic, interpreted programming language Idea: Develop a FindBugs-type tool which operates on Ruby programs DRuby provides a means to do this

DRuby DRuby adds static typing to the standard Ruby language To accomplish this, DRuby boils down Ruby code to “Ruby Intermediate Language (RIL)” to allow for simple static analysis RIL provides an easier way to parse Ruby code and identify common programming mistakes

Project Plan Examine FindBugs to determine which detectors are useful for Ruby Implement extensible framework for static analysis using DRuby Implement bug detectors using the framework Test results on existing open-sourceRuby programs

Framework Dataflow Analyses Specified by transfer function Bug Detectors Pattern match based on RIL code structure for common mistakes Takes state and dataflow facts, determines if bug is detected Time permitting: Pluggable interface Conveniently add bug detectors on the fly

Example: Null Pointer Analysis Warning if: -Dereference of NULL or NSP -Nullcheck of NULL or NONNULL NONNULL NSP NCP NULL

Bug Detectors FindBugs has 131 correctness detectors Identified 15 to potentially implement for this project 2 require dataflow analysis 13 require only pattern matching Examples Incompatible bit masks Duplicate conditional tests Useless control flow

Project Progress Compiled and installed DRuby, examined existing code, learned about its operation Implemented prototypes of framework and detectors To do: Continue to fix bugs in the CFG logic Finish implementation of bug detectors Test detectors on existing code

Future Directions Compare with other static analysis tools Extend framework Alias analysis Interprocedural and field analysis Implement additional bug detectors (There’s always something else to detect! ). Possibly implement detectors not present in FindBugs