Frequently Asked Questions (FAQ)

HSR Parallel Checker

Installation Question

I do not see any messages from the Parallel Checker with the latest tool. What is wrong?

The latest checker only displays concurrency errors. So, there must be some data race or deadlock issue in the code that the checker is able to detect. To test the checker and obtain an error, you can paste the following code into an empty console C# project:

using System;
using System.Threading.Tasks;

class Program {
  static void Main() {
    int x = 0;
    Task.Run(() => x++);

Please check the samples for further example cases. If you still do not get any message from the checker, please make sure that you have activated "full-solution analysis": You can turn this option on as follows: Tools->Options->Text Editor->C#->Advanced: "Enable full-solution analysis".

How can the old diagnostic checkers messages be turned on?

Go to Tools->Options->HSR Parallel Checker: Enable "Diagnostic Checker Information". The messages are displayed as "information" entries in the "Error list".

Are C# 8 language features already supported?

Yes. The checker currently supports C# 8 downwards. C# 8.1 and 8.2 features will be supported in a future version.

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

Please check that you have Visual Studio® 2019. Moreover, .NET 4.7.2 onwards is required. Please consult the prerequisites listed in Download.

I get a user prompt stating "HSR Parallel Checker requires full solution analysis. Enable it?". What do I need to do and what does it effect?

Please click "Yes". This enables so-called full-solution analysis that is required for the checker. You can manually adjust this option under Tools->Options->Text Editor->C#->Advanced: "Enable full-solution analysis".

Are older versions of Visual Studio® supported?

The latest checker requires Visual Studio® 2019. 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

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®, 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 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 form. We are happy to hear from you.

What data privacy policy is implemented by the checker?

We can assure the following for the parallel checker code developed by us: 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®, 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 HSR Concurrency Lab, frequently perform training, coaching, and workshops in companies on the topics of concurrency and parallelization. Please check our website or contact us via the contact form.

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.

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