Configuration

Our goal is to provide the most advanced code analysis available and in order to meet that goal we currently require projects to configure Squadron in your repository via a yaml file.

We want first class support for monorepos and while our configuration file is a work in progress; we believe it offers the ability to fine tune in complex scenarios.

Squadron.yaml

You can see the yaml schema here. There are additional examples below:

Single project

squadron.yaml
projects:
  - name: 'my-project'
    path: 'src'
    pathFilters:
      - '**/src/**/*.ts'
experiments:
  anthropic: true

Single project with no centralized folder

squadron.yaml
projects:
  - name: 'my-project'
    path: ''
    pathFilters:
      - '**/src/**/*.rs'
experiments:
  anthropic: true

Monorepo - Many projects

squadron.yaml
projects:
  - name: 'api'
    path: 'apps/api'
    pathFilters:
      - '**/src/**/*.{ts,tsx}'
      - '**/src/**/*.{js,jsx}'
  - name: 'web'
    path: 'apps/web'
    pathFilters:
      - '**/src/**/*.{ts,tsx}'
      - '**/src/**/*.{js,jsx}'
experiments:
  anthropic: true

Language support

Squadron is fine tuned for different languages, we determine languages by file extension. You can find the list of languages that are fined tuned below.

NOTE: While your favorite languages may not appear here, it doesn't mean you can't use them!

Supported languages:

  • C#
  • Rust
  • Typescript
  • Javascript
  • Go

Config Breakdown

Lets walk through each property of the yaml file to better understand what they do, and why.

Projects

In the configuration file, projects offer the ability for you to define the project(s) in your repository. In a simple repository you may have one but in a monorepo you may have several, this gives you the ability to fine tune.

Consider this scenario where you have two projects, the key here is that they are written in different languages.

squadron.yaml
projects:
  - name: 'api'
    path: 'api'
    pathFilters:
      - '**/src/**/*.cs'
  - name: 'tests'
    path: 'tests'
    pathFilters:
      - '**/tests/**/*.{ts,tsx}'
      - '**/tests/**/*.{js,jsx}'
experiments:
  anthropic: true

Repositories have the following attributes:

  • projects
    • The list of projects in your repository
  • experiments
    • Testing flags you may enable to get different functionality.

Projects have the following attributes:

  • name
    • Friendly name for your project or grouping of files.
  • path
    • The base folder your project files are under.
  • pathFilters
    • A Glob expression for including/excluding files for the code review process. See this library for reference.
  • mode
    • Available values: "essential" or "full"
    • This will further fine tune code reviews to be more assertive and discover more details or provide reviews with more concise focus.
  • styleGuide
    • This field supports up to 1024 characters of additional style guide information you can provide for code reviews.

Experiments

Current we only offer one experiment. This list will grow in the future and we will maintain which experiments we support. You can find a yaml example above that references using experiments.

  • anthropic
    • This will run code analysis using Claude Sonnet 3.5. This offers a quality advantage, as the default LLM which is GPT4. Since this support is new, we currently ask that you explicitly enable it.