blob: 6860a383c56698026d153bf2201863bf31836197 (
plain) (
tree)
|
|
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="">
<meta name="author" content="Loïc Hoguin based on a design from (Soft10) Pol Cámara">
<title>Nine Nines: Code coverage</title>
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,700,400italic' rel='stylesheet' type='text/css'>
<link href="/css/99s.css?r=4" rel="stylesheet">
<link rel="shortcut icon" href="/img/ico/favicon.ico">
<link rel="apple-touch-icon-precomposed" sizes="114x114" href="/img/ico/apple-touch-icon-114.png">
<link rel="apple-touch-icon-precomposed" sizes="72x72" href="/img/ico/apple-touch-icon-72.png">
<link rel="apple-touch-icon-precomposed" href="/img/ico/apple-touch-icon-57.png">
</head>
<body class="">
<header id="page-head">
<div id="topbar" class="container">
<div class="row">
<div class="span2">
<h1 id="logo"><a href="/" title="99s">99s</a></h1>
</div>
<div class="span10">
<div id="side-header">
<nav>
<ul>
<li><a title="Hear my thoughts" href="/articles">Articles</a></li>
<li><a title="Watch my talks" href="/talks">Talks</a></li>
<li class="active"><a title="Read the docs" href="/docs">Documentation</a></li>
<li><a title="Request my services" href="/services">Consulting & Training</a></li>
</ul>
</nav>
<ul id="social">
<li>
<a href="https://github.com/ninenines" title="Check my Github repositories"><img src="/img/ico_github.png" data-hover="/img/ico_github_alt.png" alt="Github"></a>
</li>
<li>
<a title="Contact me" href="mailto:[email protected]"><img src="/img/ico_mail.png" data-hover="/img/ico_mail_alt.png"></a>
</li>
</ul>
</div>
</div>
</div>
</div>
</header>
<div id="contents" class="two_col">
<div class="container">
<div class="row">
<div id="docs" class="span9 maincol">
<h1 class="lined-header"><span>Code coverage</span></h1>
<p>Erlang.mk provides support for code coverage via the tool <code>cover</code> that comes with Erlang/OTP. Code coverage lets you see what parts of your code are covered by the tests.</p>
<h2 id="_enabling_cover_when_running_tests">Enabling cover when running tests</h2>
<p>To run tests with code coverage enabled, simply define <code>COVER=1</code> either on the command line or in your Makefile:</p>
<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.8
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
<pre><tt>$ make tests <font color="#009900">COVER</font><font color="#990000">=</font><font color="#993399">1</font></tt></pre>
</div></div>
<p>When running the targets <code>tests</code> or <code>check</code> the code coverage report will be built automatically. This is not the case for test framework specific targets, however. In those cases you can generate the reports manually:</p>
<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.8
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
<pre><tt>$ make eunit proper <font color="#009900">COVER</font><font color="#990000">=</font><font color="#993399">1</font>
$ make cover-report</tt></pre>
</div></div>
<p>Note that Common Test has some support for <code>cover</code> built-in and that it will generate code coverage reports in the Common Test logs regardless. The report that Erlang.mk generates is however common to all test frameworks and might be more useful.</p>
<h2 id="_adding_applications_to_the_cover_report">Adding applications to the cover report</h2>
<p>By default Erlang.mk will include all the applications in the code coverage report, except external dependencies.</p>
<p>To include some dependencies in the report, you can define the <code>COVER_DEPS</code> variable:</p>
<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.8
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
<pre><tt><font color="#009900">COVER_DEPS =</font> cowlib</tt></pre>
</div></div>
<p>When using multi application repositories you can exclude some applications by defining the <code>COVER_APPS</code> variable:</p>
<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.8
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
<pre><tt><font color="#009900">COVER_APPS =</font> presence backend</tt></pre>
</div></div>
<h2 id="_configuring_paths">Configuring paths</h2>
<p>By default Erlang.mk will store <em>coverdata</em> files and code coverage reports under the <em>cover/</em> directory. The variables <code>COVER_DATA_DIR</code> and <code>COVER_REPORT_DIR</code> can be set to use a different location.</p>
<h2 id="_merging_coverdata_files">Merging coverdata files</h2>
<p>The target <code>all.coverdata</code> will take all existing <em>coverdata</em> files and merge them into one:</p>
<div class="listingblock"><div class="content"><!-- Generator: GNU source-highlight 3.1.8
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
<pre><tt>$ make all<font color="#990000">.</font>coverdata</tt></pre>
</div></div>
<nav style="margin:1em 0">
<a style="float:left" href="https://ninenines.eu/docs/en/erlang.mk/1/guide/triq/">
Triq
</a>
<a style="float:right" href="https://ninenines.eu/docs/en/erlang.mk/1/guide/ci/">
Continuous integration
</a>
</nav>
</div>
<div class="span3 sidecol">
<h3>
Erlang.mk
1
User Guide
</h3>
<ul>
</ul>
<h4 id="docs-nav">Navigation</h4>
<h4>Version select</h4>
<ul>
<li><a href="/docs/en/erlang.mk/1/guide">1</a></li>
</ul>
<h3 id="_like_my_work__donate">Like my work? Donate!</h3>
<p>Donate to Loïc Hoguin because his work on Cowboy, Ranch, Gun and Erlang.mk is fantastic:</p>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" style="display:inline">
<input type="hidden" name="cmd" value="_donations">
<input type="hidden" name="business" value="[email protected]">
<input type="hidden" name="lc" value="FR">
<input type="hidden" name="item_name" value="Loic Hoguin">
<input type="hidden" name="item_number" value="99s">
<input type="hidden" name="currency_code" value="EUR">
<input type="hidden" name="bn" value="PP-DonationsBF:btn_donate_LG.gif:NonHosted">
<input type="image" src="https://www.paypalobjects.com/en_US/i/btn/btn_donate_LG.gif" border="0" name="submit" alt="PayPal - The safer, easier way to pay online!">
<img alt="" border="0" src="https://www.paypalobjects.com/fr_FR/i/scr/pixel.gif" width="1" height="1">
</form><p>Recurring payment options are also available via <a href="https://salt.bountysource.com/teams/ninenines">BountySource</a>. These funds are used to cover the recurring expenses like dedicated servers or domain names.</p>
</div>
</div>
</div>
</div>
<footer>
<div class="container">
<div class="row">
<div class="span6">
<p id="scroll-top"><a href="#">↑ Scroll to top</a></p>
<nav>
<ul>
<li><a href="mailto:[email protected]" title="Contact us">Contact us</a></li><li><a href="https://github.com/ninenines/ninenines.github.io" title="Github repository">Contribute to this site</a></li>
</ul>
</nav>
</div>
<div class="span6 credits">
<p><img src="/img/footer_logo.png"></p>
<p>Copyright © Loïc Hoguin 2012-2018</p>
</div>
</div>
</div>
</footer>
<script src="/js/custom.js"></script>
</body>
</html>
|