Frequently Asked Questions (FAQ)

Parallel Checker

General Installation Questions

Which IDEs are supported?

The checker supports both Visual Studio (as an extension, including VS preview) and VS Code (through NuGet analyzer packages). Please refer to Download for further instructions.

Do you have samples where I can see how the checker detects concurrency bugs?

Yes, please check the samples for example cases. Make sure that you have .NET Core 3.1 installed for the samples.

Are C# 9 language features already supported?

Yes. The checker currently supports C# 9 downwards.

Installation Question for VS Code

I do not see any issues in VS Code. What is missing?

You need to make sure that:.

  • You have enabled Roslyn analyzers (under Omnisharp settings). Please see the installation instructions.
  • You have added the NuGet package "ConcurrencyLab.ParallChecker" to all projects that you want to analyze.
  • The code has indeed detectable concurrency issues, e.g. the samples.

Am I allowed to ship the ConcurrencyLab.ParallelAnalyzer NuGet package? Can I use the package on a build server in a CI setting?

No, the NuGet analyzer package is only intended for interactive use in VS Code. If you want to ship or use the analyzer on build server or CI, please contact us. We are happy to provide a viable solution for you.

Installation Question for Visual Studio®

Full solution analysis turns on automatically, even when I disable it in the VS options. Does the checker change the setting in the background?

Yes, the recent checker (version >= 1.5) automatically enables full solution. This is because full solution analysis is required for the checker to work. However, you can disable this automatic behavior. The following specific steps are needed to disable full solution analysis:

  • Go to Tools->Options->Parallel Checker, then set "Automatic full solution analysis" to "false".
  • Disable full solution analysis under the options of "Text Editor->Advanced" (different options depending on VS version).
  • Reload the solution or restart VS.

I do not like the blue-icon information messages of the checker. Can I turn them off?

Yes, go to Tools->Options->"Parallel Checker": Set "Diagnostic Checker Information" to "false". The change will be become effective on solution reload or VS restart.

Checker messages are not being displayed in my Visual Studio. What is wrong?

Please check that full solution analysis is activated in your VS. Sometimes, it may be necessary to manually set this mode:

  • Go to Tools -> Options -> Text Editor -> C# -> Advanced
  • Focus on the settings in "Background analysis scope"
  • Select "Entire solution"

I get an information messages stating the checker could not be loaded. What am I missing?

Please check that you have Visual Studio® 2019. Please consult the prerequisites listed in Download.

I get a user prompt stating "To enable Parallel Checker, set the following option:..."". What is happening?

This message is shown when the checker cannot activate required full solution analysis, e.g in future VS releases. You need to manually activate C# full solution analysis in VS options, e.g. in VS 2019 version 16.5 onwards

  • Go to Tools -> Options -> Text Editor -> C# -> Advanced
  • Focus on the settings in "Background analysis scope"
  • Select "Entire solution"

The option setting varies from the VS versions.

Are older versions of Visual Studio® supported?

The latest checker requires Visual Studio® 2019 16.4 or higher. A list of previous checker versions with supported IDEs is listed under Download.

Technical Questions

Does the checker also support other languages than C#?

No, although the algorithms are general and could be applied to other programming languages as well, the checker only supports C#. This is due to the programming efforts that would be necessary to port it to another language. The current checker is also based on Roslyn that currently implements a compiler framework for C# and Visual Basic®. Moreover, the checker only focuses on source code and does not analyze referenced DLLs.

Does the checker safely detect all concurrency issues?

No, the checker may only report a sub-set of data races, deadlocks and other concurrency issues. It is designed to be mostly precise and thus may miss real errors. In scientific terms, it is not a "sound" checker algorithm.

Is it possible that the checker reports false positives, i.e. non-issues?

Yes, it may report false positives, false warnings in certain cases. Although the checker strives for a precise detection in most cases, it takes conservative assumptions for external input/output, unknown, uncompilable, or unanalyzable code parts, external libraries, or due to implementation limitations.

What does the star sign * signify at the end of the checker's information message?

The asterisk sign * at the end of parallel checker information message denotes an unsupported internal state in the checker that is typically due to an implementation limitation (unsupported language features etc.).

Are the checker results deterministic, i.e. reproducible?

Yes, the checker execution should generally result the same issues for the same code.

How long does checker take for larger projects?

The checker should take up to a few seconds for larger projects. Its execution is bound to certain deterministic analysis depth.

What are details of the algorithm?

It has been published in the open-access research paper "L. Bläser. Practical Detection of Concurrency Issues at Coding Time. International Symposium on Software Testing and Analysis (ISSTA) 2018, Amsterdam, The Netherlands, In ACM Digital Library, July 2018".

What open issues are known for the checker?

Currently, there are some implementation limitations regarding the support of specific language features, see the section "Limitations" under Download. We recently added support for common LINQ expressions (inbuilt syntax as well as extension methods).

Where can I report issues with the checker?

We appreciate if you report us encountered issues via the coordinates of our contact information.

License and General Questions

Why is it sometimes called "HSR Parallel Checker" and sometimes simply "Parallel Checker"?

We decided to rename the tool to "Parallel Checker" due to the renaming of our university from HSR Hochschule Technik Rapperswil to OST - Ostschweizer Fachhochschule in September 2020.

Can I use the checker for free?

The checker is free of charge, if it is interactively used as a plugin in an integrated development environment, such as Visual Studio® or VS Code, see the License.

Is the checker open source?

No, the checker source is currently not published. We have not yet decided whether we would possibly release it as open source in future.

Can I automate the checker on a build server?

No, it is only allowed to interactively use the checker within an integrated development environment. Interactively means that it should not be automated or integrated as a background checker as part of a quality toolchain, devops, or build servers etc. Please consult the License.

Can I ship the NuGet packages with my solution?

No, please only use the NuGet packages for interactive analysis in VS Code and remove it before shipping. If you have special requirements beyond the license terms, please can contact us and we are happy to find solution for you.

Can our company license the checker for further application areas or for commercialization?

Please contact us if you are interested in more general licenses than the free license version of this distribution. You can reach us via the contact information. We are happy to hear from you.

Which data privacy policy is implemented by the checker?

We can assure the following for the parallel checker code developed by ourselves: Our checker code does neither explicitly store user data (except the very rudimentary checker configuration settings) nor communicate with external systems. Hence, we do neither collect any information of your systems or code bases. However, we cannot make any statements about the integrating or integrated libraries and systems, such as Roslyn, Visual Studio®, VS Code (incl. OmniSharp), or other third-party components, logics, configurations, crash dumps, loggers etc.

Our developers are not so familiar with concurrency and parallelization. Do you offer any training?

We, the Concurrency Lab, frequently perform training, coaching, and workshops in companies on the topics of concurrency and parallelization. Please check our website or contact us.

Notice: Microsoft, Visual Studio, and Visual Basic are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries.

All trademarks, trade names etc. are the property of their respective owners.

OST, Parallel Checker, HSR, Concurrency Lab, and the contributors DO NOT have any affiliation with any mentioned trademark holders.