Static Code Analysis
Analyse a repository or an archive: AI Native SAST, secrets, dependencies and the classic scanners.
Static Code Analysis scans a Git repository or an uploaded ZIP archive. Several engines run on the same checkout, and you choose them on one page:
| Engine | What it does |
|---|---|
| AI Native SAST | A model reads each file in scope and reports logic and data-flow flaws; optionally, each finding is checked for a path from user input before it is reported. See Run an AI Native SAST scan. |
| Secrets Detection | Finds exposed keys, tokens and credentials, with AI judging which are real. See Secrets detection. |
| Dependency Check (SCA) | Maps third-party libraries to known CVEs, and optionally keeps only the advisories your code can actually reach. See Dependency reachability. |
| Classic SAST scanners | Quick and Full rule-based scanning, your own Semgrep rules (Custom Rules), and IaCS Analysis of Terraform, Kubernetes and cloud configuration. |
The form starts with the AI engines on and the classic scanners off. Scans can run once, on a schedule, or whenever a branch changes.
Before you start
| Prerequisite | How to check |
|---|---|
| A product exists | Products in the sidebar lists it. When there is none, the Product Assignment field says so and links to Create a product. See Products. |
| The team has AI | Teams → AI tab → AI provider: Use is the system AI or the team's own models, and Test connection answers. Without AI, switch the AI engines off, or AI Native SAST does not start and dependency reachability is skipped. See AI providers and cost. |
| AI budget is left | Teams → AI tab → Monthly token budget: the meter is below the limit. |
| You may start scans | Your role is operator or team admin: the page shows the Start Analysis button. Readers and vulnerability managers do not see it. |
| A private repository can be cloned | For an SSH address, you or your team has an SSH key: no SSH warning appears under Repositories. See Git repository authentication. |
Run a scan
- 01Open Static Code Analysis in the sidebar
The Static Analysis page opens.
- 02Give it the code
Git Repository tab: enter one or more repositories in Repositories. Or Upload ZIP tab: drop a .zip of the source.
- 03Choose the Scanning Mode
Full scan to scan everything now. The line under the field says what the chosen mode will do.
- 04Choose the Main Language
All supported languages (the default) suits most repositories; choose one language to run its native engine with Full in a partial scan.
- 05Choose the Product Assignment
The product the findings are filed under.
- 06Review the scanner switches
AI Featured Code Analysis on the right, Classic SAST Scanners below it. Open a row to see its options.
- 07Click Start Analysis
Check it worked: a single scan shows Scan submitted and opens its scan page, where you follow it stage by stage (see The scan page). A batch of repositories shows N scan submitted, lists any repository that was not submitted with the reason, and opens Scan History.
- Upload the file or provide the Git URL: neither a repository nor a file was given.
- Only .zip files are supported or Error: File size exceeds N MB: see Upload in the field table below.
- This repository needs an SSH key… or Schedules and repository watches clone with the team SSH key, and none is set…: see Git repository authentication.
- Multiple repository submissions support Once and Incremental Scan modes only.: enter one repository, or choose Full scan or Incremental Scan.
- Schedules, repository watching and Incremental Scan need a Git repository…: an uploaded archive can only be scanned once.
- Custom Scope is not supported by the selected scanner(s): … (or Verify Fixes): switch off the scanners it names.
- Nothing to scan: an Incremental Scan found no new commits. Nothing went wrong.

Read https://scansuite.eu/documentation/usage/static-code-analysis. Install the ScanSuite skill from github.com/cepxeo/scansuite-ci, then run an AI Native SAST scan of this repository against the ScanSuite product <PRODUCT> and summarise the critical and high findings. SCANSUITE_URL, SCANSUITE_TEAM and SCANSUITE_TOKEN are already set in the environment; never ask me for the token and never print it. If the product does not exist or the token is refused, stop and tell me what a person has to do.Paste it into Claude Code or another coding agent. See Working with AI agents.
The same scan can run from a pipeline with scansuite-ci (CI/CD and automation) or from a coding agent with the ScanSuite skill (Working with AI agents).
The form, field by field
| Field | What it does | Default | When to change it |
|---|---|---|---|
| Saved Scans | New, or one of the schedules and monitors you created. Choosing one fills the form from it; change it and click Start Analysis to update the schedule, which also starts a scan now. New restores your usual preselection. | New | To change or re-run a schedule you created. |
| Delete saved scan (bin button) | Deletes the chosen schedule after a Delete schedule confirmation. Scans it already ran stay in Scan History. Shown to operators and team admins. | – | To stop a schedule for good. Pausing is on the Schedules page. |
| Upload ZIP / Git Repository | Where the code comes from. Typing in Repositories switches to Git Repository. | Upload ZIP | Use Git Repository for anything you want to rescan, schedule or watch. |
| Upload | A .zip of the source, up to 2000 MB unless your operator changed the limit (MAX_UPLOAD_MB). Errors: Only .zip files are supported; Error: File size exceeds N MB. | – | For code that cannot be cloned from the server, or with cached build dependencies. |
| Repositories | Full HTTPS or SSH addresses, separated by commas, semicolons or new lines. Repository names and Bitbucket project keys work only when the installation's Git service is Bitbucket, and use your Git repository API key (My account) to list repositories. Add @branch to one entry to scan another branch of it. | Empty | Always, for a Git scan. |
| Scanning Mode | When and how much to scan; see Scanning modes below. | Full scan | For schedules, monitoring, a partial scope or fix verification. |
| Run at | For Daily, Weekly and Monthly: the time of day, server time. The sentence under it says when the schedule runs. | Empty: the moment you submit | Set a quiet hour for scheduled scans. |
| Main Language | All supported languages, python, java, kotlin, cobol, javascript, typescript, php, cpp, csharp, ruby, go or swift. Chooses the native engine Full runs, and the files AI Native SAST reads. | All supported languages | Choose one language for a partial-scope Full scan, or for a build-dependent engine. |
| Branch Name | The branch to scan. @branch in Repositories overrides it for one entry. | Empty: the repository's default branch | To scan a release or feature branch. |
| Product Assignment | The product the findings are filed under, shown as name (engagement). Preselected when you come from a product's New scan. | The first product | Always check it. |
| Files and folder patterns | Custom Scope only: one repository-relative file, folder or glob per line, for example src/, pom.xml, **/*Controller.java. The rest of the checkout stays readable for reachability checks. | Empty | To point an expensive AI pass at the code that matters. |
| Findings to verify | Verify Fixes only: one finding ID per line. Rescan selected on the Vulnerabilities page fills it for you. | Empty | To confirm fixes without a full scan. |
| Start Analysis | Submits the scan. Hidden for readers and vulnerability managers. | – | – |
When you enter a single repository, a line under Repositories shows what its last finished scan spent: the date, the LLM tokens and calls and, once models are priced, the cost.
When fix verification is switched off for the team, Findings to verify says so: the run will reassess the findings but not close any. See Rescans and fix verification.
Scanners and their defaults
| Scanner | Default | Options and notes |
|---|---|---|
| AI Native SAST | On | Options: Analyze Git history (on), Verify findings reachability (on), Analyze security architecture (on), Cross-file hunt (off). See Run an AI Native SAST scan. |
| Secrets Detection | On | Option: Verify secrets with AI (on). See Secrets detection. |
| Dependency Check (SCA) | On | Option: Verify findings reachability (on). See Dependency reachability. |
| Quick | Off | Fast rule-based scan, suited to pull requests. |
| Full | Off | Comprehensive rule-based scan, plus the native engine of the Main Language. |
| Custom Rules | Off | Runs your team's Semgrep rules. A hint under it says how many rules will run for the chosen product, or that none applies and the scanner will be skipped; Only these packs limits the run to the rule packs you tick. See Custom Rules. |
| IaCS Analysis | Off | Reviews Terraform, Kubernetes and cloud configuration. |
| Export to DefectDojo (classic scanners) | Follows the scanner switch | Shown only when the team has DefectDojo configured. Sends that scanner's report to DefectDojo. |
A scanner whose images this server lacks is marked Not installed on this server. and cannot be chosen; a Main Language whose engine runs without CodeQL here says Runs without CodeQL: not installed on this server. See Scan outcomes in Managing scan execution.
The form remembers your choice. Each time you submit, your scanner selection, Main Language and Branch Name are saved as your preference in this team, and the next visit preselects them. The defaults above apply only until your first submission. Turning a scanner off clears its options.
Language coverage
AI Native SAST reads more than 30 languages. Twelve of them also have a native engine, which the Full scanner runs for the language chosen in Main Language:
| Coverage | Languages |
|---|---|
| Native engine and AI SAST | C, C++, C#, Go, Java, JavaScript, Kotlin, PHP, Python, Ruby, Swift, TypeScript |
| AI Native SAST only | COBOL, Dart, Elixir, Erlang, F#, Groovy, Haskell, Lua, Objective-C, Perl, PowerShell, Rust, Scala, Shell, SQL, Svelte, Visual Basic, Vue |
- With All supported languages, a Full scan of the whole repository runs the native engine of every language it finds, and AI Native SAST reads every language in the table.
- In Incremental Scan, Monitor Changes and Custom Scope, All supported languages runs no native engine; the scan log says select one language to run its engine on this scan. Choose the language if you need its engine there.
Scanning modes

| Mode (group) | What it does | Repositories |
|---|---|---|
| Full scan (Run now) | Scans the whole repository or archive once. | Several at once |
| Incremental Scan (Run now) | Scans only what changed since the last successful scan of the branch; the first run scans everything. Nothing is started when there are no new commits. | Several at once; Git only |
| Custom Scope (Run now) | Scans only the files and folders you list in Files and folder patterns. | One |
| Verify Fixes (Run now) | Reassesses only the findings you list, closing the ones that are fixed. | One |
| Daily / Weekly / Monthly (Repeat) | Scans now, then every day, every week on today's weekday, or every month on today's date, at Run at. | One; Git only |
| Monitor Changes (Watch the repository) | Scans now, then checks the branch every hour and scans only what changed. | One; Git only |
- Choosing Custom Scope or Verify Fixes switches off Secrets Detection, Dependency Check, Analyze Git history and Cross-file hunt, because they look beyond the listed files. Only AI Native SAST, Quick, Full, Custom Rules and IaCS Analysis accept a file list.
- Schedules and monitors are managed on the Schedules page; see Schedule the scan. Monitoring and incremental scans are explained in Monitored branches and incremental scans.
AI analysis is priced per token, so scope is the main cost control you have. Custom Scope, Incremental Scan and Monitor Changes keep a re-scan proportional to the change rather than to the size of the codebase.

Where the results go
| Engine | Where to find its findings |
|---|---|
| AI Native SAST | Vulnerabilities page and the scan report. Not exported to DefectDojo. |
| Secrets Detection | Credentials page. Not exported to DefectDojo. |
| Dependency Check (SCA) | The scan report; with reachability, the reachable advisories also go to Vulnerabilities. Not exported to DefectDojo. |
| Custom Rules | Vulnerabilities page and the scan report. |
| Quick, Full, IaCS Analysis | The scan report, and DefectDojo when Export to DefectDojo is on. |
Findings of the classic scanners (Semgrep in Quick, Full and Custom Rules; KICS in IaCS Analysis; and Dependency Check without reachability) are also stored on the Vulnerabilities page while Teams → Scanning → Store scanner findings is On (the default), from the severity set there (Medium by default). See Set up DefectDojo for DefectDojo.
Last reviewed 2026-10-19