Continuous Code-Quality Assurance with SAFE
|
|
|
- Bernice Blankenship
- 9 years ago
- Views:
Transcription
1 Continuous Code-Quality Assurance with SAFE Emmanuel Geay Eran Yahav Stephen Fink IBM T.J. Watson Research Center ABSTRACT This paper presents the design of SAFE (Scalable and Flexible Error Detection), a static analysis tool targeting lightweight program verification and bug finding for Java. The tool utilizes two types of analysis: a simple structural checker based on pattern-matching, and an interprocedural flow-sensitive dataflow solver which integrates typestate checking and alias analysis. We describe how the tool integrates into a team development platform for analysis of batch builds, and user interface support built on the Eclipse platform. 1. INTRODUCTION For many years, program analysis researchers have developed tools to partially verify program correctness and find potential bugs and coding problems. While most interesting program verification problems are formally undecidable, tools employ a variety of analysis techniques that can produce valuable results in practice. A number of recent static analysis tools employ simple patternmatching to find suspicious code patterns. Tools such as PMD [17] and FindBugs [13] have followed a mantra that finding bugs is easy ; simple code scanning can identify many problems in code. Indeed, experimental results [20] show that simple techniques such as searching for likely mis-spellings in method names can yield useful information in real systems. Some tools (e.g.,[17, 5, 16]) provide simple pattern languages whereby a user can customize the tool s checking for domain-specific problems. While pattern matching can find some classes of bugs, researchers have also focused on deeper properties, such as security vulnerabilities [4] and API usage problems [18, 22]. These tools rely on powerful analysis techniques such as typestate verification [21], model checking [2], and sophisticated interprocedural dataflow and alias analysis [7, 11]. In many cases, scaling these techniques to large programs remains an open research topic. Nevertheless, these advanced tools have also yielded significant value in practical domains. We describe SAFE (Scalable And Flexible Error detection), a new IBM Research project which incorporates both shallow and deep approaches for bug finding and lightweight program verifi- Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. PEPM 06 January 9 10, 2006, Charleston, South Carolina, USA. Copyright 2006 ACM /06/ $5.00. cation. This paper describes the design of the tool, and gives a high-level overview of the analysis techniques employed. SAFE is designed to run either in batch mode, as part of a continuous build/integration loop [6], or as an interactive component in an Eclipse development environment. This paper describes the design of the user interface and its integration in both usage scenarios. The rest of this paper is organized as follows. In section 2, we describe the two main analysis components of SAFE the structural and typestate checkers. In section 3 we present the various modes of SAFE execution. In section 4 we briefly describe some experiences with users. In section 5 we describe related work. Finally, in section 6, we discuss some future work. 2. ANALYSIS COMPONENTS SAFE relies on two main analysis components: a structural engine based on (mostly) intraprocedural pattern matching. This engine tries to match suspicious known code patterns. a typestate checking engine performing (interprocedural) typestate checking with varying degrees of cost and precision, mostly depending on the way in which aliasing is handled. Each engine allows the user to easily customize rules and properties based on application-specific constructs. Structural Engine The structural engine constructs an XML model of the program, and uses the model as a basis for evaluating queries defining common bug-patterns. Many existing bug-finding tools are based on pattern-matching over the program s abstract syntax tree (AST) (e.g., PMD [17]). In contrast, SAFE constructs a model based on Java bytecode enriched by dataflow analyses such as constant propagation. This allows the user to define bug-patterns that encode semantic properties that cannot be expressed as AST patterns. The SAFE user can write custom queries expressed as XPath, or more generally, XQuery. With these languages, users can write specifications that refer to application-specific types and names, without writing any Java code or modifying any SAFE code. The structural engine currently handles patterns at two levels: (i) intraprocedural patterns specified over a representation of code and dataflow for a single procedure, and (ii) patterns specified over the structure of the program s class hierarchy and individual classes. Typestate Checking Engine Typestate checking [21] is a well-known technique to check a variety of temporal properties; e.g., that an object is not used before it is initialized, or that a resource is not used after it has been closed.
2 hasnextstate uncheckedstate hasnext next next hasnext error * Figure 1: Specification of the property call hasnext() before calling next() for the type java.util.iterator. Typestate checking models each object, at each point during a program s execution, as occupying one of finitely many states. The operations permitted on an object depend on its state, and each operation may alter the state of the object. Typestate checking tries to statically determine if the execution of a given program may cause an operation to be performed on an object in a state where said operation is forbidden. In SAFE, the user specifies a typestate property by providing (via XMI) a deterministic finite state automaton (DFA) defining the permitted sequences of operations for a type. For example, the DFA of Fig. 1 defines some of the permitted sequences of operations for the type java.util.iterator. In particular, this DFA specifies the requirement that for an Iterator object, a call to the next() method must be preceded by a call to hasnext(). If any Iterator object in the program violates this requirement, the SAFE typestate engine will report a finding. A key challenge for precise typestate checking concerns the treatment of aliasing. Various flow-insensitive alias analyses have been shown to scale to large programs [12, 15]. However, in many cases, typestate checking requires the ability to perform strong updates [3], which requires flow-sensitive treatment of pointers. We have developed a family of integrated typestate and alias analysis algorithms of varying cost and precision. These algorithms track aliases with flow-sensitive and context-sensitive symbolic access paths, but only at program points where dataflow information indicates that pointer manipulations will affect the typestate property. In this way, the algorithms focus the expensive alias analysis to small portions of the program. The SAFE typestate checker provides a staged analysis, running a sequence of integrated alias and typestate checkers applied in order of increasing precision and cost. Each stage checks only statements that previous stages failed to verify, thus reducing work for the most expensive algorithms. A detailed description and evaluation of the typestate algorithms falls beyond the scope of this paper, but will appear in an upcoming report [9]. 3. SAFE MODES SAFE has been designed to run in a variety of contexts: in a continuous integration [6] loop, as an Eclipse IDE plugin, as an ANT [1] task, and as a command-line program. With these various modes, a SAFE user can run the relatively inexpensive analyses interactively in the IDE, and the build system can run the deeper expensive analyses in batch. 3.1 SAFE within CruiseControl With the current state-of-the-art, aggressive interprocedural analyses can run for hours, and so best suit a background or batch environment. Also, in a team development environment, these interprocedural analyses may produce the most value checking builds for integration problems, rather than for intra-module problems in a single developer s workbench. For these reasons, we have integrated SAFE into CruiseControl [6] (as shown in Fig. 2), an environment for continuous integration [10]. SAFE runs as part of the normal CruiseControl build loop, and publishes results to an HTML tab in the CruiseControl build results page. A team using CruiseControl can install SAFE on the build server with no overhead for individual developers. 3.2 SAFE within Eclipse While a batch SAFE runner provides a low-overhead means to introduce SAFE into a project, static analysis can also provide value for an individual developer s IDE. With analysis in the IDE, the developer can analyze code for problems before committing to the source code repository. Additionally, the IDE provides for a richer, interactive user interface. For these reasons, SAFE supports deployment as a component for the popular Eclipse Java Development Environment. Detecting Entry Points for Whole-Program Analysis SAFE s whole-program interprocedural analyses require a specification of the program s entry points, that is, possible starting points for program execution. While in some cases a program has a single entry point (its main method), many cases require specification of multiple entry points (e.g., libraries, Eclipse plugins, incomplete code). SAFE allows the user to manually specify entry-points through an XML file. SAFE can alternatively detect entry points automatically. For example, for standard Java projects (projects with a Java nature ), SAFE automatically selects all main methods as candidate entry points. Similarly, SAFE provides support to analyze J2EE programs according to the remote interfaces exported by the Enterprise Java Beans. Unlike stand-alone Java programs, Eclipse plugins (projects with a plugin nature ) do not contain a main method. The two common techniques for running code in a plugin are through its plugin main class definition (with its start and stop methods), and by using a callback mechanism (extension points). SAFE deduces potential plugin project entrypoints by collecting all classes that can be instantiated by reflection in the extension points of the selected projects and their dependencies. Visualization of SAFE Findings In Eclipse, SAFE provides an Analysis Results view which displays all analysis findings categorized by rules. Double-clicking on a finding has two effects: opening a Java editor at the source location corresponding to the finding, and opening a Rule Details view. The rule details view provides additional information about the finding such as its textual description, an example code fragment, and a description of suggested corrective actions. Fig. 3 shows a screenshot of SAFE within Eclipse. In this figure, the Analysis Results view appears at the bottom, where a finding for the typestate rule Always call Iterator.hasNext() before calling Iterator.next() has been selected. The upper part of the figure shows the corresponding source line highlighted in the Java editor. The Rule Details view provides additional information about the finding at the right. Finally, the pop-up dialog box blocking part of the view shows how analysis configurations are defined. SAFE uses the Eclipse platform to provide content for online
3 Figure 2: SAFE within CruiseControl. Figure 3: SAFE within Eclipse.
4 Benchmark Classes Methods Bytecode Time lines (mm:ss) PDE 1,128 6,627 3,2261 1:37 RCP 4,144 32,883 1,567,979 5:03 JDT 4,859 41,325 2,446,541 8:11 Platform 14, ,195 5,117,868 20:55 Table 1: Structural engine benchmarks for Eclipse projects and analysis running times. Rule PDE RCP JDT Platform Always define hashcode() when equals() is defined Always define equals() when hashcode() is defined Avoid calling finalize() explicitly Avoid calling System.gc() Avoid calling Thread.stop() Avoid instantiating booleans using new Avoid instantiating empty strings using new Avoid instantiating strings using new Avoid using == and!= for String comparisons Avoid using Object.notify() Potential infinite recursion Potential null dereference Suspicious condition over a constant value Suspicious equal() method has been defined Total Table 2: Sample structural rules and findings for Eclipse benchmarks. help, and an Eclipse update site for easy web-based installation. 3.3 Other modes In addition to CruiseControl and Eclipse, SAFE also supports execution as an Ant task or as a stand-alone command-line tool. In these modes, the user provides the analysis scope and options as configuration XML files and/or command-line options, and SAFE produces the analysis results in an XML file. For these modes, SAFE supplies a web-based UI for exploring the results via a browser, using Extended Style Sheets and Javascript scripts. Several IBM groups instead read SAFE XML output directly, for use with other tools. Finally, in order to use Eclipse-based functionality (such as automatic detection of entry points) in a batch process, we also support running SAFE in an Eclipse headless mode. Technically, in this mode SAFE becomes an Eclipse Rich Client Platform (RCP [19]) application, without a UI, but with the underlying eclipse data-model. To run SAFE in this mode, the user provides a launch configuration and the location of an Eclipse workspace. 4. EXPERIENCE WITH SAFE SAFE is being used by a number of early adopter organizations across the IBM Corporation. One team has integrated SAFE into its Name Enumeration InputStream Iterator KeyStore PrintStream PrintWriter Signature Socket Stack URLConn Vector Description Call hasnextelement before nextelement Do not read from a closed InputStream Do not call next without checking hasnext Always initialize a KeyStore before using it Do not use a closed PrintStream Do not use a closed PrintWriter Follow initialization phases for Signatures Do not use a Socket until it is connected Do not peek or pop and empty Stack Illegal operation when already connected Do not access elements of an empty Vector Table 3: Sample typestate properties. build process; other teams mostly run it manually when required, either at the command-line or from within Eclipse. We have been running SAFE via CruiseControl on a number of IBM product code bases, and reporting bugs back to development teams. Some of the reported bugs have been confirmed as defects. Additionally, we use SAFE on our own build servers in IBM Research, continuously checking several research projects. In addition to real projects using SAFE, we have also evaluated the structural engine over 4 Eclipse components: Platform, PDE, RCP and JDT. The sizes of these projects in terms of classes, methods, and number of bytecode statements, are shown in Table 1. The findings reported by SAFE for these benchmarks are shown in Table 2. All experiments ran on IBM Intellistation Z pro with two 3.06 GHz Intel Xeon CPUs, and 3.62 GB of RAM running Windows XP with IBM J2RE We manually verified some of the findings reported by SAFE, and in particular, found a real null pointer exception in the updatemanager code of the Platform component. The rule suspicious condition over constant value returns a large number of matches. This is mostly due to various debugging flags that guard code producing output to a tracing facility. The matches returned by the rule potential infinite recursion are all false alarms. This is due to code that follows a proxy design pattern and delegates responsibilities to other objects that implement the same interface. Unfortunately, the current version of the structural engine is unable to observe that the target object of the call is different than the calling object. Table 3 shows some of the typestate properties checked by SAFE. Another report [9] presents a detailed evaluation of the typestate checkers; the results show that the typestate checkers verified the absence of typestate violations for over 95% of the eligible statements, over a suite of 19 moderate-sized projects (up to 100,000 lines of code) We are currently working on algorithmic improvements to scale the typetate checker to larger code bases, and also to analyze libraries in addition to complete programs. 5. RELATED WORK Due to space limitations, we review here only a few of the most relevant related projects. FindBugs [13] is Java bytecode pattern-matching tool with patterns corresponding to error-prone constructs. The functionality and limitations of FindBugs resemble those of our structural checker. However, FindBugs operates directly on Java bytecode, where SAFE operates on an intermediate representation enriched by information from dataflow analysis. In addition, the SAFE structural engine allows flexible pattern specification via XPath and XQuery.
5 A large number of tools operate directly on the program s AST, including CodeReview [5], JTest [16], JiveLint [14], and PMD [17]. Some of these tools checking compliance with various coding styles. CodeReview and JTest provide refactoring operations to correct problems, integrated with Eclipse. ESP [7] is a typestate checker for C programs, utilizing selective path-sensitivity for scalability. ESP handles aliasing by taking a two-phased approach in which typestate checking is preceded by a pointer analysis. In contrast, SAFE supports multiple ways of handling aliasing, including an integrated typestate analysis and alias analysis. In the future, we plan to extend SAFE to use selective path-sensitivity in a way similar to ESP. 6. FUTURE WORK In the near future, we are focusing our efforts on improving the usability and scalability of SAFE. The structural engine currently analyzes code bases of several million lines, while we can currently scale a typical typestate analysis up to a few hundred thousand lines of code. To improve usability, we will add various features to allow user to customize the reported findings. We also plan to incorporate a symbolic analysis for generating counter-examples from SAFE findings, and to reduce the rate of reported false positives. In addition, we are investigating the use of specification mining techniques to automatically generate typestate specifications. 7. REFERENCES [1] Apache Ant. [2] T. Ball and S. K. Rajamani. The slam project: debugging system software via static analysis. In POPL 02: Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages, pages 1 3, New York, NY, USA, ACM Press. [3] D. Chase, M. Wegman, and F. Zadeck. Analysis of pointers and structures. In Proc. Conf. on Prog. Lang. Design and Impl., pages , New York, NY, ACM Press. [4] H. Chen and D. Wagner. Mops: an infrastructure for examining security properties of software. In CCS 02: Proceedings of the 9th ACM conference on Computer and communications security, pages , New York, NY, USA, ACM Press. [5] CodeReview ibm.com/developerworks/rational/library/05/higgins. [6] CruiseControl. [7] M. Das, S. Lerner, and M. Seigle. ESP: Path-sensitive program verification in polynomial time. In Proc. Conf. on Prog. Lang. Design and Impl., pages 57 68, June [8] J. Field, D. Goyal, G. Ramalingam, and E. Yahav. Typestate verification: Abstraction techniques and complexity results. In Proc. of SAS 03, volume 2694 of LNCS, pages Springer, June [9] S. Fink, E. Yahav, N. Dor, G. Ramalingam, and E. Geay. Typestate checking in the presence of aliasing. in preparation, [10] M. Fowler. Continuous Integration. [11] S. Hallem, B. Chelf, Y. Xie, and D. Engler. A system and language for building system-specific, static analyses. In PLDI 02: Proceedings of the ACM SIGPLAN 2002 Conference on Programming language design and implementation, pages 69 82, New York, NY, USA, ACM Press. [12] N. Heintze and O. Tardieu. Ultra-fast aliasing analysis using CLA: A million lines of C code in a second. 36(5): , May In Conference on Programming Language Design and Implementation (PLDI). [13] D. Hovemeyer and W. Pugh. Finding bugs is easy. In OOPSLA 04: Companion to the 19th annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications, pages , New York, NY, USA, ACM Press. [14] JLint. [15] O. Lhoták and L. Hendren. Scaling Java points-to analysis using SPARK. In 12th International Conference on Compiler Construction (CC), volume 2622 of LNCS, pages , Apr [16] Parasoft JTest. [17] PMD. [18] G. Ramalingam, A. Warshavsky, J. Field, D. Goyal, and M. Sagiv. Deriving specialized program analyses for certifying component-client conformance. In Proc. Conf. on Prog. Lang. Design and Impl., volume 37, 5, pages 83 94, June [19] RCP. [20] N. Rutar, C. B. Almazan, and J. S. Foster. A comparison of bug finding tools for java. In ISSRE 04: Proceedings of the 15th IEEE International Symposium on Software Reliability Engineering, November [21] R. E. Strom and S. Yemini. Typestate: A programming language concept for enhancing software reliability. IEEE Trans. Software Eng., 12(1): , [22] W. Weimer and G. C. Necula. Finding and preventing run-time error handling mistakes. In OOPSLA 04: Proceedings of the 19th annual ACM SIGPLAN Conference on Object-oriented programming, systems, languages, and applications, pages , New York, NY, USA, ACM Press. Acknowledgements Many thanks to Steve Gutz for his contributions to the SAFE Eclipse environment.
Comparing Four Static Analysis Tools for Java Concurrency Bugs
Comparing Four Static Analysis Tools for Java Concurrency Bugs Md. Abdullah Al Mamun, Aklima Khanam, Håkan Grahn, and Robert Feldt School of Computing, Blekinge Institute of Technology SE-371 79 Karlskrona,
Towards SOA-based Code Defect Analysis
Towards SOA-based Code Defect Analysis Qianxiang Wang, Na Meng, Zhiyi Zhou, Jinhui Li, Hong Mei School of Electronics Engineering and Computer Science, Peking University Key Laboratory of High Confidence
A staged static program analysis to improve the performance of runtime monitoring
A staged static program analysis to improve the performance of runtime monitoring Eric Bodden 1, Laurie Hendren 1, Ondřej Lhoták 2 1 McGill University, Montréal, Québec, Canada 2 University of Waterloo,
Securing Network Software using Static Analysis
Securing Network Software using Static Analysis Lauri Kolmonen Helsinki University of Technology [email protected] Abstract Writing network software is not easy and developing secure network software
TOOL EVALUATION REPORT: FORTIFY
TOOL EVALUATION REPORT: FORTIFY Derek D Souza, Yoon Phil Kim, Tim Kral, Tejas Ranade, Somesh Sasalatti ABOUT THE TOOL Background The tool that we have evaluated is the Fortify Source Code Analyzer (Fortify
Ontology Model-based Static Analysis on Java Programs
Ontology Model-based Static Analysis on Java Programs Lian Yu 1, Jun Zhou, Yue Yi, Ping Li, Qianxiang Wang School of Software and Microelectronics, Peking University, Beijing, 102600, PRC Abstract 1 Typical
SOFTWARE TESTING TRAINING COURSES CONTENTS
SOFTWARE TESTING TRAINING COURSES CONTENTS 1 Unit I Description Objectves Duration Contents Software Testing Fundamentals and Best Practices This training course will give basic understanding on software
Braindumps.C2150-810.50 questions
Braindumps.C2150-810.50 questions Number: C2150-810 Passing Score: 800 Time Limit: 120 min File Version: 5.3 http://www.gratisexam.com/ -810 IBM Security AppScan Source Edition Implementation This is the
Software quality improvement via pattern matching
Software quality improvement via pattern matching Radu Kopetz and Pierre-Etienne Moreau INRIA & LORIA {Radu.Kopetz, [email protected] Abstract. Nested if-then-else statements is the most common
State of the World - Statically Verifying API Usage Rule
Statically Verifying API Usage Rule using Tracematches Xavier Noumbissi, Patrick Lam University of Waterloo November 4, 2010 (University of Waterloo) Statically Verifying API Usage Rule November 4, 2010
EMC Documentum Composer
EMC Documentum Composer Version 6.5 User Guide P/N 300 007 217 A02 EMC Corporation Corporate Headquarters: Hopkinton, MA 01748 9103 1 508 435 1000 www.emc.com Copyright 2008 EMC Corporation. All rights
Xcode Project Management Guide. (Legacy)
Xcode Project Management Guide (Legacy) Contents Introduction 10 Organization of This Document 10 See Also 11 Part I: Project Organization 12 Overview of an Xcode Project 13 Components of an Xcode Project
InvGen: An Efficient Invariant Generator
InvGen: An Efficient Invariant Generator Ashutosh Gupta and Andrey Rybalchenko Max Planck Institute for Software Systems (MPI-SWS) Abstract. In this paper we present InvGen, an automatic linear arithmetic
SAF: Static Analysis Improved Fuzzing
The Interdisciplinary Center, Herzlia Efi Arazi School of Computer Science SAF: Static Analysis Improved Fuzzing M.Sc. Dissertation Submitted in Partial Fulfillment of the Requirements for the Degree of
Integrating TAU With Eclipse: A Performance Analysis System in an Integrated Development Environment
Integrating TAU With Eclipse: A Performance Analysis System in an Integrated Development Environment Wyatt Spear, Allen Malony, Alan Morris, Sameer Shende {wspear, malony, amorris, sameer}@cs.uoregon.edu
SourceMeter SonarQube plug-in
2014 14th IEEE International Working Conference on Source Code Analysis and Manipulation SourceMeter SonarQube plug-in Rudolf Ferenc, László Langó, István Siket, Tibor Gyimóthy University of Szeged, Department
Towards Checking the Usefulness of Verification Tools
Towards Checking the Usefulness of Verification Tools Willem Visser and Jaco Geldenhuys Computer Science Division Department of Mathematical Sciences University of Stellenbosch, South Africa {wvisser,jaco}@cs.sun.ac.za
Source Code Review Using Static Analysis Tools
Source Code Review Using Static Analysis Tools July-August 05 Author: Stavros Moiras Supervisor(s): Stefan Lüders Aimilios Tsouvelekakis CERN openlab Summer Student Report 05 Abstract Many teams at CERN,
Towards Software Configuration Management for Test-Driven Development
Towards Software Configuration Management for Test-Driven Development Tammo Freese OFFIS, Escherweg 2, 26121 Oldenburg, Germany [email protected] Abstract. Test-Driven Development is a technique where
µz An Efficient Engine for Fixed points with Constraints
µz An Efficient Engine for Fixed points with Constraints Kryštof Hoder, Nikolaj Bjørner, and Leonardo de Moura Manchester University and Microsoft Research Abstract. The µz tool is a scalable, efficient
Software Development Kit
Open EMS Suite by Nokia Software Development Kit Functional Overview Version 1.3 Nokia Siemens Networks 1 (21) Software Development Kit The information in this document is subject to change without notice
Write Barrier Removal by Static Analysis
Write Barrier Removal by Static Analysis Karen Zee and Martin Rinard Laboratory for Computer Science Massachusetts Institute of Technology Cambridge, MA 02139 {kkz, [email protected] ABSTRACT We present
IBM Rational Web Developer for WebSphere Software Version 6.0
Rapidly build, test and deploy Web, Web services and Java applications with an IDE that is easy to learn and use IBM Rational Web Developer for WebSphere Software Version 6.0 Highlights Accelerate Web,
Profiling and Testing with Test and Performance Tools Platform (TPTP)
Profiling and Testing with Test and Performance Tools Platform (TPTP) 2009 IBM Corporation and Intel Corporation; made available under the EPL v1.0 March, 2009 Speakers Eugene Chan IBM Canada [email protected]
UML-based Test Generation and Execution
UML-based Test Generation and Execution Jean Hartmann, Marlon Vieira, Herb Foster, Axel Ruder Siemens Corporate Research, Inc. 755 College Road East Princeton NJ 08540, USA [email protected] ABSTRACT
A Brief Introduction to Static Analysis
A Brief Introduction to Static Analysis Sam Blackshear March 13, 2012 Outline A theoretical problem and how to ignore it An example static analysis What is static analysis used for? Commercial successes
tools that make every developer a quality expert
tools that make every developer a quality expert Google: www.google.com Copyright 2006-2010, Google,Inc.. All rights are reserved. Google is a registered trademark of Google, Inc. and CodePro AnalytiX
Using Eclipse CDT/PTP for Static Analysis
PTP User-Developer Workshop Sept 18-20, 2012 Using Eclipse CDT/PTP for Static Analysis Beth R. Tibbitts IBM STG [email protected] "This material is based upon work supported by the Defense Advanced Research
Towards a Framework for Generating Tests to Satisfy Complex Code Coverage in Java Pathfinder
Towards a Framework for Generating Tests to Satisfy Complex Code Coverage in Java Pathfinder Matt Department of Computer Science and Engineering University of Minnesota [email protected] Abstract We present
A Scalable Technique for Characterizing the Usage of Temporaries in Framework-intensive Java Applications
A Scalable Technique for Characterizing the Usage of Temporaries in Framework-intensive Java Applications Bruno Dufour Dept of Computer Science Rutgers University [email protected] Barbara G. Ryder
A QUICK OVERVIEW OF THE OMNeT++ IDE
Introduction A QUICK OVERVIEW OF THE OMNeT++ IDE The OMNeT++ 4.x Integrated Development Environment is based on the Eclipse platform, and extends it with new editors, views, wizards, and additional functionality.
Oracle Solaris Studio Code Analyzer
Oracle Solaris Studio Code Analyzer The Oracle Solaris Studio Code Analyzer ensures application reliability and security by detecting application vulnerabilities, including memory leaks and memory access
Secure Software Programming and Vulnerability Analysis
Secure Software Programming and Vulnerability Analysis Christopher Kruegel [email protected] http://www.auto.tuwien.ac.at/~chris Testing and Source Code Auditing Secure Software Programming 2 Overview
Toward A Taxonomy of Techniques to Detect Cross-site Scripting and SQL Injection Vulnerabilities
NCSU CSC TR 2008-4 1 Toward A Taxonomy of Techniques to Detect Cross-site Scripting and SQL Injection Vulnerabilities Yonghee SHIN, Laurie WILLIAMS, Members, IEEE Abstract Since 2002, over half of reported
SSVChecker: Unifying Static Security Vulnerability Detection Tools in an Eclipse Plug-In
SSVChecker: Unifying Static Security Vulnerability Detection Tools in an Eclipse Plug-In Josh Dehlinger Dept. of Computer Science Iowa State University [email protected] Qian Feng ABC Virtual Communications
AJAX Toolkit Framework
IBM Software Group AJAX Toolkit Framework Emerging Internet Technologies Group Ajax - What s our vision Grow Ajax adoption to the next phase Evolve tools that significantly reduce the development costs
An Exception Monitoring System for Java
An Exception Monitoring System for Java Heejung Ohe and Byeong-Mo Chang Department of Computer Science, Sookmyung Women s University, Seoul 140-742, Korea {lutino, [email protected] Abstract. Exception
Introduction to Eclipse, Creating Eclipse plug-ins and the Overture editor. David Holst Møller Engineering College of Aarhus
Introduction to Eclipse, Creating Eclipse plug-ins and the Overture editor David Holst Møller Engineering College of Aarhus Agenda Part I Introduction to Eclipse and Eclipse Plug-ins Part II The Overture
VIRTUAL LABORATORY: MULTI-STYLE CODE EDITOR
VIRTUAL LABORATORY: MULTI-STYLE CODE EDITOR Andrey V.Lyamin, State University of IT, Mechanics and Optics St. Petersburg, Russia Oleg E.Vashenkov, State University of IT, Mechanics and Optics, St.Petersburg,
Selenium Automation set up with TestNG and Eclipse- A Beginners Guide
Selenium Automation set up with TestNG and Eclipse- A Beginners Guide Authors: Eevuri Sri Harsha, Ranjani Sivagnanam Sri Harsha is working as an Associate Software Engineer (QA) for IBM Policy Atlas team
Introduction to Programming System Design. CSCI 455x (4 Units)
Introduction to Programming System Design CSCI 455x (4 Units) Description This course covers programming in Java and C++. Topics include review of basic programming concepts such as control structures,
Synchronizer Installation
Synchronizer Installation Synchronizer Installation Synchronizer Installation This document provides instructions for installing Synchronizer. Synchronizer performs all the administrative tasks for XenClient
A Thread Monitoring System for Multithreaded Java Programs
A Thread Monitoring System for Multithreaded Java Programs Sewon Moon and Byeong-Mo Chang Department of Computer Science Sookmyung Women s University, Seoul 140-742, Korea [email protected], [email protected]
SAP HANA Core Data Services (CDS) Reference
PUBLIC SAP HANA Platform SPS 12 Document Version: 1.0 2016-05-11 Content 1 Getting Started with Core Data Services....4 1.1 Developing Native SAP HANA Applications....5 1.2 Roles and Permissions....7 1.3
The Effectiveness of Automated Static Analysis Tools for Fault Detection and Refactoring Prediction
The Effectiveness of Automated Static Analysis Tools for Fault Detection and Refactoring Prediction Fadi Wedyan, Dalal Alrmuny, and James M. Bieman Colorado State University Computer Science Department
Pattern Insight Clone Detection
Pattern Insight Clone Detection TM The fastest, most effective way to discover all similar code segments What is Clone Detection? Pattern Insight Clone Detection is a powerful pattern discovery technology
<Insert Picture Here> What's New in NetBeans IDE 7.2
Slide 1 What's New in NetBeans IDE 7.2 The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated
Desktop, Web and Mobile Testing Tutorials
Desktop, Web and Mobile Testing Tutorials * Windows and the Windows logo are trademarks of the Microsoft group of companies. 2 About the Tutorial With TestComplete, you can test applications of three major
WebRatio 5: An Eclipse-based CASE tool for engineering Web applications
WebRatio 5: An Eclipse-based CASE tool for engineering Web applications Roberto Acerbis 1, Aldo Bongio 1, Marco Brambilla 2, Stefano Butti 1 1 WebModels S.r.l. Piazzale Gerbetto, 6. I22100 Como, Italy
Chapter 13: Program Development and Programming Languages
15 th Edition Understanding Computers Today and Tomorrow Comprehensive Chapter 13: Program Development and Programming Languages Deborah Morley Charles S. Parker Copyright 2015 Cengage Learning Learning
Automatic vs. Manual Code Analysis
Automatic vs. Manual Code Analysis 2009-11-17 Ari Kesäniemi Senior Security Architect Nixu Oy [email protected] Copyright The Foundation Permission is granted to copy, distribute and/or modify this
Sabre Red Apps. Developer Toolkit Overview. October 2014
Sabre Red Apps Developer Toolkit Overview October 2014 Red Apps are optional, authorized applications that extend the capabilities of Sabre Red Workspace. Red Apps are Sabre's branded version of an Eclipse
Two Flavors in Automated Software Repair: Rigid Repair and Plastic Repair
Two Flavors in Automated Software Repair: Rigid Repair and Plastic Repair Martin Monperrus, Benoit Baudry Dagstuhl Preprint, Seminar #13061, 2013. Link to the latest version Abstract In this paper, we
Adaptive Context-sensitive Analysis for JavaScript
Adaptive Context-sensitive Analysis for JavaScript Shiyi Wei and Barbara G. Ryder Department of Computer Science Virginia Tech Blacksburg, VA, USA {wei, ryder}@cs.vt.edu Abstract Context sensitivity is
Detecting Critical Defects on the Developer s Desktop
Detecting Critical Defects on the Developer s Desktop Seth Hallem CEO Coverity, Inc. Copyright Coverity, Inc. 2006. All Rights Reserved. This publication, in whole or in part, may not be reproduced, stored
General Flow-Sensitive Pointer Analysis and Call Graph Construction
General Flow-Sensitive Pointer Analysis and Call Graph Construction Endre Horváth, István Forgács, Ákos Kiss, Judit Jász and Tibor Gyimóthy University of Szeged 4D Soft Ltd. Aradi Vértanúk tere 1. Soroksári
The ADOxx Metamodelling Platform Workshop "Methods as Plug-Ins for Meta-Modelling" in conjunction with "Modellierung 2010", Klagenfurt
The ADOxx Metamodelling Platform Workshop "Methods as Plug-Ins for Meta-Modelling" in conjunction with "Modellierung 2010", Klagenfurt Dr. Harald Kühn 24.03.2010 Agenda 1 Overview 2 Deployment and Integration
Enabling SSL and Client Certificates on the SAP J2EE Engine
Enabling SSL and Client Certificates on the SAP J2EE Engine Angel Dichev RIG, SAP Labs SAP AG 1 Learning Objectives As a result of this session, you will be able to: Understand the different SAP J2EE Engine
Statically Checking API Protocol Conformance with Mined Multi-Object Specifications Companion Report
Statically Checking API Protocol Conformance with Mined Multi-Object Specifications Companion Report Michael Pradel 1, Ciera Jaspan 2, Jonathan Aldrich 2, and Thomas R. Gross 1 1 Department of Computer
Database Application Developer Tools Using Static Analysis and Dynamic Profiling
Database Application Developer Tools Using Static Analysis and Dynamic Profiling Surajit Chaudhuri, Vivek Narasayya, Manoj Syamala Microsoft Research {surajitc,viveknar,manojsy}@microsoft.com Abstract
An Eclipse Plug-In for Visualizing Java Code Dependencies on Relational Databases
An Eclipse Plug-In for Visualizing Java Code Dependencies on Relational Databases Paul L. Bergstein, Priyanka Gariba, Vaibhavi Pisolkar, and Sheetal Subbanwad Dept. of Computer and Information Science,
Integrated Error-Detection Techniques: Find More Bugs in Java Applications
Integrated Error-Detection Techniques: Find More Bugs in Java Applications Software verification techniques such as pattern-based static code analysis, runtime error detection, unit testing, and flow analysis
IBM VisualAge for Java,Version3.5. Remote Access to Tool API
IBM VisualAge for Java,Version3.5 Remote Access to Tool API Note! Before using this information and the product it supports, be sure to read the general information under Notices. Edition notice This edition
SAS IT Resource Management 3.2
SAS IT Resource Management 3.2 Reporting Guide Second Edition SAS Documentation The correct bibliographic citation for this manual is as follows: SAS Institute Inc 2011. SAS IT Resource Management 3.2:
An Effective Approach for Detecting and Preventing Sqlinjection Attacks
An Effective Approach for Detecting and Preventing Sqlinjection Attacks M. Roslinmary 1, S. Sivasakthi 2, A. Shenbaga Bharatha Priya 3 1, 2, 3 PG scholar, Department of IT, Dr. Sivanthi Aditanar College
InfoSphere Master Data Management operational server v11.x OSGi best practices and troubleshooting guide
InfoSphere Master Data Management operational server v11.x OSGi best practices and troubleshooting guide Introduction... 2 Optimal workspace operational server configurations... 3 Bundle project build
SCADE System 17.0. Technical Data Sheet. System Requirements Analysis. Technical Data Sheet SCADE System 17.0 1
SCADE System 17.0 SCADE System is the product line of the ANSYS Embedded software family of products and solutions that empowers users with a systems design environment for use on systems with high dependability
How To Install An Aneka Cloud On A Windows 7 Computer (For Free)
MANJRASOFT PTY LTD Aneka 3.0 Manjrasoft 5/13/2013 This document describes in detail the steps involved in installing and configuring an Aneka Cloud. It covers the prerequisites for the installation, the
WebSphere Business Monitor
WebSphere Business Monitor Monitor models 2010 IBM Corporation This presentation should provide an overview of monitor models in WebSphere Business Monitor. WBPM_Monitor_MonitorModels.ppt Page 1 of 25
PC Based Escape Analysis in the Java Virtual Machine
PC Based Escape Analysis in the Java Virtual Machine Manfred Jendrosch, Gerhard W. Dueck, Charlie Gracie, and AndréHinkenjann Abstract Current computer architectures are multi-threaded and make use of
Rational Application Developer Performance Tips Introduction
Rational Application Developer Performance Tips Introduction This article contains a series of hints and tips that you can use to improve the performance of the Rational Application Developer. This article
Meister Going Beyond Maven
Meister Going Beyond Maven A technical whitepaper comparing OpenMake Meister and Apache Maven OpenMake Software 312.440.9545 800.359.8049 Winners of the 2009 Jolt Award Introduction There are many similarities
Certified Selenium Professional VS-1083
Certified Selenium Professional VS-1083 Certified Selenium Professional Certified Selenium Professional Certification Code VS-1083 Vskills certification for Selenium Professional assesses the candidate
Tutorial 5: Developing Java applications
Tutorial 5: Developing Java applications p. 1 Tutorial 5: Developing Java applications Georgios Gousios [email protected] Department of Management Science and Technology Athens University of Economics and
Programming and Software Development CTAG Alignments
Programming and Software Development CTAG Alignments This document contains information about four Career-Technical Articulation Numbers (CTANs) for Programming and Software Development Career-Technical
Writing new FindBugs detectors
Writing new FindBugs detectors Why? You may find bug patterns in your own code How? Inspect bytecode There are many ways to implement a FindBugs detector Often, simple techniques (e.g., sequential scan)
Towards practical reactive security audit using extended static checkers 1
Towards practical reactive security audit using extended static checkers 1 Julien Vanegue 1 Shuvendu K. Lahiri 2 1 Bloomberg LP, New York 2 Microsoft Research, Redmond May 20, 2013 1 The work was conducted
XenClient Enterprise Synchronizer Installation Guide
XenClient Enterprise Synchronizer Installation Guide Version 5.1.0 March 26, 2014 Table of Contents About this Guide...3 Hardware, Software and Browser Requirements...3 BIOS Settings...4 Adding Hyper-V
Elixir Schedule Designer User Manual
Elixir Schedule Designer User Manual Release 7.3 Elixir Technology Pte Ltd Elixir Schedule Designer User Manual: Release 7.3 Elixir Technology Pte Ltd Published 2008 Copyright 2008 Elixir Technology Pte
EXTENDING JMETER TO ALLOW FOR WEB STRUCTURE MINING
EXTENDING JMETER TO ALLOW FOR WEB STRUCTURE MINING Agustín Sabater, Carlos Guerrero, Isaac Lera, Carlos Juiz Computer Science Department, University of the Balearic Islands, SPAIN [email protected], [email protected],
Java Application Developer Certificate Program Competencies
Java Application Developer Certificate Program Competencies After completing the following units, you will be able to: Basic Programming Logic Explain the steps involved in the program development cycle
Zend Server 4.0 Beta 2 Release Announcement What s new in Zend Server 4.0 Beta 2 Updates and Improvements Resolved Issues Installation Issues
Zend Server 4.0 Beta 2 Release Announcement Thank you for your participation in the Zend Server 4.0 beta program. Your involvement will help us ensure we best address your needs and deliver even higher
Java Application Development using Eclipse. Jezz Kelway [email protected] Java Technology Centre, z/os Service IBM Hursley Park Labs, United Kingdom
8358 Java Application Development using Eclipse Jezz Kelway [email protected] Java Technology Centre, z/os Service IBM Hursley Park Labs, United Kingdom Abstract Learn how to use the powerful features
Take full advantage of IBM s IDEs for end- to- end mobile development
Take full advantage of IBM s IDEs for end- to- end mobile development ABSTRACT Mobile development with Rational Application Developer 8.5, Rational Software Architect 8.5, Rational Developer for zenterprise
Protecting Database Centric Web Services against SQL/XPath Injection Attacks
Protecting Database Centric Web Services against SQL/XPath Injection Attacks Nuno Laranjeiro, Marco Vieira, and Henrique Madeira CISUC, Department of Informatics Engineering University of Coimbra, Portugal
Automation using Selenium
Table of Contents 1. A view on Automation Testing... 3 2. Automation Testing Tools... 3 2.1 Licensed Tools... 3 2.1.1 Market Growth & Productivity... 4 2.1.2 Current Scenario... 4 2.2 Open Source Tools...
Tutorial: Load Testing with CLIF
Tutorial: Load Testing with CLIF Bruno Dillenseger, Orange Labs Learning the basic concepts and manipulation of the CLIF load testing platform. Focus on the Eclipse-based GUI. Menu Introduction about Load
Actuate Business Intelligence and Reporting Tools (BIRT)
Product Datasheet Actuate Business Intelligence and Reporting Tools (BIRT) Eclipse s BIRT project is a flexible, open source, and 100% pure Java reporting tool for building and publishing reports against
A Practical Blended Analysis for Dynamic Features in JavaScript
A Practical Blended Analysis for Dynamic Features in JavaScript Shiyi Wei Barbara G. Ryder Department of Computer Science Virginia Tech wei, [email protected] ABSTRACT The JavaScript Blended Analysis Framework
How Programmers Use Internet Resources to Aid Programming
How Programmers Use Internet Resources to Aid Programming Jeffrey Stylos Brad A. Myers Computer Science Department and Human-Computer Interaction Institute Carnegie Mellon University 5000 Forbes Ave Pittsburgh,
IBM WebSphere Operational Decision Management Improve business outcomes with real-time, intelligent decision automation
Solution Brief IBM WebSphere Operational Decision Management Improve business outcomes with real-time, intelligent decision automation Highlights Simplify decision governance and visibility with a unified
An introduction to creating Web 2.0 applications in Rational Application Developer Version 8.0
An introduction to creating Web 2.0 applications in Rational Application Developer Version 8.0 September 2010 Copyright IBM Corporation 2010. 1 Overview Rational Application Developer, Version 8.0, contains
Application Code Development Standards
Application Code Development Standards Overview This document is intended to provide guidance to campus system owners and software developers regarding secure software engineering practices. These standards
Build Management. Context. Learning Objectives
Build Management Wolfgang Emmerich Professor of Distributed Computing University College London http://sse.cs.ucl.ac.uk Context Requirements Inception Elaboration Construction Transition Analysis Design
