Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top
menu mobile close menu
Проверка проектов
Дополнительная информация
toggle menu Оглавление

V3144. This file is marked with a copyleft license, which may require you to disclose source code and modifications of the file.

14 Май 2026

Анализатор обнаружил в файле copyleft-лицензию, которая может накладывать требования на раскрытие исходного кода при распространении или модификации. В зависимости от типа лицензии (strong или weak copyleft) эти требования могут распространяться как на весь проект, так и только на его отдельные части, что может быть критично для коммерческого использования.

Если вы разрабатываете открытый проект, то можно просто игнорировать это предупреждение и отключить его.

Пример комментария, на который анализатор выдаст предупреждение:

/*  This program is free software: you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation, either version 3 of the License, or
 *  (at your option) any later version.
 *
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *  You should have received a copy of the GNU General Public License
 *  along with this program.  If not, see <https://www.gnu.org/licenses/>.
 */

Примечание N1. Диагностическое правило поддерживает обнаружение лицензий по SPDX-идентификаторам.

Примечание N2. Если указано несколько SPDX-идентификаторов и хотя бы один из них соответствует copyleft-лицензии, то анализатор выдаст предупреждение. Это обусловлено тем, что анализатор не может достоверно определить, какая именно лицензия применяется в производном проекте.

Пример SPDX-идентификатора, на который анализатор выдаст предупреждение:

// spdx-license-identifier: MPL-2.0

Для закрытых проектов

Если в закрытый проект добавить файл с сильной (strong) copyleft-лицензией, например GPL, то остальной исходный код необходимо будет открыть из-за особенностей данной лицензии.

Сильные (strong) copyleft-лицензии называют "вирусными" лицензиями из-за их свойства распространяться на остальные файлы проекта. Проблема в том, что использование хотя бы одного файла с подобной лицензией в закрытом проекте автоматически делает весь исходный код открытым и обязывает распространять его вместе с бинарными файлами.

Если в закрытый проект добавить файл или библиотеку со слабой (weak) copyleft-лицензией, например LGPL, то при определённых условиях может потребоваться раскрыть код самой библиотеки и её модификаций, тогда как остальная часть проекта может оставаться закрытой.

На данный момент диагностическое правило поддерживает следующие лицензии:

Тип

Список лицензий

Strong copyleft

AGPL, EUPL, GPL, NGPL, NPOSL-3.0, OSL, RPL, SSPL

Weak copyleft

Artistic-2.0, CATOSL-1.1, CDDL, CPL, EPL, LGPL, MPL

Есть следующие варианты, как вы можете поступить, обнаружив в закрытым проекте использование файлов с copyleft-лицензий:

  • отказаться от использования данного кода (библиотеки) в своём проекте;
  • заменить используемую библиотеку;
  • сделать свой проект или его часть открытыми (в случае weak copyleft-лицензии).

Для открытых проектов

Мы понимаем, что это диагностическое правило неуместно для открытых проектов. Команда PVS-Studio способствует развитию открытых проектов, помогая исправлять в них ошибки и предоставляя бесплатные варианты лицензий. Однако наш продукт является B2B решением, и поэтому это правило включено по умолчанию.

Если же ваш код распространяется под одной из указанных выше copyleft-лицензий, то вы можете отключить это правило следующими способами:

  • Если вы используете PVS-Studio с помощью плагина для IDE, то выключить диагностическое правило можно прям в нём. Для этого перейдите в настройки плагина > Detectable Errors > General Analysis и снимите галочку с пункта V3144. Обратите внимание, что эта настройка влияет только на отображение предупреждения в плагине. При открытии сохранённого отчёта на другой машине или конвертации результатов анализа в другой формат отключенные таким образом предупреждения могут появиться снова.
  • Если вы хотите выключить правило сразу для всей команды или полностью убрать его из отчётов анализатора, то можете воспользоваться файлом конфигурации диагностических правил анализатора (pvsconfig). Для этого добавьте в него строку //-V::3144. Дополнительную информацию об отключении диагностических правил с помощью комментариев можно найти в документации.
  • Если для конвертации отчётов вы используете утилиту Plog Converter, то с помощью флага -d можно убрать из результирующего отчёта эти предупреждения.

Пополнение списка copyleft-лицензий

Если вам известны другие copyleft-лицензии, требующие раскрытия исходного кода, и которые в данный момент не выявляет инструмент, то вы можете сообщить нам о них через форму обратной связи. Мы добавим их выявление в последующих релизах.

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