﻿# Бесплатный CppCat для студентов

CppCat – это статический анализатор кода, интегрирующийся в среду Visual Studio 2010\-2013\. Анализатор предназначен для регулярного использования и позволяет выявить множество ошибок и опечаток в программах на языке Си и Си\+\+\. С целью его популяризации мы решили выдавать бесплатные лицензии всем студентам, которые к нам обратятся\. Достаточно прислать фотографию студенческого билета или зачётной книжки\.


> К сожалению, мы больше не развиваем и не поддерживаем проект CppCat\\\. Вы можете почитать \[здесь\]\(https://pvs\-studio\.ru/ru/blog/posts/0320/\) о причинах\\\.

![0290_Free_CppCat_for_Students_ru/image1.png](https://import.viva64.com/docx/blog/0290_Free_CppCat_for_Students_ru/image1.png)

## Пара слов о статическом анализе кода

Инструменты статического анализа кода обращают внимание программиста на те места, которые с высокой вероятностью содержат ошибку\. Простой пример:

```cpp
double var_z;
....
var_z = ( var_z - 16 / 116 ) / 7.787;
```

С точки зрения языка программирования и компилятора это корректный код\. Вполне обычна ситуация, когда при делении целочисленного числа 16 на целочисленное число 116 мы получим 0\. Такое бывает нужно\. Однако, анализатор смотрит более широко и обнаруживает ошибочный паттерн\. Если результат такого целочисленного деления потом используется совместно с типом double, то это подозрительно\.

Анализатор укажет на это подозрительное деление предупреждением: V636 The '16 / 116' expression was implicitly casted from 'int' type to 'double' type\. Consider utilizing an explicit type cast to avoid the loss of a fractional part\. An example: double A \= \(double\)\(X\) / Y;\. color\.c 125

Скорее всего, следовало написать так:

```cpp
var_z = ( var_z - 16.0 / 116.0 ) / 7.787;
```

Теперь значение дроби равно не 0, а 0,137931\.

Можно рассматривать инструменты статического анализа как расширение диагностик компилятора\. В отличие от компилятора, анализаторы работают с более высокоуровневыми конструкциями и, опираясь на эмпирику, пытаются угадать, работает ли код так как задумывал программист или нет\.

## Немного об анализаторе CppCat

[CppCat](https://pvs-studio.ru/ru/cppcat/) – простой в настройке и использовании статический анализатор кода\. Он отлично подходит на роль первого инструмента при знакомстве с инструментами статического анализа\. Он уступает по функциональным возможностям своему старшему брату PVS\-Studio \(см\. [сравнение](https://pvs-studio.ru/ru/blog/posts/0258/)\)\. Но для большинства задач его более чем достаточно\. В любом случае, функциональности CppCat полностью достаточно для студентов и индивидуальных разработчиков\.

Анализатор интегрируется с Visual Studio 2010, 2012, 2013\. К сожалению, CppCat не встраивается в Express editions\. С этим ничего нельзя поделать\. Visual Studio Express editions не поддерживают модули расширения \(плагины\)\.

Анализатор поддерживает: C, C\+\+, C/CLI, C/CX\.

Важной особенностью является возможность автоматического анализа изменённого кода\. После компиляции изменённых файлов CppCat в фоновом режиме запускает анализ и выдаёт предупреждение, если нашёл что\-то подозрительное\. Это позволяет обнаружить ошибки на самом раннем этапе и тем самым сэкономить время на её поиск и исправление\.