FAQ

Learn more about the SemanticDiff GitHub App and VS Code Extension.

General Questions

A code diff is a visual representation of how source code files have changed between two (or more) versions of a software. There are a few different variants, but most of them are based on a line-by-line comparison of the source code files. Added lines are marked in green, deleted lines are marked in red. Diff tools are part of every version control system, with git diff and the GNU diffutils being the most popular ones.

Common diffs treat source code as text files, and generate a visualization based on a simple line-by-line comparison. This is far from perfect: There are many types of code changes, such as inserting line breaks between function arguments, that don’t have any effect on the software but are displayed as changes. This adds a lot of visual noise and makes it difficult for developers to spot the relevant changes.

In contrary, a semantic diff understands the meaning of the change. It can, for example, distinguish between relevant and irrelevant changes, and recognizes when changes correspond to a typical refactoring pattern, like moving code or renaming a function. Instead of showing lot of changed lines, a semantic diff will show an abstract description of the change, e.g., that a function has been renamed.

SemanticDiff works similar to a compiler or interpreter. Given two source codes to compare, they are first converted to Abstract Syntax Trees (ASTs). This step adds additional information that enables us to filter out various style changes, like adding optional semicolons or commas in an array initialization.

In a second step, we match both trees to find out what has changed. Additional rules are applied to filter out more complex invariances. Afterwards the detected changes are translated back into a text diff representation.

SemanticDiff currently supports most programming languages relevant for web development. We plan to add more languages based on the user feedback we receive. Supported programming languages and data exchange formats are:

  • C#
  • CSS / SCSS
  • Go
  • Java
  • JavaScript / JSX
  • JSON
  • PO (gettext)
  • Python
  • Rust
  • TypeScript / TSX

Please open an issue in our public issue tracker or contact us via email at support@semanticdiff.com.

GitHub App

Yes. In order to review private pull requests with SemanticDiff two requirements must be met:

  • An admin of the organization or the repository owner needs to install our GitHub App on the repository.
  • You need to login via GitHub OAuth and have access to the repository on GitHub.

SemanticDiff uses OAuth to enforce GitHub permission checks and to allow posting of review comments through our interface.

No. Logging in via GitHub does not grant us access to your private repositories or gists. SemanticDiff can only access repositories that are public or have our GitHub App installed.

The only information SemanticDiff can access after logging in is your public profile information and your email address.

There’s no need to manually configure access permissions. Once the GitHub app is installed on the repository, all your team members can simply log in to our app and start reviewing. We use their OAuth tokens to communicate with GitHub and let GitHub perform the access checks, so no additional configuration is required.

Yes, you can go to app.semanticdiff.com and enter the URL of any public pull request to test it. Some features, such as writing comments, are only available if the repository maintainer has installed our App.

To view the contents of private repositories in our GitHub App, users must sign in using GitHub OAuth. All communication with GitHub is then done through their OAuth token, which enforces permission checks.

We take code security very seriously and have implemented a number of measures to protect your data, including encryption, audit logs and more. Feel free to reach out to security@semanticdiff.com to learn more.

Our servers are located in Germany. We don’t use any third-party services in our GitHub App (except GitHub). Read our privacy policy to learn more.

Please check out our terms of use and our privacy policy to learn more.

Billing

Our GitHub App requires seats for all developers whose pull requests in private/internal repositories are to be analyzed. Available seats are assigned automatically the first time a pull request from a GitHub user is analyzed.

If you run out of seats, only pull requests from authors with seats assigned will be analyzed. You can either upgrade your plan or remove an existing seat assignment to make room for new pull request authors.

After installing our GitHub App you will be asked to select a plan. You can choose between our free plan or start a trial of a paid plan.

Yes, you can try our paid plans for 14 days. You have the option to select a Professional plan trial right after installing the GitHub App. Alternatively, you can start a trial later by logging in to app.semanticdiff.com and clicking Installations in the navigation bar. Select the installation you wish to manage and you should see a button to start a trial.

Login to app.semanticdiff.com and click on Installations in the navigation bar. Here you will see all the GitHub App installations that you can manage. Click on one to view or change your subscription details.

You have either uninstalled the GitHub App or you are no longer an admin of the GitHub organization that installed the App.

If you have uninstalled the GitHub App, you will need to reinstall it so that SemanticDiff can use GitHub’s permissions system to determine whether you should be able to manage the GitHub installation and its subscription.

If you don’t want to reinstall the GitHub App or if your payment information is being used by an organization you no longer belong to, please contact our support team at support@semanticdiff.com to change your subscription.

You will be downgraded to the Free plan.

Login to app.semanticdiff.com and click on Installations in the navigation bar. Here you will see all the GitHub App installations that you can manage. Select the one you want to change and click More -> Change Number Of Seats. Note that changing the number of seats is only supported if you have a paid plan, the Free plan is limited to 3 seats. You can change your plan by clicking Switch Plan in the installation management interface.

Changes to the number of seats will take effect immediately and you will be charged prorated to the minute. With an annual billing cycle, you will receive a separate invoice, while changes to subscriptions with monthly billing will be handled as part of your next regular invoice.

If you reduce the number of seats, you will receive a credit which will be deducted from future invoices.

If you have assigned more seats than are covered by your subscription some of your seats will automatically be unassigned. You can manually change your seat assignments in the same place where you changed your subscription.

No, pull requests that are more than 30 days old can be viewed without the author being assigned a seat.

Our GitHub App works right out of the box with GitHub Enterprise Cloud. If you are using the self-hosted GitHub Enterprise Server, please contact us to determine the best solution for your needs.

Depending on the size of your team, you may qualify for a free plan or a discount. Please contact us at support@semanticdiff.com from your student/work email with proof of eligibility, details about the project, and how many seats you need.

Your question was not answered?

Do not hesitate to contact us if you have any questions or feedback.
We look forward to hearing from you.