Built from main at 1d902a0 on 2026-11-14

Julia

Recognised by .jl sources and by Pkg's Project.toml (or JuliaProject.toml) naming a package or its dependencies; another file so named declares no language.

CI runs Julia code in three ways, read alike: julia -e 'using Pkg; Pkg.test()', a step whose shell: julia --color=yes {0} runs its script, and the julia-actions, each standing for the julia command it runs (julia-runtest is Pkg.test() with coverage and the depwarn it is given).

tests-run

@test and @testset in test/runtests.jl (or another file under test/), run by Pkg.test(), julia-actions/julia-runtest or julia test/runtests.jl.

coverage

Julia counts lines, the finest it has: julia --code-coverage (julia-runtest's default), Pkg.test(coverage = true), or Coverage.jl processing the .cov files (julia-actions/julia-processcoverage).

platform-matrix

The toolchains are Julia versions: julia-actions/setup-julia's version (1, 1.10, lts, pre, nightly; a version: input counts only under setup-julia's uses:), a matrix key julia-version or julia, a julia: image, or juliaup add.

compiler-warnings

Julia compiles without warnings; Aqua.jl's checks of the package (method ambiguities, stale dependencies, type piracy, undefined exports) stand in: Aqua.test_all(YourPackage) in test/runtests.jl.

warnings-as-errors

Deprecation warnings fail the tests: --depwarn=error on the julia command line, or julia-runtest's depwarn: error.

type-checking

JET.jl checks the package's types when the tests call JET.test_package(YourPackage) (or report_package) and CI runs the tests.

code-formatting

JuliaFormatter: format(".") rewrites, and checks when the script fails on a file it changed (format(".") || exit(1), what julia-actions/julia-format does, or a git diff --exit-code after it); .JuliaFormatter.toml picks a style other than the default. Runic: runic --check . (or fredrikekre/runic-action) checks, runic --inplace . rewrites.

security-scanning

semgrep, which reads Julia; CodeQL and GitLab SAST do not.

committed-artifacts

The coverage files --code-coverage writes beside the sources (*.jl.cov, *.jl.*.cov) and the allocation files of --track-allocation (*.jl.mem).

vcs-ignore

*.jl.cov (or *.jl.*.cov) and *.jl.mem. A package's Manifest.toml is a lock file rather than a build output, left to dependency-management.

Not judged

Julia compiles memory-safe code (hardening, cxx-extensions, ci-build-types); no static analyzer besides Aqua and JET, dependency auditor, function length limiter (lizard does not parse Julia), fuzzer or mutation testing tool the validator knows reads Julia; [compat] entries and a committed Manifest.toml for applications belong to dependency-management, not judged for Julia yet.