Description
The arguments passed to calls to Rust macros format and print are not recognized as a DataFlow::Node.
Reproduction steps
CodeQL CLI version
It is set locally via gh codeql set-local-version 2.25.6.
$ gh codeql set-local-version 2.25.6
CodeQL command-line toolchain release 2.25.6.
Copyright (C) 2019-2026 GitHub, Inc.
Unpacked in: /Users/{username}/.local/share/gh/extensions/gh-codeql/dist/release/v2.25.6
Analysis results depend critically on separately distributed query and
extractor modules. To list modules that are visible to the toolchain,
use 'codeql resolve packs' and 'codeql resolve languages'.
$ codeql --version
CodeQL command-line toolchain release 2.25.6.
Copyright (C) 2019-2026 GitHub, Inc.
Unpacked in: /Users/{username}/.local/share/gh/extensions/gh-codeql/dist/release/v2.25.6
Analysis results depend critically on separately distributed query and
extractor modules. To list modules that are visible to the toolchain,
use 'codeql resolve packs' and 'codeql resolve languages'.
Target code
This is in a file named /path/to/project/src/main.rs.
fn main() {
let x = 1;
let string = format!("{}", &x);
let string2 = &string;
println!("{}", &string2);
}
Test code
This is in a file named /path/to/project/ql/identify-dataflow-nodes.ql.
import rust
import codeql.rust.dataflow.DataFlow
from DataFlow::Node node
select node, node.asExpr().getAPrimaryQlClass(), node.getLocation()
Database creation log
Make a database named rust-format-data-flow-db at /path/to/project.
$ codeql database create --language=rust rust-format-data-flow-db --overwrite
Initializing database at /path/to/project/rust-format-data-flow-db.
Running build command: []
Running command in /path/to/project: [/Users/{username}/.local/share/gh/extensions/gh-codeql/dist/release/v2.25.6/rust/tools/autobuild.sh]
[2026-07-28 11:41:36] [build-stderr] Scanning for files in /path/to/project...
[2026-07-28 11:41:36] [build-stderr] /path/to/project/rust-format-data-flow-db: Indexing files in in /path/to/project...
[2026-07-28 11:41:36] [build-stderr] Running command in /path/to/project: [/Users/{username}/.local/share/gh/extensions/gh-codeql/dist/release/v2.25.6/rust/tools/index-files.sh, /path/to/project/rust-format-data-flow-db/working/files-to-index12188386520088816605.list]
[2026-07-28 11:41:36] [build-stdout] [2026-07-28 11:41:36] [build-stdout] INFO configuration: {
[2026-07-28 11:41:36] [build-stdout] [2026-07-28 11:41:36] [build-stdout] scratch_dir: "/path/to/project/rust-format-data-flow-db/working",
[2026-07-28 11:41:36] [build-stdout] [2026-07-28 11:41:36] [build-stdout] trap_dir: "/path/to/project/rust-format-data-flow-db/trap/rust",
[2026-07-28 11:41:36] [build-stdout] [2026-07-28 11:41:36] [build-stdout] source_archive_dir: "/path/to/project/rust-format-data-flow-db/src",
[2026-07-28 11:41:36] [build-stdout] [2026-07-28 11:41:36] [build-stdout] diagnostic_dir: "/path/to/project/rust-format-data-flow-db/diagnostic/extractors/rust",
[2026-07-28 11:41:36] [build-stdout] [2026-07-28 11:41:36] [build-stdout] cargo_target_dir: None,
[2026-07-28 11:41:36] [build-stdout] [2026-07-28 11:41:36] [build-stdout] cargo_target: None,
[2026-07-28 11:41:36] [build-stdout] [2026-07-28 11:41:36] [build-stdout] cargo_features: [],
[2026-07-28 11:41:36] [build-stdout] [2026-07-28 11:41:36] [build-stdout] cargo_cfg_overrides: [],
[2026-07-28 11:41:36] [build-stdout] [2026-07-28 11:41:36] [build-stdout] cargo_extra_env: {},
[2026-07-28 11:41:36] [build-stdout] [2026-07-28 11:41:36] [build-stdout] cargo_extra_args: [],
[2026-07-28 11:41:36] [build-stdout] [2026-07-28 11:41:36] [build-stdout] cargo_all_targets: false,
[2026-07-28 11:41:36] [build-stdout] [2026-07-28 11:41:36] [build-stdout] logging_flamegraph: None,
[2026-07-28 11:41:36] [build-stdout] [2026-07-28 11:41:36] [build-stdout] logging_verbosity: Some(
[2026-07-28 11:41:36] [build-stdout] [2026-07-28 11:41:36] [build-stdout] "progress",
[2026-07-28 11:41:36] [build-stdout] [2026-07-28 11:41:36] [build-stdout] ),
[2026-07-28 11:41:36] [build-stdout] [2026-07-28 11:41:36] [build-stdout] trap_compression: None,
[2026-07-28 11:41:36] [build-stdout] [2026-07-28 11:41:36] [build-stdout] number of inputs: 1,
[2026-07-28 11:41:36] [build-stdout] [2026-07-28 11:41:36] [build-stdout] qltest: false,
[2026-07-28 11:41:36] [build-stdout] [2026-07-28 11:41:36] [build-stdout] qltest_cargo_check: false,
[2026-07-28 11:41:36] [build-stdout] [2026-07-28 11:41:36] [build-stdout] qltest_dependencies: [],
[2026-07-28 11:41:36] [build-stdout] [2026-07-28 11:41:36] [build-stdout] qltest_use_nightly: false,
[2026-07-28 11:41:36] [build-stdout] [2026-07-28 11:41:36] [build-stdout] sysroot: None,
[2026-07-28 11:41:36] [build-stdout] [2026-07-28 11:41:36] [build-stdout] sysroot_src: None,
[2026-07-28 11:41:36] [build-stdout] [2026-07-28 11:41:36] [build-stdout] rustc_src: None,
[2026-07-28 11:41:36] [build-stdout] [2026-07-28 11:41:36] [build-stdout] build_script_command: [],
[2026-07-28 11:41:36] [build-stdout] [2026-07-28 11:41:36] [build-stdout] extra_includes: [],
[2026-07-28 11:41:36] [build-stdout] [2026-07-28 11:41:36] [build-stdout] proc_macro_server: None,
[2026-07-28 11:41:36] [build-stdout] [2026-07-28 11:41:36] [build-stdout] extract_dependencies_as_source: false,
[2026-07-28 11:41:36] [build-stdout] [2026-07-28 11:41:36] [build-stdout] force_library_mode: false,
[2026-07-28 11:41:36] [build-stdout] [2026-07-28 11:41:36] [build-stdout] }
[2026-07-28 11:41:36] [build-stdout] [2026-07-28 11:41:36] [build-stdout] INFO found manifests:
[2026-07-28 11:41:36] [build-stdout] [2026-07-28 11:41:36] [build-stdout] /path/to/project/Cargo.toml
[2026-07-28 11:41:47] [build-stdout] [2026-07-28 11:41:47] [build-stdout] WARN /path/to/project/src/main.rs:3:18: macro expansion failed for 'format'
[2026-07-28 11:41:47] [build-stdout] [2026-07-28 11:41:47] [build-stdout] WARN /path/to/project/src/main.rs:5:14: macro expansion failed for '$crate::format_args_nl'
[2026-07-28 11:41:57] [build-stdout] [2026-07-28 11:41:57] [build-stdout] INFO total duration (LoadManifest): 10.223s
[2026-07-28 11:41:57] [build-stdout] [2026-07-28 11:41:57] [build-stdout] INFO total duration (CrateGraph): 0.011s
[2026-07-28 11:41:57] [build-stdout] [2026-07-28 11:41:57] [build-stdout] INFO total duration (Extract): 0.018s
[2026-07-28 11:41:57] [build-stdout] [2026-07-28 11:41:57] [build-stdout] INFO total duration (LoadSource): 0.227s
[2026-07-28 11:41:57] [build-stdout] [2026-07-28 11:41:57] [build-stdout] INFO total duration (Parse): 0.000s
[2026-07-28 11:41:57] [build-stdout] [2026-07-28 11:41:57] [build-stdout] INFO total duration (FindManifests): 0.008s
[2026-07-28 11:41:57] [build-stdout] [2026-07-28 11:41:57] [build-stdout] INFO total duration (ParseLibrary): 1.757s
[2026-07-28 11:41:57] [build-stdout] [2026-07-28 11:41:57] [build-stdout] INFO total duration (ExtractLibrary): 4.825s
[2026-07-28 11:41:57] [build-stdout] [2026-07-28 11:41:57] [build-stdout] INFO total duration: 21.190s
Finalizing database at /path/to/project/rust-format-data-flow-db.
Running TRAP import for CodeQL database at /path/to/project/rust-format-data-flow-db...
Importing TRAP files
Merging relations
Finished writing database (relations: 24.73 MiB; string pool: 11.03 MiB).
TRAP import complete (8.7s).
Finished zipping source archive (5.77 MiB).
Successfully created database at /path/to/project/rust-format-data-flow-db.
Query run log
$ codeql query run ql/identify-dataflow-nodes.ql --database=rust-format-data-flow-db
Resolving data extensions.
Finished resolving data extensions.
Error retrieving qlpack commit hash from Git repository
Loading data extensions.
Finished loading data extensions.
Compiling query plan for /path/to/project/ql/identify-dataflow-nodes.ql.
[1/1 comp 11s] Compiled /path/to/project/ql/identify-dataflow-nodes.ql.
identify-dataflow-nodes.ql: Evaluation completed (1.1s).
| node | col1 | col2 |
+------------------+--------------------+----------------------------------------------------------------------+
| string | VariableAccess | /path/to/project/src/main.rs@4:20:4:25 |
| ...::_print | PathExpr | /path/to/project/src/main.rs@5:5:5:12 |
| 1 | IntegerLiteralExpr | /path/to/project/src/main.rs@2:13:2:13 |
| MacroExpr | MacroExpr | /path/to/project/src/main.rs@3:18:3:34 |
| MacroExpr | MacroExpr | /path/to/project/src/main.rs@5:14:5:27 |
| MacroExpr | MacroExpr | /path/to/project/src/main.rs@5:5:5:28 |
| ...::_print(...) | CallExpr | /path/to/project/src/main.rs@5:14:5:27 |
| &string | RefExpr | /path/to/project/src/main.rs@4:19:4:25 |
| { ... } | BlockExpr | /path/to/project/src/main.rs@5:14:5:27 |
| { ... } | BlockExpr | /path/to/project/src/main.rs@5:14:5:27 |
| { ... } | BlockExpr | /path/to/project/src/main.rs@1:11:6:1 |
Shutting down query evaluator.
Description
The arguments passed to calls to Rust macros
formatandprintare not recognized as aDataFlow::Node.Reproduction steps
CodeQL CLI version
It is set locally via
gh codeql set-local-version 2.25.6.Target code
This is in a file named
/path/to/project/src/main.rs.Test code
This is in a file named
/path/to/project/ql/identify-dataflow-nodes.ql.Database creation log
Make a database named
rust-format-data-flow-dbat/path/to/project.Query run log