Frequently Asked Questions (FAQ)
HSR Parallel Checker
Are C# 8 language features already supported?
Not yet. The checker currently supports C# 7.3 downwards. The future release is planned to support C# 8 features.
I get an information messages stating the checker could not be loaded. What am I missing?
Please check that you have Visual Studio® version 15.9.5 onwards. 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".
I do not see any messages from the Parallel Checker. What is wrong?
You need to enable "full solution analysis" in Visual Studio® to run the checker. You can turn this option on as follows: Tools->Options->Text Editor->C#->Advanced: "Enable full-solution analysis". You can find an installation guide under Download.
Are older versions of Visual Studio® supported?
The latest checker requires Visual Studio® 2017 version 15.9.5 or higher, or alternatively, Visual Studio® 2019. A list of previous checker versions with supported IDEs is listed under Download.
How stable is the checker?
The checker is in beta stage, but should neither crash or severely slow down Visual Studio, even for larger projects. However, being in beta stage, it has certain implementation restrictions or bugs leading to incorrect detection results.
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?
A future academic paper is planned to disclose the details of the checker algorithm and report on experimental results. The Documentation provides some high-level description.
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 our contact form.
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.
We can assure the following for the parallel checker code developed by us: Our checker code does neither explicitly store data 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.