%0 Journal Article %J Software: Practice and Experience %D 2010 %T Serializing C intermediate representations for efficient and portable parsing %A Meister,Jeffrey A %A Foster, Jeffrey S. %A Hicks, Michael W. %K C %K intermediate representations %K parsing %K static analysis %K XDR %K XML %X C static analysis tools often use intermediate representations (IRs) that organize program data in a simple, well-structured manner. However, the C parsers that create IRs are slow, and because they are difficult to write, only a few implementations exist, limiting the languages in which a C static analysis can be written. To solve these problems, we investigate two language-independent, on-disk representations of C IRs: one using XML and the other using an Internet standard binary encoding called eXternal Data Representation (XDR). We benchmark the parsing speeds of both options, finding the XML to be about a factor of 2 slower than parsing C and the XDR over 6 times faster. Furthermore, we show that the XML files are far too large at 19 times the size of C source code, whereas XDR is only 2.2 times the C size. We also demonstrate the portability of our XDR system by presenting a C source code querying tool in Ruby. Our solution and the insights we gained from building it will be useful to analysis authors and other clients of C IRs. We have made our software freely available for download at http://www.cs.umd.edu/projects/PL/scil/. Copyright © 2010 John Wiley&Sons, Ltd. %B Software: Practice and Experience %V 40 %P 225 - 238 %8 2010/03/01/ %@ 1097-024X %G eng %U http://onlinelibrary.wiley.com/doi/10.1002/spe.954/abstract %N 3 %R 10.1002/spe.954 %0 Conference Paper %B Proceedings of the 7th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering %D 2007 %T Improving software quality with static analysis %A Foster, Jeffrey S. %A Hicks, Michael W. %A Pugh, William %K bug patterns %K bugs %K C %K Data races %K FFIs %K java %K modularity %K network protocols %K Software quality %X At the University of Maryland, we have been working to improve the reliability and security of software by developing new, effective static analysis tools. These tools scan software for bug patterns or show that the software is free from a particular class of defects. There are two themes common to our different projects: 1. Our ultimate focus is on utility: can a programmer actually improve the quality of his or her software using an analysis tool? The important first step toward answering this question is to engineer tools so that they can analyze existing, nontrivial programs, and to carefully report the results of such analyses experimentally. The desire to better understand a more human-centered notion of utility underlies much of our future work. 2. We release all of our tools open source. This allows other researchers to verify our results, and to reuse some or all of our implementations, which often required significant effort to engineer. We believe that releasing source code is important for accelerating the pace of research results software quality, and just as importantly allows feedback from the wider community. In this research group presentation, we summarize some recent work and sketch future directions. %B Proceedings of the 7th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering %S PASTE '07 %I ACM %C New York, NY, USA %P 83 - 84 %8 2007/// %@ 978-1-59593-595-3 %G eng %U http://doi.acm.org/10.1145/1251535.1251549 %R 10.1145/1251535.1251549