Skip to main content

Supported languages for Semgrep CE

This document provides information about supported languages for Semgrep Community Edition (Semgrep CE) and Semgrep Code.

Semgrep Code and Community Edition

Semgrep CE is a fast, lightweight program analysis tool that can help you detect bugs in your code. It makes use of Semgrep's LGPL 2.1 open source engine. These languages are supported by the Semgrep community, at best effort.

Semgrep Code is a static application security testing (SAST) solution designed to detect complex security vulnerabilities. It makes use of proprietary Semgrep analyses, such as cross-file (interfile) dataflow analysis and framework specific analyses, in addition to Semgrep CE. This results in a higher true positive rate than Semgrep CE. Semgrep Code provides the highest quality support by the Semgrep team: reported issues are resolved promptly.

Use either tool to scan local code or integrate it into your CI/CD pipeline to automate the continuous scanning of your repositories.

Languages🚀 Semgrep Code: Free for small teamsSemgrep CE
C / C++Generally available
• Cross-file dataflow analysis
• 150+ Pro rules
Community supported
• Limited to single-function analysis
• Community rules
C#Generally available
• Cross-file dataflow analysis
• Supports up to C# 13
• 40+ Pro rules
Community supported
• Limited to single-function analysis
• Community rules
• Supports up to C# 7.0
GoGenerally available
• Cross-file dataflow analysis
• 60+ Pro rules
Community supported
• Limited to single-function analysis
• Community rules
JavaGenerally available
• Cross-file dataflow analysis
• Framework-specific control flow analysis
• 160+ Pro rules
JavaScriptGenerally available
• Cross-file dataflow analysis
• Framework-specific control flow analysis
• 70+ Pro rules
KotlinGenerally available
• Cross-file dataflow analysis
• 60+ Pro rules
PythonGenerally available
• Cross-file dataflow analysis
• Framework-specific control flow analysis
• 300+ Pro rules
• See Python-specific support details
TypescriptGenerally available
• Cross-file dataflow analysis
• Framework-specific control flow analysis
• 70+ Pro rules
RubyGenerally available
• Cross-function dataflow analysis
• 20+ Pro rules
RustGenerally available
• Cross-function dataflow analysis
• 40+ Pro rules
JSXGenerally available
• Cross-function dataflow analysis
• 70+ Pro rules
PHPGenerally available
• Cross-function dataflow analysis
• 20+ Pro rules
ScalaGenerally available
• Cross-function dataflow analysis
• Community rules
SwiftGenerally available
• Cross-function dataflow analysis
• 50+ Pro rules
TerraformGenerally available
• Cross-function dataflow analysis
• Community rules
GenericGenerally available Community supported
JSONGenerally available
APEXBetaNot available
ElixirBeta
Click to view experimental languages.
  • Bash
  • Cairo
  • Circom
  • Clojure
  • Dart
  • Dockerfile
  • Hack
  • HTML
  • Jsonnet
  • Julia
  • Lisp
  • Lua
  • Move on Aptos
  • Move on Sui
  • OCaml
  • R
  • Scheme
  • Solidity
  • YAML
  • XML

Language maturity definitions

Semgrep Code languages can be classified into four maturity levels:

  • Generally available (GA)
  • Beta
  • Experimental
  • Community supported*

*Community supported languages meet the parse rate and syntax requirements of Experimental languages. Users can still access community rules or write their own rules.

FeatureGABetaExperimentalCommunity supported
SupportHighest quality support by the Semgrep team. Reported issues are resolved promptly.Supported by the Semgrep team. Reported issues are fixed after GA languages.There are limitations to this language's functionality. Reported issues are tracked and prioritized with best effort.These languages are supported by the Semgrep community. While Semgrep may develop rules or engine updates for these languages, they are not prioritized.
Parse Rate99%+95%+90%+
Number of Pro rules10+5+0+. Query the Registry to see if any rules exist for your language.
Semgrep syntaxRegex, equivalence, deep expression operators, types and typing. All features supported in Beta.Complete metavariable support, metavariable equality. All features supported in Experimental.Syntax, ellipsis operator, basic metavariable functionality.

Not finding what you need in this doc? Ask questions in our Community Slack group, or see Support for other ways to get help.