喵ID:Xy4Lri免责声明

Analyzing Source Code Across Static Conditionals

跨静态条件分析源代码

基本信息

DOI:
--
发表时间:
2015
期刊:
影响因子:
--
通讯作者:
Paul Gazzillo
中科院分区:
文献类型:
--
作者: Paul Gazzillo研究方向: -- MeSH主题词: --
关键词: --
来源链接:pubmed详情页地址

文献摘要

We need better tools for C, such as source browsers, bug finders, and automated refactorings. The problem is that large C systems such as Linux are software product lines, containing thousands of configuration variables controlling every aspect of the software from architecture features to file systems and drivers. The challenge of such configurability is how do software tools accurately analyze all configurations of the source without the exponential explosion of trying them all separately. To this end, we focus on two key subproblems, parsing and the build system. The contributions of this thesis are the following: (1) a configuration-preserving preprocessor and parser called SuperC that preserves configurations in its output syntax tree; (2) a configuration-preserving Makefile evaluator called Kmax that collects Linux’s compilation units and their configurations; and (3) a framework for configuration-aware analyses of source code using these tools. C tools need to process two languages: C itself and the preprocessor. The latter improves expressivity through file includes, macros, and static conditionals. But it operates only on tokens, making it hard to even parse both languages. SuperC is a complete, performant solution to parsing all of C. First, a configuration-preserving preprocessor resolves includes and macros yet leaves static conditionals intact, thus preserving a program’s variability. To ensure completeness, we analyze all interactions between preprocessor features and identify techniques for correctly handling them. Second, a configurationpreserving parser generates a well-formed AST with static choice nodes for conditionals. It forks new subparsers when encountering static conditionals and merges them again after the conditionals. To ensure performance, we present a simple algorithm for table-driven Fork-Merge LR parsing and four novel optimizations. We demonstrate SuperC’s effectiveness on the x86 Linux kernel. Large-scale C codebases like Linux are software product families, with complex build systems that
我们需要更好的C工具,例如源浏览器,错误查找器和自动重构。系统和驱动程序的挑战是软件工具如何准确分析源的所有配置全部。我们将重点放在两个关键的子问题上,解析和构建系统。 (2)一个称为Kmax的配置贴合型评估者,它收集Linux的汇编单元及其配置;(3)使用这些工具对源代码进行配置的框架。 C需要处理两种语言:C本身和后者通过文件改善了表达性,包括宏和静态条件。解析所有C的解决方案,首先,配置预处理的解决方案包括和宏包括静态条件,从而保留了程序的可变性完整性,我们分析了预处理功能之间的所有交互,并确定正确处理它们的技术,配置PRESERAVERVING PRESERVING PARSER生成了一个良好的AST,并在遇到静态条件的情况下静态选择。为了确保性能,我们提出了一种简单的算法,用于桌子驱动的叉车LR解析和四个新颖的​​优化Superc对X86 Linux内核的有效性。
参考文献(2)
被引文献(0)
A Classification and Survey of Analysis Strategies for Software Product Lines
DOI:
10.1145/2580950
发表时间:
2014-07-01
期刊:
ACM COMPUTING SURVEYS
影响因子:
16.6
作者:
Thuem, Thomas;Apel, Sven;Saake, Gunter
通讯作者:
Saake, Gunter
Scalable analysis of variable software
DOI:
10.1145/2491411.2491437
发表时间:
2013-08
期刊:
影响因子:
0
作者:
Jörg Liebig;Alexander von Rhein;Christian Kästner;S. Apel;Jens Dörre;C. Lengauer
通讯作者:
Jörg Liebig;Alexander von Rhein;Christian Kästner;S. Apel;Jens Dörre;C. Lengauer

数据更新时间:{{ references.updateTime }}

Paul Gazzillo
通讯地址:
--
所属机构:
--
电子邮件地址:
--
免责声明免责声明
1、猫眼课题宝专注于为科研工作者提供省时、高效的文献资源检索和预览服务;
2、网站中的文献信息均来自公开、合规、透明的互联网文献查询网站,可以通过页面中的“来源链接”跳转数据网站。
3、在猫眼课题宝点击“求助全文”按钮,发布文献应助需求时求助者需要支付50喵币作为应助成功后的答谢给应助者,发送到用助者账户中。若文献求助失败支付的50喵币将退还至求助者账户中。所支付的喵币仅作为答谢,而不是作为文献的“购买”费用,平台也不从中收取任何费用,
4、特别提醒用户通过求助获得的文献原文仅用户个人学习使用,不得用于商业用途,否则一切风险由用户本人承担;
5、本平台尊重知识产权,如果权利所有者认为平台内容侵犯了其合法权益,可以通过本平台提供的版权投诉渠道提出投诉。一经核实,我们将立即采取措施删除/下架/断链等措施。
我已知晓