The PSG system: from formal language definitions to interactive programming environments
ACM Transactions on Programming Languages and Systems (TOPLAS)
A systematic approach to fuzzy parsing
Software—Practice & Experience
A practical framework for demand-driven interprocedural data flow analysis
ACM Transactions on Programming Languages and Systems (TOPLAS)
Data-flow analysis of program fragments
ESEC/FSE-7 Proceedings of the 7th European software engineering conference held jointly with the 7th ACM SIGSOFT international symposium on Foundations of software engineering
A Framework for Partial Data Flow Analysis
ICSM '94 Proceedings of the International Conference on Software Maintenance
Efficient Inference of Static Types for Java Bytecode
SAS '00 Proceedings of the 7th International Symposium on Static Analysis
Soot - a Java bytecode optimization framework
CASCON '99 Proceedings of the 1999 conference of the Centre for Advanced Studies on Collaborative research
Generating Robust Parsers using Island Grammars
WCRE '01 Proceedings of the Eighth Working Conference on Reverse Engineering (WCRE'01)
Parsing C++ Despite Missing Declarations
IWPC '99 Proceedings of the 7th International Workshop on Program Comprehension
Fragment Class Analysis for Testing of Polymorphism in Java Software
IEEE Transactions on Software Engineering
Mining Version Histories to Guide Software Changes
IEEE Transactions on Software Engineering
SNIAFL: Towards a static noninteractive approach to feature location
ACM Transactions on Software Engineering and Methodology (TOSEM)
The DaCapo benchmarks: java benchmarking development and analysis
Proceedings of the 21st annual ACM SIGPLAN conference on Object-oriented programming systems, languages, and applications
Using FindBugs on production software
Companion to the 22nd ACM SIGPLAN conference on Object-oriented programming systems and applications companion
Parseweb: a programmer assistant for reusing open source code on the web
Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering
Recommending adaptive changes for framework evolution
Proceedings of the 30th international conference on Software engineering
Extracting structural information from bug reports
Proceedings of the 2008 international working conference on Mining software repositories
Polyglot: an extensible compiler framework for Java
CC'03 Proceedings of the 12th international conference on Compiler construction
SemDiff: Analysis and recommendation support for API evolution
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
ESEM '09 Proceedings of the 2009 3rd International Symposium on Empirical Software Engineering and Measurement
Capturing the long-term impact of changes
Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering - Volume 2
Learning from 6,000 projects: lightweight cross-project anomaly detection
Proceedings of the 19th international symposium on Software testing and analysis
Refactoring references for library migration
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Non-essential changes in version histories
Proceedings of the 33rd International Conference on Software Engineering
Recommending Adaptive Changes for Framework Evolution
ACM Transactions on Software Engineering and Methodology (TOSEM)
Inferring specifications for resources from natural language API documentation
Automated Software Engineering
Recovering traceability links between an API and its learning resources
Proceedings of the 34th International Conference on Software Engineering
Graph-based pattern-oriented, context-sensitive source code completion
Proceedings of the 34th International Conference on Software Engineering
Temporal analysis of API usage concepts
Proceedings of the 34th International Conference on Software Engineering
GraPacc: a graph-based pattern-oriented, context-sensitive code completion tool
Proceedings of the 34th International Conference on Software Engineering
Characterizing the roles of classes and their fault-proneness through change metrics
Proceedings of the ACM-IEEE international symposium on Empirical software engineering and measurement
Typestate-based semantic code search over partial programs
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Discovering essential code elements in informal documentation
Proceedings of the 2013 International Conference on Software Engineering
Making sense of online code snippets
Proceedings of the 10th Working Conference on Mining Software Repositories
The impact of tangled code changes
Proceedings of the 10th Working Conference on Mining Software Repositories
A statistical semantic language model for source code
Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering
Detecting API documentation errors
Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications
Hi-index | 0.00 |
Software engineering tools often deal with the source code of programs retrieved from the web or source code repositories. Typically, these tools only have access to a subset of a program's source code (one file or a subset of files) which makes it difficult to build a complete and typed intermediate representation (IR). Indeed, for incomplete object-oriented programs, it is not always possible to completely disambiguate the syntactic constructs and to recover the declared type of certain expressions because the declaration of many types and class members are not accessible. We present a framework that performs partial type inference and uses heuristics to recover the declared type of expressions and resolve ambiguities in partial Java programs. Our framework produces a complete and typed IR suitable for further static analysis. We have implemented this framework and used it in an empirical study on four large open source systems which shows that our system recovers most declared types with a low error rate, even when only one class is accessible.