Abstract—Quality assessment of open source software isan important and active research area. One of the reasons for this permanent interest is a consequence of Internet popularity. Nowadays, programming involves looking within a large set of open source libraries and tools that may be reused when developing our software applications. In order to reuse such open source software artifacts, programmers not only need the guarantee that the reused artifact is certified, but also that independently developed artifacts can be easily combined into acoherent piece of software. In this paper we describe a domain specific language that allows programmers to describe in an abstract level how software artifacts can be combined into powerful software certification reports. This domain specific language is an important system of a web-based, open-source software certification portal. This paper introduces the embedding of such a domain specific language as a combinator library. Index Terms—Process management, combinators, attribute grammars, functional programming. I. INTRODUCTION The advent of the Internet is changing our lives. Not only is it changing the way we live, but also the way we develop our software. While in the last century building software applications was mainly supported by programming languages and their libraries, which provided the necessary support to build software applications, nowadays, the way we develop has changed: programming languages still offer supporting libraries, but there are many more resources available in the internet. These wide set of resources can be other powerful off-the-shelf reusable libraries and tools, usually available as Open Source Software (OSS). This fact influence the way we program since developing a particular software tool/library may be, in most cases, a matter of looking for the right (open source) software/libraries solutions already available. Indeed, the Internet encourages sharing our software. This new style of developing software, however, needs to handle three important issues: 1) Firstly, because there is so much OSS available in the Internetit is difficult to select the right tool/library. Thus, we need anappropriate framework to support the analysis of the available alternatives. Manuscript received November 4, 2012; revised January 31, 2013. This work is funded by the ERDF through the Programme COMPETE and by the Portuguese Govern- ment through FCT - Foundation for Science and Technology, project ref. PTDC/EIA-CCO/108995/2008. Pedro Martins and João Saraiva are with the HASLab / INESC TEC, Universidade do Minho, Portugal (e-mail: prmartins@di.uminho.pt, jas@di.uminho.pt). João P. Fernandes is with HASLab / INESC TEC, Universidade do Minho, Portugal (e-mail: jpaulo@di.uminho.pt), and he is also with Universidade da Beira Interior (e-mail: jpf@di.ubi.pt). 2) Secondly, because we may reuse different software artifacts, developed in different contexts, we need to integrate them into acoherent piece of software. 3) Thirdly, because we are reusing OSS, we may need to guarantee that it satisfies certain properties before reusing it. For example,when developing software that handles credit card information we mayneed the guarantee that a piece of software to be reused conforms tospecific security guarantees. On a different context, if weare developing software for embedded systems, we may need toguarantee that a reused library implements optimal memory management. In the past, we have presented a web portal for the analysis and certification of Open Source Software (CROSS) that aims at improving on these three issues [1]. The portal works as a repository for tools that certifies source code. By the certification of a piece of software we understand the process of analyzing its source code while producing an information report about it. In this paper we continue on developing this heterogeneous and distributed analysis system, focusing on the creation of reports. On a web portal that manages software analysis by applying a sequence of pre-chosen, individual and self-contained tools, managing their results implies dealing with a huge amount of heterogeneous information, both in their type and context. For example, the result of tool A can be HTML code, while the result of tool Bcan is tabular data in the form of comma-separated values (CSV). And while these are plain text, they have different contexts and meanings and should, therefore, be managed differently. Furthermore, other tools can produce Scalable Vector Graphics (SVG), showing dependency graphs, or simply JPEG or PNG figures with statistics information. This document is organized as follows: in Section II we provide an overview of the motivation and potential challenges this work faces. In Section III we introduce our combinator language together with small examples of its usage. In Section IV we present works that relate to ours, and in Section VI we conclude. II. MOTIVATION The techniques for analyzing source code to produce in the context of our web portal for the analysis and certification of Open Source Software (CROSS) [1], should, either individually or combined with others, result in the production of reports called Certifications. Certifications are often composed by smaller units that are capable of communicating with each other in order to achieve a state where the overall mechanics of each unit and the flow of information among them is capable of producing quantifiable results. In the remaining of this paper, we will address ourselves to these smaller units that contribute to a general A Combinator Language for Software Quality Reports Pedro Martins, João P. Fernandes, and João Saraiva International Journal of Computer and Communication Engineering, Vol. 2, No. 3, May 2013 377 DOI: 10.7763/IJCCE.2013.V2.208