On this page:

Related topics:


Concept: what is a project and how is the term used in Semmle analysis.

This topic describes projects and how the term is used in Semmle analysis.


Each project analyzed using Semmle analysis is a code base that:

Typically, there is one project for each application being developed, and each branch that you want to track. The configuration for each project is stored in a project configuration file. This file includes information about the programming language, how to access your source code and a policy on file storage.

How are projects created?

You can create a new project using one of the following methods:

When you create a new project using the bootstrap command, a new sub-directory of the odasa/projects directory is created to store the project and all associated files. When you create a project using the createProject command then you can define an alternative location for the new project.

Example: A team wants to monitor the quality of two applications: AppOne and AppTwo. AppOne is written in a single language but AppTwo has components written in two different languages, languages A and B. They create three separate projects to analyze each language component of the applications. Using the default set up, this results in the following directory structure:


Initially, each new sub-directory contains only a project file that defines the basic properties of the project. After you have created a project file, you have the information required to generate a snapshot of your code which can be analyzed in order to generate results.

What is the project file?

Each project  file contains the configuration details for a single project, including:

The entire project configuration is defined using XML. Each project is monitored over time, so for a default configuration of Semmle Core each project sub-directory contains multiple snapshots of the code in addition to the project file. Typically, a new snapshot is added every day or as the code is revised. If Semmle Core is configured for large scale deployment, you can store configuration files and output data in separate directories by assigning optional environmental variables. For further information, see large-scale deployments.

What are the main tasks for a project?

Administrator tasks for a project include: