Comments (6)
I think it should be pretty strait-forward to come up with a test case for most of the uncovered lines. Most functions are helper functions for either the subtyping relation, for type_check_expr (type inference/propagation) or for type_check_expr_in (typechecking against a known type). Basically every erlang expression can exist in a context where we expect a certain type (e.g. a function with a spec) and in a context where we don't.
If some code is really hard to understand why it is there, perhaps it shouldn't be there or it needs some renaming or explanation in comments. Post a comment on any part of the code and I'll be happy to try to answer.
from gradualizer.
SWEET! That's super useful @zuiderkwast!
For posterity I just want to say that the coverage report can be found in cover/index.html
after running make tests COVER=1
.
from gradualizer.
It is possible to generet a code coverage report with make tests COVER=1
if I remember correctly. (I implemented that in erlang.mk some years ago.)
from gradualizer.
How do I know what tests need to be written? It's tricky to look at the coverage report and figure out what will cause flow to reach each branch. Is it a better idea to pick a big corpus of code and type check that and then minimize each failing case?
from gradualizer.
make tests COVER=1
doesn't do anything since a long time. For a while, rebar3 cover
was making the pretty html files, but now after the strong cut away from rebar, make cover
produces only the coverage.xml
file, which is not very human readable.
rebar3 do eunit -c, cover
works for now, and the files this generates are correctly gitignored.
from gradualizer.
I think there are plain text cover files generated under cover/
. If you need the html files, we can just add an option to generate them in the Makefile. Also, if you don't want to download the covertool to generate the xml file, we can make that a separate target, so that make cover
only produces the html and/or text files.
from gradualizer.
Related Issues (20)
- Crash with `Uncaught error: {case_clause, ..` in `typechecker:do_type_check_expr/2`
- Crash with Uncaught error: {badkey, ...} HOT 1
- No clause for gradualizer_lib:pick_value(module()) HOT 2
- No clause of gradualizer_lib:pick_value(any()) HOT 2
- Support the new dynamic() type
- `ok bsr ok` crashes erl_eval:do_apply/7 HOT 4
- An invalid utf32 value can crash eval_bits:eval_exp_field/6
- Crash in gradualizer_fmt:format_type_error: no function_clause_matching
- Crash in typechecker:do_type_check_expr_in/3: bad_key in map_get/2
- Invalid polymorphic code accepted HOT 2
- Support old-style 'catch' keyword HOT 5
- Wrong type in receive...after Timeout
- `binary_to_atom/1` breaks compatibility below OTP 23 HOT 4
- Solving local constraints at each function call to a polymorphic function HOT 6
- support for OTP 26 map comprehensions
- Wrong type location reported?
- Gradualizer can't tell that `m` and `f` don't exist in `erlang:apply(m, f, [some, args])` HOT 2
- Exhaustivity checking issue
- Type representation HOT 2
- How to mention Gradualizer in a paper? HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gradualizer.