Enable GitLab Advanced SAST (cross-file, cross-function scanning) for more languages
## Motivation [GitLab Advanced SAST](https://docs.gitlab.com/ee/user/application_security/sast/gitlab_advanced_sast.html) provides cross-file, cross-function scanning, including a more powerful engine and matching detection rules. Enabling these capabilities for additional languages will improve SAST detection accuracy for customers. ### Scope This effort only includes languages that GitLab SAST currently scans using Semgrep-based scanning. We are **not** currently: 1. Expanding the set of languages that GitLab SAST supports, overall. That is, we are not adding new-new languages that aren't [already supported by an official GitLab SAST analyzer](https://docs.gitlab.com/ee/user/application_security/sast/#supported-languages-and-frameworks). 1. Migrating coverage from language-specific analyzers (SpotBugs, PMD-Apex, Sobelow) to Advanced SAST. For details on these scope exclusions, see [SAST Direction: What is not planned right now](https://about.gitlab.com/direction/application_security_testing/static-analysis/sast/#what-is-not-planned-right-now). ## Language priority and status We will enable Advanced SAST for new languages in the following priority order. This table only includes languages that are _not complete yet_; see also [completed languages](#completed-languages). | Language | Expected release | Notes | |-----------------------------------------------------------------------------------|--------------------|-------| | [C/C++](https://gitlab.com/groups/gitlab-org/-/epics/14271) | During 2025 | In progress, with expected releases during 2025. | | [Kotlin](https://gitlab.com/groups/gitlab-org/-/epics/15173) | Pending | | | [Scala](https://gitlab.com/groups/gitlab-org/-/epics/15174) | Pending | | | [iOS (Swift and Objective-C)](https://gitlab.com/groups/gitlab-org/-/epics/16318) | Pending | | <sup><em>Table last updated 2025-06-11; last reviewed 2025-06-11</em></sup> _Languages not covered are not planned; see [SAST direction: language support](https://about.gitlab.com/direction/application_security_testing/static-analysis/sast/#language-support)._ This priority order is based on the frequency with which these languages come up in customer engagements, and based on usage data where available. (See [internal note](https://gitlab.com/groups/gitlab-org/-/epics/14312#note_1969720471) for this data.) We can discuss changes to this order in comments. ### Completed languages See [documentation](https://docs.gitlab.com/ee/user/application_security/sast/gitlab_advanced_sast.html#supported-languages) for up-to-date support details. - Python: Shipped in %17.1. https://gitlab.com/groups/gitlab-org/-/epics/13282+s (internal epic) - Java: Shipped in %17.2. https://gitlab.com/groups/gitlab-org/-/epics/13284+s (internal epic) - Java Server Pages: Shipped. https://gitlab.com/gitlab-org/gitlab/-/issues/478414 (internal issue) - Go: Shipped in %17.2. https://gitlab.com/groups/gitlab-org/-/epics/13284+s (internal epic) - JavaScript: Shipped in %17.3. https://gitlab.com/groups/gitlab-org/-/epics/13286+s (internal epic) - TypeScript: Shipped in %17.3. https://gitlab.com/groups/gitlab-org/-/epics/14272+s - C#: Shipped in %17.3. https://gitlab.com/groups/gitlab-org/-/epics/14269+s - Ruby: Shipped in %17.5. https://gitlab.com/groups/gitlab-org/-/epics/14425+s - PHP: Shipped in %18.1. https://gitlab.com/groups/gitlab-org/-/epics/14273+s <sup><em>List last updated 2025-06-11</em></sup> ## Requirements for each language We need to deliver each language as an end-to-end capability, meaning: - The engine must support cross-file, cross-function scanning for that language. - The ruleset must include rules that leverage cross-file, cross-function taint analysis. - Note: This is not a limiting rule! We should still include appropriate rules that do not require taint analysis.
epic