Coast was much too slow and ineffiecient, especially for large modules. Also, it was discovered that Coast in some cases returned erroneous values.
Consequently, Coast has been discontinued and is replaced with a new tool Cover with similar interface and functionality. Refer to the Tools User's Guide and Reference Manual for more information about Cover.
xref:m/1
and xref:d/1
return a
list of undefined functions in case the BEAM files do not contain debug
information.
xref
represents unresolved calls with calls where the
module, the function or the number of arguments are atoms and integers
that are unlikely to occur in an Erlang system. Calls to
erlang:apply/2
and the like are included among the
external calls. This is in contrast to R7 where calls to
apply
and spawn
were used for representing
unresolved calls.
verbose
has been
changed from true
to false
. The function
xm/1
, which cross reference checks a module by calling
xref:m/1
, has been added to the c
module.
exref
has now been removed,
use the new tool xref
instead.
xref:m/1
and xref:d/1
return
a list of undefined functions in case the BEAM files do not
contain debug information.
See Tools 1.6.
xref:m/1
has been changed to accept a filename.locals_not_called
and xref:m/1
could sometimes miss unused local
functions.code_path
did
not force the setting up of data..beam
typically).'$F_EXPR'
is "called".xref_compiler:format_error/1
has been improved.'MNEMOSYNE RULE'
et al removed.
m/1
and d/1
return a list that always
contains two elements.xref_parser:t2s/1
adds quotes to atoms that need
them.make:all()
no longer unnecessarily recompiles modules located in other directories than the current working directory.receive
that accepted any term. The receive
has now been restricted to accept only the correct replies and not accidently a message from some other process.coast:compile_all/1,2
now returns the correct return value {error,Reason}
if the directory given as argument does not exist or cannot be read.instrument:memory_data/0
returned invalid information if an address or size exceeded 2^27. instrument:store_memory_data
did not have that problem.make:all()
now recompiles modules where an include file has been modified.trace
BIF and format of trace messages were changed.instrument
module now contains an additional field, which represents the process which allocated a block.The module dbg is moved to the Runtime tools application
cover
two or more processes, running the same code, may in rare situations give rise to race conditions when updating the ETS table used.cover
counts the number of executed statements, instead of the number of function calls. (This problem is solved by using coast
instead!)cover
doesn't store the accumulated data persistently.run
function call will, if the call to the Coast-compiled module fails, return an exit signal instead of the tuple {'EXIT', Reason}.cover
two or more processes, running the same code, may in rare situations give rise to race conditions when updating the ETS table used. cover
counts the number of executed statements, instead of the number of function calls. (This problem is solved by using coast
instead!)cover
doesn't store the accumulated data persistently. There is a new document module creating Emacs TAGS files, tags
.
exref:delete_module/1
now works properly.exref
no longer have problems with guards (such as record
and atom
) in list comprehension (LC) expressions.exref
no longer mixes up modules.exref
no longer changes the working directory.exref
now handles internal functions correctly under certain conditions.auto
option, exref no longer enters an infinite loop.exref:module
no longer accepts modules specified as strings, so the implementation now agrees with the documentation.cover
counts the number of executed statements, instead of the number of function calls. (This problem is solved by using coast
instead!)cover
doesn't store the accumulated data persistently. $
confuses indentation mechanism.make:all
now works withoout a Emakefile
.exref
now know about the language construct query
.exref:delete_module/1
does not work properly, so subesquent calls to exref:analyse
will give incorrect results.filename:find_src/1
instead of the obsolete file_util
module.Options
in file/2
in a correct way (OTP-1074).