From e73cc44b47d71c68154d55208774085feda94506 Mon Sep 17 00:00:00 2001 From: rzuckerm Date: Sun, 2 Nov 2025 09:44:23 -0600 Subject: [PATCH 1/4] Add Rust CodeQL scanning, and update to codeql v4 --- .github/workflows/codeql-analysis.yml | 10 +++++++--- scripts/build_codeql_language.py | 1 + scripts/get_codeql_languages.py | 1 + 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 922771f99..708ca25a1 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -39,6 +39,8 @@ on: - 'archive/p/python/testinfo.yml' - 'archive/r/ruby/*.rb' - 'archive/r/ruby/testinfo.yml' + - 'archive/r/rust/*.rs' + - 'archive/r/rust/testinfo.yml' - 'archive/t/typescript/*.ts' - 'archive/t/typescript/testinfo.yml' pull_request: @@ -65,6 +67,8 @@ on: - 'archive/p/python/testinfo.yml' - 'archive/r/ruby/*.rb' - 'archive/r/ruby/testinfo.yml' + - 'archive/r/rust/*.rb' + - 'archive/r/rust/testinfo.yml' - 'archive/t/typescript/*.ts' - 'archive/t/typescript/testinfo.yml' schedule: @@ -129,7 +133,7 @@ jobs: # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@v3 + uses: github/codeql-action/init@v4 with: languages: ${{ matrix.language }} build-mode: ${{ matrix.build-mode }} @@ -138,7 +142,7 @@ jobs: # If this step fails, then you should remove it and run the build manually (see below) - name: Autobuild if: ${{ matrix.build-mode != 'manual' }} - uses: github/codeql-action/autobuild@v3 + uses: github/codeql-action/autobuild@v4 # â„šī¸ Command-line programs to run using the OS shell. # 📚 https://git.io/JvXDl @@ -152,4 +156,4 @@ jobs: run: python scripts/build_codeql_language.py ${{ matrix.language }} ${{ matrix.paths }} - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v3 + uses: github/codeql-action/analyze@v4 diff --git a/scripts/build_codeql_language.py b/scripts/build_codeql_language.py index 8988aac01..34f888edc 100644 --- a/scripts/build_codeql_language.py +++ b/scripts/build_codeql_language.py @@ -11,6 +11,7 @@ "cpp": "c-plus-plus", "java": "java", "kotlin": "kotlin", + "rust": "rust", "swift": "swift", } diff --git a/scripts/get_codeql_languages.py b/scripts/get_codeql_languages.py index f5c5d6193..82052f725 100644 --- a/scripts/get_codeql_languages.py +++ b/scripts/get_codeql_languages.py @@ -29,6 +29,7 @@ class LanguageInfo: "archive/k/kotlin/*.kt": LanguageInfo(language="kotlin", build_mode="manual"), "archive/p/python/*.py": LanguageInfo(language="python"), "archive/r/ruby/*.rb": LanguageInfo(language="ruby"), + "archive/r/rust/*.rs": LanguageInfo(language="rust", build_mode="manual"), "archive/t/typescript/*.ts": LanguageInfo(language="typescript"), "archive/s/swift/*.swift": LanguageInfo(language="swift", build_mode="manual", os=MACOS), ".github/workflows/*.yml": LanguageInfo(language="actions"), From 110caceb2f641dac45a7b58c97de2fb6b2c4afa7 Mon Sep 17 00:00:00 2001 From: rzuckerm Date: Sun, 2 Nov 2025 09:47:42 -0600 Subject: [PATCH 2/4] Have to use build mode of 'none' for Rust --- scripts/build_codeql_language.py | 1 - scripts/get_codeql_languages.py | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/scripts/build_codeql_language.py b/scripts/build_codeql_language.py index 34f888edc..8988aac01 100644 --- a/scripts/build_codeql_language.py +++ b/scripts/build_codeql_language.py @@ -11,7 +11,6 @@ "cpp": "c-plus-plus", "java": "java", "kotlin": "kotlin", - "rust": "rust", "swift": "swift", } diff --git a/scripts/get_codeql_languages.py b/scripts/get_codeql_languages.py index 82052f725..038b88bfb 100644 --- a/scripts/get_codeql_languages.py +++ b/scripts/get_codeql_languages.py @@ -29,7 +29,7 @@ class LanguageInfo: "archive/k/kotlin/*.kt": LanguageInfo(language="kotlin", build_mode="manual"), "archive/p/python/*.py": LanguageInfo(language="python"), "archive/r/ruby/*.rb": LanguageInfo(language="ruby"), - "archive/r/rust/*.rs": LanguageInfo(language="rust", build_mode="manual"), + "archive/r/rust/*.rs": LanguageInfo(language="rust"), "archive/t/typescript/*.ts": LanguageInfo(language="typescript"), "archive/s/swift/*.swift": LanguageInfo(language="swift", build_mode="manual", os=MACOS), ".github/workflows/*.yml": LanguageInfo(language="actions"), From 8f9d09e6e4d8ab3bb0220681c67985725d57f9ef Mon Sep 17 00:00:00 2001 From: rzuckerm Date: Sun, 2 Nov 2025 10:49:18 -0600 Subject: [PATCH 3/4] Try to generate Cargo.toml --- .github/workflows/codeql-analysis.yml | 7 +++++++ .gitignore | 6 +++++- scripts/generate_cargo_toml.py | 25 +++++++++++++++++++++++++ 3 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 scripts/generate_cargo_toml.py diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 708ca25a1..b9839df78 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -131,6 +131,13 @@ jobs: with: fetch-depth: 2 + # Set up Rust for scanning. + - name: Set up Rust + if: ${{ matrix.language == 'rust' }} + run: | + curl https://sh.rustup.rs -sSf | sh + python3 scripts/generate_cargo_toml.py + # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL uses: github/codeql-action/init@v4 diff --git a/.gitignore b/.gitignore index ca969aca7..c28e24853 100644 --- a/.gitignore +++ b/.gitignore @@ -29,6 +29,10 @@ package-lock.json # F# Program.fs -# scala +# Scala .metals .scala-build + +# Rust +Cargo.toml +Cargo.lock diff --git a/scripts/generate_cargo_toml.py b/scripts/generate_cargo_toml.py new file mode 100644 index 000000000..f14b9b75e --- /dev/null +++ b/scripts/generate_cargo_toml.py @@ -0,0 +1,25 @@ +from pathlib import Path + + +CARGO_TOML = """\ +[package] +name = "sample-programs" +version = "0.1.0" +edition = "2024" +""" +SCRIPTS_FORMAT = """ +[[bin]] +name = "{name}" +path = "{path}" +""" + +def main(): + cargo_toml = CARGO_TOML + for path in Path("archive/r/rust").glob("*.rs"): + cargo_toml += SCRIPTS_FORMAT.format(name=path.stem, path=path) + + Path("Cargo.toml").write_text(cargo_toml, encoding="utf-8") + + +if __name__ == "__main__": + main() From 522d06f4a39d9edaf189bc686cf42448910898bf Mon Sep 17 00:00:00 2001 From: rzuckerm Date: Sun, 2 Nov 2025 10:52:56 -0600 Subject: [PATCH 4/4] Fix rustup call --- .github/workflows/codeql-analysis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index b9839df78..e7ce06451 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -135,7 +135,7 @@ jobs: - name: Set up Rust if: ${{ matrix.language == 'rust' }} run: | - curl https://sh.rustup.rs -sSf | sh + curl https://sh.rustup.rs -sSf | sh -s -- -y python3 scripts/generate_cargo_toml.py # Initializes the CodeQL tools for scanning.