Traceur.jl

Performance linting for Julia.

Normal Use

Traceur.@traceMacro
@trace(functioncall(args...), maxdepth=2, modules=[])

Analyse functioncall(args...) for common performance problems and print them to the terminal.

Optional arguments:

  • maxdepth constrols how far Traceur recurses through the call stack.
  • If modules is nonempty, only warnings for methods defined in one of the modules specified will be printed.
source
Traceur.warningsFunction
warnings(f; kwargs...)::Vector{Traceur.Warnings}

Collect all warnings generated by Traceur's analysis of the execution of the no-arg function f and return them.

Possible keyword arguments:

  • maxdepth=typemax(Int) constrols how far Traceur recurses through the call stack.
  • If modules is nonempty, only warnings for methods defined in one of the modules specified will be printed.
source

Tests

Traceur.@checkMacro
@check fun(args...) nowarn=[] except=[] maxdepth=typemax(Int)

Run Traceur on fun, and throw an error if any warnings occur inside functions tagged with @should_not_warn or specified in nowarn.

To throw an error if any warnings occur inside any functions, set nowarn=:all.

To throw an error if any warnings occur inside any functions EXCEPT for a certain set of functions, list the exceptions in the except variable, for example except=[g,h]

source
Traceur.checkFunction
check(f::Function; nowarn=[], except=[], kwargs...)

Run Traceur on f, and throw an error if any warnings occur inside functions tagged with @should_not_warn or specified in nowarn.

To throw an error if any warnings occur inside any functions, set nowarn=:all.

To throw an error if any warnings occur inside any functions EXCEPT for a certain set of functions, list the exceptions in the except variable, for example except=[g,h]

source
Traceur.@should_not_warnMacro
@should_not_warn function foo(x)
  ...
end

Add foo to the list of functions in which no warnings may occur (checkd by @check).

source