﻿# V760\. Two identical text blocks were detected\. The second block starts with NN string\.

Анализатор обнаружил код, который возможно содержит опечатку\. Высока вероятность, что подобный код был создан с использованием подхода Copy\-Paste\. Сообщение V760 выдаётся на два одинаковых блока текста, идущих один за другим\. Данная диагностика в основном опирается на эвристический метод и поэтому может выдавать ложные срабатывания\.

Рассмотрим пример:

```cpp
void Example(int *a, int *b, size_t n)
{
  ....
  for (size_t i = 0; i != n; i++)
    a[i] = 0;
  for (size_t i = 0; i != n; i++)
    a[i] = 0;
  ....
}
```

Код писался с помощью Copy\-Paste\. Во втором блоке забыли изменить имя массива\. На самом деле, код должен быть таким:

```cpp
void Example(int *a, int *b, size_t n)
{
  ....
  for (size_t i = 0; i != n; i++)
    a[i] = 0;
  for (size_t i = 0; i != n; i++)
    b[i] = 0;
  ....
}
```

Анализатор не выдаёт сообщение, если найдено больше двух блоков текста\. Пример:

```cpp
void Foo();
void Example()
{
  ....
  Foo();
  Foo();
  Foo();
  Foo();
  ....
}
```

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

```cpp
switch(t) {
  case '!': InvokeMethod(&obj_Sylia, "!", 1); break; 
  case '~': InvokeMethod(&obj_Sylia, "~", 1); break; 
  case '+': InvokeMethod(&obj_Sylia, "+", 1); break;
  case '-': InvokeMethod(&obj_Sylia, "-", 1); break; 
    break;
  default:
    SCRIPT_ERROR(PARSE_ERROR); 
}
```

Нужно присмотреться\. В данном случае мы имеем дело с очень коротким повторяющимся блоком\. Этот блок \- оператор 'break'\. Один из операторов здесь лишний\. В данном примере это не приводит к настоящей ошибке, но лишний 'break' стоит удалить:

```cpp
switch(t) {
  case '!': InvokeMethod(&obj_Sylia, "!", 1); break; 
  case '~': InvokeMethod(&obj_Sylia, "~", 1); break; 
  case '+': InvokeMethod(&obj_Sylia, "+", 1); break;
  case '-': InvokeMethod(&obj_Sylia, "-", 1); break; 
  default:
    SCRIPT_ERROR(PARSE_ERROR); 
}
```

**Примечание**

Дублирование кода само по себе не является ошибкой\. Однако, даже если ошибки нет, предупреждение V760 может служить подсказкой, что одинаковые блоки кода стоит вынести в функцию\. См\. также диагностику V761\.