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.
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.

>
>
Online Examples (C, C++)

Online Examples (C, C++)

Благодаря проекту Compiler Explorer вы можете быстро подготовить синтетические примеры C и C++ кода, и посмотреть, как на них поведёт себя анализатор PVS-Studio.

Перед вами пример кода, содержащий две ошибки и демонстрирующий возможности PVS-Studio в анализе потока данных.

Во-первых, код содержит опечатку, из-за которой в переменную 'a' дважды подряд записываются адреса двух выделенных буферов памяти. Это приводит к потере одного указателя, и анализатор предупреждает об утечке памяти. Ещё одно последствие опечатки – разыменование нулевого указателя внутри функции 'use'.

Во-вторых, память была выделена с помощью оператора 'new', а освобождается с помощью вызова функции 'free'.

Анализатор выдаёт предупреждения, выявляющие все эти дефекты:

  • V522 Dereferencing of the null pointer 'p' might take place. The null pointer is passed into 'use' function. Inspect the first argument. Check lines: 7, 18.
  • V773 The 'a' pointer was assigned values twice without releasing the memory. A memory leak is possible.
  • V519 The 'a' variable is assigned values twice successively. Perhaps this is a mistake. Check lines: 14, 15.
  • V611 The memory was allocated using 'new' operator but was released using the 'free' function. Consider inspecting operation logics behind the 'a' variable.

Другие примеры

Мы подготовили ещё несколько примеров, демонстрирующих различные диагностические возможности анализатора PVS-Studio:

Вы можете как модифицировать предложенные нами примеры, так и составить совершенно новые.

Использование

Несколько вариантов того, что можно сделать с помощью online-запуска анализатора PVS-Studio:

  • Поэкспериментировать с диагностическими возможностями анализатора;
  • Сгенерировать постоянную ссылку на пример срабатывания при помощи кнопки "Share" и прислать её другу или коллеге;
  • При общении с нашей командой в поддержке можно подготовить полноценный пример кода, демонстрирующий проблему, и прислать его с помощью постоянной ссылки;
  • Подготавливать наглядные примеры для статей, посвященных статическому анализу кода.

Чего не стоит пытаться делать:

  • Сравнивать работу статических анализаторов на основании синтетических примеров. Анализаторы чувствительны к тому, как написаны короткие синтетические примеры кода, и работа на них может отличаться от того, как покажет себя анализатор на реальной кодовой базе. См. статью "Анализатор PVS-Studio на сайте godbolt.org и предостережение".
  • Пытаться оценить, насколько анализатор PVS-Studio подходит для вашего проекта. Самый лучший способ - скачать демонстрационную версию анализатора и провести анализ кодовой базы. Также напомним, что PVS-Studio – это не только диагностики, но и развитая инфраструктура, интеграция с Visual Studio, Rider, TeamCity, PlatformIO, Azure DevOps, Travis CI, CircleCI, GitLab CI/CD, Jenkins, SonarQube и т.д.

Студентам и преподавателям на заметку

Compiler Explorer очень удобно использовать для выполнения коротких лабораторных работ по программированию. Можно написать код, проверить, что он компилируется, запустить его и увидеть результат работы. Затем можно создать ссылку и отправить для проверки преподавателю.

Теперь ко всему этому прибавилась ещё и возможность проверить код с помощью PVS-Studio и тем самым познакомиться с методологией статического анализа. Мы знаем, что PVS-Studio активно бесплатно используется студентами и преподавателями. Теперь для тех, кто использует Compiler Explorer для обучения языку C и C++, применять PVS-Studio станет совсем просто и удобно.

Дополнительные ссылки

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