﻿# V6136\. Values of bit flags are duplicated\.

Анализатор обнаружил группу констант, которая выглядит как набор битовых флагов: идущие подряд static final поля, переменные или enum поля, инициализированные целочисленными значениями, которые являются степенями двойки\. В такой группе одно из значений повторяется\. Скорее всего, это опечатка, допущенная при добавлении нового флага или при копировании соседней строки\.

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

```cpp
public class FilePermission {
  public static final int READ    = 0x01;
  public static final int WRITE   = 0x02;
  public static final int EXECUTE = 0x04;
  public static final int DELETE  = 0x04;  // <=
}
```

Константы `EXECUTE` и `DELETE` разделяют одно и то же значение\. Проверка вида `(mask & DELETE) != 0` будет истинной для маски, в которой выставлено только право на выполнение, а сброс одного флага приведёт к сбросу второго\.

Исправленный вариант:

```cpp
public class FilePermission {
  public static final int READ    = 0x01;
  public static final int WRITE   = 0x02;
  public static final int EXECUTE = 0x04;
  public static final int DELETE  = 0x08;
}
```