# Local GUI coverage

**URL:** <https://discourse.julialang.org/t/local-gui-coverage/6842>\
**Category:** General Usage\
**Tags:** question, testing\
**Created:** [November 2, 2017, 9:25am UTC](https://discourse.julialang.org/t/local-gui-coverage/6842 "2017-11-02T09:25:02Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![yakir12](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/yakir12/32/297_2.png) [@yakir12](https://discourse.julialang.org/u/yakir12)\
**Post date:** [November 2, 2017, 9:25am UTC](https://discourse.julialang.org/t/local-gui-coverage/6842/1 "2017-11-02T09:25:02Z")

</div>

Is there any _simple_ way I can get nice coverage reports, with calls per line, **locally**? What do you guys use?

The process outlined in [Coverage.jl](https://github.com/JuliaCI/Coverage.jl#working-locally) is a bit convoluted. I’m basically looking for a local version of `coveralls.io` or `codecov.io`:

1. edit my code
2. run the tests
3. see the report

All spoon-fed like…

---

<div class="post-metadata">

**Author:** ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)\
**Post date:** [November 2, 2017, 9:35am UTC](https://discourse.julialang.org/t/local-gui-coverage/6842/2 "2017-11-02T09:35:01Z")

</div>

```julia
Pkg.test(...; coverage = true)

```

will place the statistics near the files.

---

<div class="post-metadata">

**Author:** ![yakir12](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/yakir12/32/297_2.png) [@yakir12](https://discourse.julialang.org/u/yakir12)\
**Post date:** [November 2, 2017, 9:46am UTC](https://discourse.julialang.org/t/local-gui-coverage/6842/3 "2017-11-02T09:46:07Z")

</div>

Thanks @Tamas_Papp, it’s just that with the visual overview that I get from `coveralls.io` and `codecov.io` it’s a lot easier to see what hasn’t been tested and where. I know I can look for all the zeros in the output files from

```julia
Pkg.test(...; coverage = true)

```

but… Here’s a great explanation:

I want what [ProfileView.jl](https://github.com/timholy/ProfileView.jl) does for [profiling](https://docs.julialang.org/en/latest/stdlib/profile/), but for coverage.

---

<div class="post-metadata">

**Author:** ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)\
**Post date:** [November 2, 2017, 9:47am UTC](https://discourse.julialang.org/t/local-gui-coverage/6842/4 "2017-11-02T09:47:59Z")

</div>

> [@yakir12](#):
>
> I want what ProfileView.jl does for profiling, but for coverage.

I understand, but AFAICT someone has yet to code this.

---

<div class="post-metadata">

**Author:** ![yakir12](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/yakir12/32/297_2.png) [@yakir12](https://discourse.julialang.org/u/yakir12)\
**Post date:** [November 2, 2017, 9:49am UTC](https://discourse.julialang.org/t/local-gui-coverage/6842/5 "2017-11-02T09:49:35Z")

</div>

Yap, thanks.

---

<div class="post-metadata">

**Author:** ![rdeits](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/rdeits/32/286_2.png) [@rdeits](https://discourse.julialang.org/u/rdeits)\
**Post date:** [November 2, 2017, 4:49pm UTC](https://discourse.julialang.org/t/local-gui-coverage/6842/6 "2017-11-02T16:49:01Z")

</div>

For Python, I’ve used the HTML output of coverage.py: [Coverage.py — Coverage.py 6.4.4 documentation](http://coverage.readthedocs.io/en/latest/)

I wonder if that renderer could be adapted to work with Julia code…

---

<div class="post-metadata">

**Author:** ![Tamas\_Papp](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tamas_papp/32/25949_2.png) [@Tamas\_Papp](https://discourse.julialang.org/u/Tamas_Papp)\
**Post date:** [March 8, 2018, 3:13pm UTC](https://discourse.julialang.org/t/local-gui-coverage/6842/7 "2018-03-08T15:13:08Z")

</div>

I collected a set of trivial scripts I have been using for this purpose into

> **[GitHub - JuliaCI/LocalCoverage.jl: Trivial functions for working with coverage for...](https://github.com/JuliaCI/LocalCoverage.jl)**
>
> Trivial functions for working with coverage for packages locally.

### Usage:

```julia
using LocalCoverage
generate_coverage(pkg) # generate coverage information
open_coverage(pkg) # open in a browser
clean_coverage(pkg) # cleanup

```

Testing, comments, issues welcome.

---

<div class="post-metadata">

**Author:** ![yakir12](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/yakir12/32/297_2.png) [@yakir12](https://discourse.julialang.org/u/yakir12)\
**Post date:** [March 8, 2018, 10:15pm UTC](https://discourse.julialang.org/t/local-gui-coverage/6842/8 "2018-03-08T22:15:07Z")

</div>

Super cool. 💯

---

<div class="post-metadata">

**Author:** ![johanter](https://avatars.discourse-cdn.com/v4/letter/j/8e7dd6/32.png) [@johanter](https://discourse.julialang.org/u/johanter)\
**Post date:** [September 21, 2020, 1:23pm UTC](https://discourse.julialang.org/t/local-gui-coverage/6842/9 "2020-09-21T13:23:28Z")

</div>

If you are using visual studio code, try the coverage-gutters extention [https://github.com/ryanluker/vscode-coverage-gutters](https://github.com/ryanluker/vscode-coverage-gutters).  
You can generate the `lcov.info` locally with Covarage.jl

```julia
using Coverage
coverage = process_folder()
LCOV.writefile("lcov.info", coverage) 

```

---

<div class="post-metadata">

**Author:** ![Chi\_Chen](https://avatars.discourse-cdn.com/v4/letter/c/e68b1a/32.png) [@Chi\_Chen](https://discourse.julialang.org/u/Chi_Chen)\
**Post date:** [September 13, 2021, 11:37pm UTC](https://discourse.julialang.org/t/local-gui-coverage/6842/10 "2021-09-13T23:37:53Z")

</div>

LocalCoverage.jl is for package. Is it also useful for the unit tests of Julia itself?
