To get a trial key
fill out the form below
Team License (standard version)
Enterprise License (extended version)
* By clicking this button you agree to our Privacy Policy statement

** This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
Request our prices
New License
License Renewal
--Select currency--
USD
EUR
GBP
RUB
* By clicking this button you agree to our Privacy Policy statement

** This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
To get the licence for your open-source project, please fill out this form
* By clicking this button you agree to our Privacy Policy statement

** This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
To get the licence for your open-source project, please fill out this form
* By clicking this button you agree to our Privacy Policy statement

** This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
I am interested to try it on the platforms:
* By clicking this button you agree to our Privacy Policy statement

** This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
Message submitted.

Your message has been sent. We will email you at


If you haven't received our response, please do the following:
check your Spam/Junk folder and click the "Not Spam" button for our message.
This way, you won't miss messages from our team in the future.

>
>
FAQ for those who have read our articles

FAQ for those who have read our articles

Feb 21 2012
Author:

This post contains a FAQ for those who have read our articles.

Did you inform the developers about the errors found in their project?

Yes. We try to inform developers that we have found certain errors in their project using PVS-Studio. Usually we send them a letter with a link to the corresponding article or write a post into the Bug Tracker. We also offer them a registration key for some time for them to work with PVS-Studio and study the diagnostic messages we haven't mentioned in the article.

Why do we "try", not "certainly inform"? On rare occasions, our e-mails are put into the spam folder, while messages in the Bug Tracker are deleted because they contain links and are also considered as spam. It's a pity, but what can we do?

Did you try to analyze PVS-Studio with itself?

Yes. As soon as we got this opportunity, we started launching night tests during which the analyzer checks itself and a report is sent to us via e-mail.

We did not keep record of interesting errors detected by PVS-Studio in itself. That's why, unfortunately, it's impossible to write an article titled "Checking PVS-Studio with PVS-Studio". Besides, we have not received e-mails with error reports for a long time by now. This is because we use incremental analysis that helps us fix detected errors long before the code gets into the version control system.

If you want to know more, you are welcome to read the article "How we test the code analyzer".

Why is there no PVS-Studio for Linux?

It's expensive and difficult to implement this version. Perhaps the Linux-version will appear some time, but it is not in our nearest plans. We see no point in investing large amounts of resources into the direction where it is difficult to profit from sales.

The belief that it is difficult to earn enough in the Linux world is based on the personal experience of participating in a certain project. There are also some indirect evidences. For example, the AQtime Linux edition version is not developed and supported anymore. It means that it's quite difficult to make on programming tools in the Linux world.

The answer concerning the Linux version doesn't sound convincing. What is difficult about creating the Linux version? What is difficult about analyzing text files with code?

From the technical viewpoint, it is possible to port PVS-Studio.exe's code to another platform, as it almost doesn't use any Windows-specific functions.

To create PVS-Studio for a different operating system you should provide at least the same quality level on that platform as on the Windows platform. To maintain PVS-Studio's quality level we use a lot of various test types: static analysis, unit tests, functional tests, UI tests, etc. It is only after passing all these tests that we can be convinced that the analyzer behaves in the same way on the other platform as it does on Windows. Testing the analyzer comprises about 30% of the general development price.

Besides, you should take into account that files with code processed by the Visual C++ compiler contain certain constructs specific to this compiler. And PVS-Studio does support them. Other compilers (GCC, for instance) contain specific constructs as well, and we will have to implement support for them. It is an unapparent yet huge amount of work. The fact that the key word '__restrict' is used 10 000 times rarer than 'for' doesn't mean that we can do without making support for it. Many programmers are unaware of such things as __w64, __noop, __if_exists, __int3264, __uuidof, __based, __LPREFIX and so on and so forth.

Finally, different systems have different sets of include files used by programmers. So while PVS-Studio handles Visual C++ include files it doesn't mean that everything will work as well with GCC include files.

Why doesn't PVS-Studio support Visual Studio Express Edition?

This is not the restriction of PVS-Studio. None of the Visual Studio Express Edition versions supports plugins - this is the restriction of this very Visual Studio edition; we cannot integrate our tool into Visual Studio Express Edition.

What does PVS-Studio have in common with PVS?

Nothing.

PVS-Studio is the abbreviated name of our company "Program Verification Systems" plus the word "Studio".

PVS is Prototype Verification System.

It's just an accident that the both words contain "PVS".

Why is PVS-Studio's price so high?

PVS-Studio's price is adequate. Those who purchase PVS-Studio usually don't speak on the price and discounts because they really need the tool. Those who speak of a high price don't need PVS-Studio. That's why any price will be too high for them.

We checked this through an experiment: people often tell us about a too high price and say that it should rather be $100-$200. So we started to offer these people to buy PVS-Studio at the price they suggest ($100-$200). Almost nobody did. The conclusion is: these are idle commentators who are not interested in their code's quality and who simply don't need PVS-Studio.

But still, what is such a high price comprised by?

It is support that is very expensive. Only static analyzer's developers can answer any questions concerning it. We do not get questions like "how can I download the file?" or "what is the float type?". Our customers are programmers who ask complicated questions on the C++ language or report errors accompanied by crash stack printing. Only programmers can deal with such requests.

I have analyzed my code and found nothing. Why?

It might happen due to the following two reasons:

1) You have already fixed the errors PVS-Studio could have found through other testing methods. And it has cost you much more than using PVS-Studio. This subject is discussed in detail in the following articles:

2) You get false positives and your attention is quickly weakening. As a result, you miss real errors. This is a very big trouble and we don't know yet how to solve it. This discussion on the reddit.com website is very characteristic regarding the subject.

A person reads the following text in the article:

Fragment N1.

Diagnostic message V511.

The sizeof() operator returns size of the pointer, and not of the array, in 'sizeof(src)' expression.

ID_INLINE mat3_t::mat3_t( float src[ 3 ][ 3 ] ) {
  memcpy( mat, src, sizeof( src ) );
}
Correct code:
memcpy( mat, src, sizeof(float) * 3 * 3);

and tells us we are wrong and there's no error:

Fragment N1.

Except it doesn't. The sizeof() operator returns the size of the object, and src is not a pointer - it is a float[3][3]. sizeof() correctly returns 36 on my machine.

We thoroughly explain why he is incorrect. Then he gets surprised and thanks us:

Oop - yup - I essentially tested with with "char A[100];" rather than "void Foo(char B[100])"

It appears that he has even created a test sample to check what he has read. But the sample was written incorrectly. Imagine how much time the person has spent to analyze the error and write the test sample but still failed to understand the point!

By the way, similar complaints can be found in the wonderful article "A Few Billion Lines of Code Later - Using Static Analysis to Find Bugs in the Real World". The point is this: if the first 10 messages reviewed by the programmer have appeared false positives, he/she starts to take all the following messages as false positives too.

By the way, the above said again confirms the fact that customer support is a very important and expensive task.

References

Popular related articles
The Evil within the Comparison Functions

Date: May 19 2017

Author: Andrey Karpov

Perhaps, readers remember my article titled "Last line effect". It describes a pattern I've once noticed: in most cases programmers make an error in the last line of similar text blocks. Now I want t…
The Ultimate Question of Programming, Refactoring, and Everything

Date: Apr 14 2016

Author: Andrey Karpov

Yes, you've guessed correctly - the answer is "42". In this article you will find 42 recommendations about coding in C++ that can help a programmer avoid a lot of errors, save time and effort. The au…
Static analysis as part of the development process in Unreal Engine

Date: Jun 27 2017

Author: Andrey Karpov

Unreal Engine continues to develop as new code is added and previously written code is changed. What is the inevitable consequence of ongoing development in a project? The emergence of new bugs in th…
PVS-Studio ROI

Date: Jan 30 2019

Author: Andrey Karpov

Occasionally, we're asked a question, what monetary value the company will receive from using PVS-Studio. We decided to draw up a response in the form of an article and provide tables, which will sho…
Appreciate Static Code Analysis!

Date: Oct 16 2017

Author: Andrey Karpov

I am really astonished by the capabilities of static code analysis even though I am one of the developers of PVS-Studio analyzer myself. The tool surprised me the other day as it turned out to be sma…
Technologies used in the PVS-Studio code analyzer for finding bugs and potential vulnerabilities

Date: Nov 21 2018

Author: Andrey Karpov

A brief description of technologies used in the PVS-Studio tool, which let us effectively detect a large number of error patterns and potential vulnerabilities. The article describes the implementati…
The way static analyzers fight against false positives, and why they do it

Date: Mar 20 2017

Author: Andrey Karpov

In my previous article I wrote that I don't like the approach of evaluating the efficiency of static analyzers with the help of synthetic tests. In that article, I give the example of a code fragment…
How PVS-Studio Proved to Be More Attentive Than Three and a Half Programmers

Date: Oct 22 2018

Author: Andrey Karpov

Just like other static analyzers, PVS-Studio often produces false positives. What you are about to read is a short story where I'll tell you how PVS-Studio proved, just one more time, to be more atte…
Characteristics of PVS-Studio Analyzer by the Example of EFL Core Libraries, 10-15% of False Positives

Date: Jul 31 2017

Author: Andrey Karpov

After I wrote quite a big article about the analysis of the Tizen OS code, I received a large number of questions concerning the percentage of false positives and the density of errors (how many erro…
PVS-Studio for Java

Date: Jan 17 2019

Author: Andrey Karpov

In the seventh version of the PVS-Studio static analyzer, we added support of the Java language. It's time for a brief story of how we've started making support of the Java language, how far we've co…

Comments (0)

Next comments

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
This website uses cookies and other technology to provide you a more personalized experience. By continuing the view of our web-pages you accept the terms of using these files. If you don't want your personal data to be processed, please, leave this site.
Learn More →
Accept