Альтернативы parse и eval для проверки синтаксической корректности для Julia v 1.1 - PullRequest
1 голос
/ 16 июня 2019

Джулия вводится динамически, и некоторые ошибки возникают только во время выполнения.

Например:

julia> function foo()
       a
       5
       end
foo (generic function with 1 method)

julia> foo()
ERROR: UndefVarError: a not defined
Stacktrace:
 [1] foo() at ./REPL[1]:2
 [2] top-level scope at none:0

julia>

То же поведение, используя parse в сочетании с eval:

julia> eval(Meta.parse("function foo()
       a
       5
       end"))
foo (generic function with 1 method)

Однако при выполнении этого выдается ошибка:

julia> foo()
ERROR: UndefVarError: a not defined
Stacktrace:
 [1] foo() at ./none:2
 [2] top-level scope at none:0

Существуют ли какие-либо стандартные средства для проверки на наличие ошибок такого рода? Или существуют какие-нибудь подходящие пакеты для этой задачи?

1 Ответ

1 голос
/ 16 июня 2019

Расширение VS Code Julia имеет встроенный линтер , который может обнаруживать использование неопределенных переменных, как в вашем примере.

Существует также этот линтер, Lint.jl , хотя я не уверен, актуальна ли она для Julia v1.x.

...