---
schema_version: "1"
id: d36357a8733336a9978f0b4a8925936c391141fbfb1d2f19cf7edc98ac3c4ff9
title: Salesforce Graph Engine (Retired)
collection: developer
version: current
locale: en-us
portal_url: https://docs.salesforce.com/developer/current/en-us/code-analyzer/salesforce-code-analyzer/guides/v3x/engines/salesforce-graph-engine.md
canonical_url: https://developer.salesforce.com/docs/platform/salesforce-code-analyzer/guide/salesforce-graph-engine.html
source_site: developer.salesforce.com
content_type: documentation
content_hash: c1bd498a68d1c9056586a9b6cc1b44fe063603482395615305a37c4ef9cebf90
products:
  - Salesforce Code Analyzer
---
# Salesforce Graph Engine (Retired)

Salesforce Graph Engine is an open-source Salesforce tool that performs complex analysis on Apex code and identifies security vulnerabilities and code issues. Graph Engine also performs more complex checks than an average static-analysis tool, because Graph Engine uses data-flow analysis. [Try Graph Engine](https://developer.salesforce.com/docs/platform/salesforce-code-analyzer/salesforce-graph-engine/try-graph-engine.md) and give us your feedback.

## How Code Analyzer Uses Graph Engine

The `scanner run dfa` command invokes the data-flow-based rules in Graph Engine. See [scanner run dfa](https://developer.salesforce.com/docs/platform/salesforce-code-analyzer/command-reference/dfa.md) in the command reference.

Graph Engine supports multiple rules. Read our [Rules](https://developer.salesforce.com/docs/platform/salesforce-code-analyzer/salesforce-graph-engine/rules.md) documentation for full details.

## Data-Flow Analysis

Data-flow analysis is a multi-step process.

---

![Steps run by SFGE](https://developer.salesforce.com/media/salesforce-code-analyzer/SFGE_flow_overview.png)

---

- The Apex Jorje compiler analyzes your code and returns a parse tree.
- Graph Engine translates the parse tree into vertices and adds them to the Apache TinkerPop graph database.
- Graph Engine builds code paths starting from each identified entry point.
- Graph Engine walks each code path and applies the selected rules at every vertex along with contextual data. The rule evaluates this information and, if applicable, creates violations.

After Graph Engine completes walking the paths, it returns all issues collected as rule violations.

## How Rules Are Invoked

Rules register interest in specific types of vertices. For example, a Create, Read, Update, Delete, and Field-Level Security (CRUD/FLS) rule expresses interest in all vertices that perform Data Manipulation Language (DML) operations.

## See Also

- [Apex Developer Guide](https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_dev_guide.htm)
- [Apache TinkerPop Graph Database](https://tinkerpop.apache.org/)
- [Gremlin Query Language](https://tinkerpop.apache.org/gremlin.html)
