В каком файле указываются переменные для директивы конфигурации
В этом материале мы разберем особенности применения директив управления при описании зон в master файлах. Кроме стандартных директив $ORIGIN и $INCLUDE будут также рассмотрены $TTL и $GENERATE.
Наиболее используемая директива управления - $ORIGIN. Она позволяет определять текущее имя домена. Поясним что это такое. При описании файла конфигурации named в качестве первого параметра директив primary, secondary (файл конфигурации BIND 4) и директивы zone (файл конфигурации BIND 8 или 9) указывается имя зоны, например:
/*
файл настройки для BIND 9
*/
options directory "/etc/namedb";
>;
zone "kyky.ru" in type master;
file "kyky.ru";
>;
zone "first.kyky.ru" in type slave;
file "first.kyky.ru";
masters ;
>;
Что делать, если нужно в описание зоны включить запись описания хоста из другой зоны, например из зоны делегированной данным сервером другому серверу:
Вообще говоря, основное назначение $ORIGIN - это упрощение содержания файла описания зоны при определении поддоменов в той же зоне, где описан и выше стоящий домен:
Еще несколько лет назад довольно часто можно было видеть в файлах описания зон следующую картину:
Тем не менее, существует процедура делегирования зон ответственности, и там возникает ситуация, когда IP-адрес сервера доменных имен нельзя получить иначе, как из зоны, в которой описано делегирование.
В этом случае отклик нашего сервера называют рефералом (refferal) и он содержит IP-адреса серверов доменных имен в качестве дополнительной информации. Эти адресные записи принято называть присоединенными (glue - буквально "приклеенные").
Новые версии BIND (4.9 и выше) отслеживают этот момент, а вот более старые версии такой проверки не делают. Администраторы системы доменных имен включали такие "приклеенные" записи для того, чтобы сэкономить на трафике (нет нужды опрашивать серверы доменных имен).
О "приклеенных" записях подробно поговорим позже при описании адресных и NS записей.
Директива $INCLUDE используется для того, чтобы в файл описания зоны можно было включить содержание другого файла. Так рекомендуется поступать при описании больших зон, разбивая их на небольшие фрагменты. При этом имя включаемого файла должно быть описано либо полностью от корня файловой системы, либо оно будет привязано к директории, указанной в файле named.boot или named.conf.
В данном случае указан полный путь, и именно он будет использоваться при доступе к файлу.
Рассмотрим теперь еще две директивы управления, которые сравнительно недавно появились в файлах описания зон: $TTL и $GENERATE.
Директива $TTL определяет время хранения записи описания ресурсов в кэше resolver, а если resolver "глупый" (stub), т.е. не имеет кэша и посылает только рекурсивные запросы, то $TTL будет определять время хранения RR в кэше локального сервера доменных имен, который выполняет запросы "глупого" resolver.
Директиву $TTL следует указывать прямо перед записью SOA в файле описания зоны. $TTL связана с определением 32-битового значения, поэтому может принимать значения от 0 до 2147483647(RFC 2181).
Вообще говоря, администратор серверов BIND версий 8 или 9 имеет возможность определять максимальное время кэширования для записи описания ресурса. Делается это в файле конфигурации named.conf. По умолчанию это время равно одной неделе.
В материале "Описание зоны. Формат записи описания ресурсов (RR)" было указано, что при переходе со старых версий BIND на новые не нужно изменять файлы описания зон, т.к. формат RR не изменился. Как теперь понятно, это не совсем так. Во всяком случае, изменилось назначение одного из атрибутов SOA и, как следствие стал необходима директива управления $TTL.
Конечно, разработчики BIND понимают, что в сети стоит большое число серверов, о которых администраторы просто забыли, а поэтому в BIND заложены разумные значения времена кэширования (TTL) по умолчанию.
Директива $GENERATE призвана упростить процесс создания фала описания зоны. Ее главное назначение заключается в том, чтобы сократить число регулярных записей, которые отличаются друг от друга одним или несколькими символами. Например, если стандартный набор записей в фале описания зоны выглядит, как:
host1 IN A 192.168.0.1
host2 IN A 192.168.0.2
…
host10 IN A 192.168.0.10
То запись с использованием $GENERATE будет выглядеть примерно так:
$GENERATE 1-10 $ IN A 192.168.0.$
Таким образом, 10 записей мы заменили одной.
Очень полезна данная запись в случае, когда нужно определять обратную зону для сети класса С (в нотации CIDR маскированы первые 24 бита), которая разбита провайдером на подсети, и эти подсети розданы различным клиентам (см. RFC 2317). Оставим саму проблему за кадром до того момента, когда нам действительно понадобится делегировать подобного рода обратные зоны, а здесь приведем только ту часть файла описания "обратной" зоны, в которой применяется директива управления $GENERATE:
В данном случае $GENERATE используется для производства однотипных RR.
Следует отметить, что $GENERATE это не стандартная директива, а расширение директив управления пакета BIND.
Поведение Apache контролируется с помощью настроек и директив, применяемых в текстовых файлах конфигурации, которые обычно заканчиваются расширением « .conf ».
Обратите внимание, что htaccess не является расширением; это имя файла. В UNIX-подобных операционных системах точка ( . ) Перед именем файла означает, что файл скрыт.
Учитывая их расположение в файловой системе, не все директивы могут быть применены в файлах .htaccess , так как некоторые из них могут просто быть недействительными. Каждая строка в файле конфигурации должна начинаться с одного из следующих:
Поддержание гибкости
Как видно из приведенного выше примера, вы можете включить определенный файл по имени, каталог (и все файлы и подкаталоги в нем) или несколько файлов с помощью подстановочных знаков.
Дополнительные настройки
В моем предыдущем уроке по Apache вы узнали некоторые основные директивы, управляющие поведением Apache. В этом уроке мы рассмотрим несколько расширенных директив, начиная с <Directory> .
Директива <Directory>
Директива <Directory> позволяет вам указать настройки и директивы, которые будут применяться к каталогам и подкаталогам. Это дает вам возможность делать все что угодно, например, помимо прочего, ограничивать доступ к определенным каталогам и файлам, а также включать или отключать определенные параметры для определенных каталогов.
Теги <Directory> принимают путь и содержат блок параметров, которые будут применены к этому каталогу и его подкаталогам. Вот пример:
Открывающий <Directory> в этом примере указывает путь к / , что означает корневой каталог и все его подкаталоги и файлы. Параметры, определенные внутри тегов <Directory> применяются к / path (по сути, ко всему в корне).
Обратите внимание, что htaccess не является расширением; это имя файла.
Директива Options объявляет, какие функции сервера действительны для указанного каталога. В этом примере никакие параметры недопустимы для пути / . Но вы можете указать любое количество параметров, например, разрешить символические ссылки, разрешить выполнение сценариев CGI, разрешить включения на стороне сервера и многое другое.
Директива AllowOverride сообщает серверу, какие параметры объявлены в тегах <Directory> для переопределения, если они сбрасываются в файле .htaccess . Когда сервер находит файл .htaccess , ему необходимо знать, какие директивы, объявленные в этом файле, могут переопределять более ранние директивы конфигурации. Если для параметра AllowOverride установлено значение None , как показано в примере выше, то никакие директивы не будут переопределены, а любые повторные объявления в файлах .htaccess полностью игнорируются.
Если для директивы AllowOverride установлено значение All , то любая директива, повторно объявленная в файле .htaccess будет переопределять более ранние директивы конфигурации. AllowOverride может принимать определенные типы директив, которые могут быть переопределены, в то время как остальные будут игнорироваться.
Deny и Allow контролируют доступ к каталогу, указанному в открывающем теге, и имеют приоритет через директиву Order .
В вышеприведенном примере Order Deny, Allow означает, что всем подключающимся хостам или IP-адресам запрещен доступ к корневому каталогу, кроме тех, которые объявлены хорошими хостами. Order Allow, Deny с другой стороны Order Allow, Deny будет означать, что всем хостам и IP-адресам будет разрешен доступ к корневому каталогу, кроме тех, которые объявлены как плохие или занесены в черный список.
Файл php3.ini читается при запуске синтаксического анализатора PHP. Для версий серверного модуля PHP, это случается только один раз, когда запускается веб-сервер. Для версии CGI это случается на каждом вызове.
Вы можете посмотреть установочные параметры большинства значений конфигурации вызвав функцию phpinfo() .
Основные директивы конфигурации
Определяет имя файла, который автоматически проверяется после основного файла. Файл включается так же, как если бы была вызвана функция include() , с использованием include_path.
Специальное значение none запрещает авто-добавление.
Примечание: Если сценарий обрывается функцией exit() , авто-добавление не произойдет.
Определяет имя файла, который автоматически проверяется перед основным файлом. Файл включается так же, как если бы была вызвана функция include() , с использованием include_path.
Специальное значение none запрещает авто-добавление. cgi_ext string display_errors boolean
Это определяет, должны ли ошибки печататься на экране как часть HTML вывода или нет. doc_root string
Главный каталог("root directory") PHP на сервере. Используется только когда он не пустой. Если PHP сконфигурирован при помощи safe mode, то никакие другие файлы за пределами этого каталога не обслуживаются. engine boolean
Имя файла, куда сохраняется журнал ошибок(log file) сценариев. Если используется специальное значение syslog , ошибки отправляются в системный журнал(system logger). В UNIX'е это syslog(3), а в Windows NT это журнал событий (event log). Системный журнал не поддерживается в Windows 95. error_reporting integer
Значение по умолчанию - 7 (показываются нормальные ошибки, нормальные предупреждения и синтаксические ошибки). open_basedir stringОграничивает файлы, которые могут открываться PHP в определенном директории-дереве.
Когда сценарий пытается открыть файл с помощью, например, fopen или gzopen, наличие/расположение файла проверяется. Когда файл находится за пределами определенного директория-дерева, PHP откажется открыть его. Все символьные ссылки определены, так что нет возможности избежать этого ограничения с помощью symlink.
Специальное значение . показывает что каталог, в котором находится сценарий, используется как основной каталог.
По умолчанию допускается открытие всех файлов. gpc_order string
Определяет список каталогов где будут располагаться файлы для функций require() , include() и fopen_with_path() . Формат подобен формату системной переменной окружения PATH : список каталогов разделяется двоеточием в UNIX или точкой с запятой в Windows.
Пример 4-1. UNIX include_path
Пример 4-2. Windows include_path
Значением по умолчанию этой директивы является . (только текущий каталог). isapi_ext stringУстанавливает magic_quotes состояние для GPC (Get/Post/Cookie) операций. Когда magic_quotes включено (on), все ' (одиночные кавычки), " (двойные кавычки), \ (обратные слэши) и нулевые значения (NUL's) записываются с обратной косой чертой автоматически. Если также включено magic_quotes_sybase, одиночная кавычка записывается с дополнительной одиночной кавычкой вместо обратной косой черты. magic_quotes_runtime boolean
Если magic_quotes_runtime разрешено, большинство функций, которые возвращают данные из любого внешнего источника разной природы, включая базы данных и текстовые файлы, будут иметь кавычки, записанные с обратной косой чертой. Если magic_quotes_sybase также включены, одиночная кавычка записывается с дополнительной одиночной кавычкой вместо обратной косой черты. magic_quotes_sybase boolean
Если magic_quotes_sybase также разрешено, одиночная кавычка записывается с дополнительной одиночной кавычкой вместо обратной косой черты, если magic_quotes_gpc или magic_quotes_runtime разрешены. max_execution_time integer
Эта установка определяет максимальное время в секундах допустимое для сценария, прежде чем он будет прекращен анализатором. Это помогает предохраниться от плохо/некорректно написанных сценариев. memory_limit integer
Эта установка определяет максимальный размер памяти в байтах, допустимый для этого сценария. Это помогает запретить плохо/некорректно написанным сценариям использовать всю доступную память на сервере. nsapi_ext string
Временный каталог, используемый для хранения файлов при их загрузке на сервер. Должен допускать запись, независимо от того, каким пользователем PHP используется. user_dir string
Основное имя каталога, используемого в домашнем каталоге пользователей для файлов PHP, например public_html . warn_plus_overloading boolean
Директивы Конфигурации Почты
Указывает где может быть найдена программа sendmail , обычно это /usr/sbin/sendmail или /usr/lib/sendmail
configure делает честную попытку определить это за вас и устанавливает значение по умолчанию, но в случае неудачи вы можете установить это здесь.
Системы не использующие sendmail должны установить оболочку/замену sendmail их предлагаемой системой почты, если имеется. Например, Qmail пользователи могут указать /var/qmail/bin/sendmail .
Директивы Конфигурации Safe Mode
Устанавливает допустимость PHP safe mode. Читайте главу Безопасность (Security) для большей информации safe_mode_exec_dir string
Если PHP используется в safe mode, system() и другие функции, выполняющие системные программы, отказываются запускать программы, которые находятся не в этом каталоге.
Debugger Configuration Directives
DNS-имя или IP-адрес хоста используемого отладчиком. debugger.port string
Номер порта используемого отладчиком. debugger.enabled boolean
Задает допустимость использования отладчика.
Директивы Загрузки Расширений(Extension Loading)
Эта директива действительно полезна только в модуле PHP под Apache. Вы можете разрешать/запрещать динамическую загрузку расширений PHP функцией dl() раздельно по каталогам и/или по виртуальным серверам.
Основная причина для выключения динамической загрузки - безопасность. С динамической загрузкой, можно игнорировать все ограничения safe_mode и open_basedir.
По умолчанию динамическая загрузка должна допускаться, за исключением случаев, когда используется safe-mode. В safe-mode всегда недопустимо использование dl() . extension_dir string
В каком каталоге PHP должен искать динамически загружаемые расширения. extension string
Какие динамически загружаемые расширения загрузить, при запуске PHP.
Директивы конфигурации MySQL
Допустить постоянные/устойчивые MySQL соединения. mysql.max_persistent integer
Максимальное число постоянных MySQL соединений за один процесс. mysql.max_links integer
Максимальное число MySQL соединений за процесс, включая постоянные соединения.
Директивы конфигурации mSQL
Допустить постоянные mSQL соединения. msql.max_persistent integer
The maximum number of persistent mSQL connections per process. msql.max_links integer
Максимальное число постоянных mSQL соединений за один процесс.
Директивы конфигурации Postgres
Допустить постоянные/устойчивые соединения Postgres. pgsql.max_persistent integer
Максимальное число постоянных соединений Postgres за процесс. pgsql.max_links integer
Максимальное число Postgres соединений за процесс, включая постоянные соединения.
Директивы Конфигурации Sybase
Допустить постоянные Sybase соединения. sybase.max_persistent integer
Максимальное число постоянных Sybase соединений за процесс. sybase.max_links integer
Максимальное число Sybase соединений за процесс, включая постоянные соединения.
Директивы Конфигурации Sybase-CT
Допустить постоянные Sybase-CT соединения. По умолчанию включено. sybct.max_persistent integer
Максимальное число постоянных Sybase-CT соединений за процесс. По умолчанию значение -1 означающее неограниченное количество. sybct.max_links integer
Максимальное число Sybase-CT соединений за процесс, включая постоянные соединения. По умолчанию значение -1 означающее неограниченное количество. sybct.min_server_severity integer
Максимальное время (в секундах) ожидания повторной попытки соединения, прежде чем будет отказ. Имейте в виду, что если max_execution_time превышен когда время попытки соединения закончится, ваш сценарий будет расторгнут прежде, чем будут предприняты какие-либо действия на случай отказа. По умолчанию - одна минута. sybct.timeout integer
Максимальное время(в секундах)ожидания окончания select_db или выполнения запроса. Имейте в виду, что если max_execution_time превышен, когда время функционирования истекает, ваш сценарий будет расторгнут прежде, чем будут предприняты какие-либо действия на случай отказа. По умолчанию не ограничено. sybct.hostname string
Имя хоста, с которым вы хотите соединиться, для показа sp_who. По умолчанию - none.
Директивы Конфигурации BC Math
Количество десятичных цифр для всех функций bcmath.
Директивы Конфигурации Возможностей Броузера
имя файла возможностей браузера.
Директивы Конфигурации Унифицированных ODBC
ИСТОЧНИК ДАННЫХ ODBC, для использования, если ничего не определено в odbc_connect() или odbc_pconnect() . uodbc.default_user string
Имя пользователя, используемое если нет определений в odbc_connect() или odbc_pconnect() . uodbc.default_pw string
Допустить постоянные/устойчивые ODBC соединения. uodbc.max_persistent integer
Максимальное число постоянных ODBC соединений за процесс. uodbc.max_links integer
Максимальное число ODBC соединений за процесс, включая постоянные соединения.
Модуль Apache
Директивы конфигурации модуля Apache
Модуль CGI переадресации module/action
Виртуальные хосты
Безопасность
PHP - мощный язык и интерпретатор, независимо от того, включен ли он в веб-сервер как модуль или выполняется как разделение исполнимых файлов(binary) CGI , он может иметь доступ к файлам, выполнять команды и открывать сетевые соединения на сервере. Эти свойства дают возможность выполнять что-нибудь на веб-сервере небезопасное по умолчанию. PHP разработан специально для того чтобы быть более безопасным языком для написания программ CGI, чем Perl или C.
С правильным выбором compile-time и runtime опций конфигурации он дает вам как раз ту комбинацию свободы и безопасности, которая вам нужна.
Как есть много разных путей использования PHP, есть и большой выбор конфигураций, управляющих поведением PHP. Большой выбор опций гарантирует, что вы можете использовать PHP для многих целей, но это также означает что есть комбинации этих опций и, также, конфигураций сервера, которые заканчиваются небезопасной установкой. Эта глава объясняет различные комбинации опций конфигурации и ситуации, в которых они могут быть удачно использованы.
CGI binary
Использование PHP как исполнимых файлов CGI - выбор для установок, которые по некоторой причине не хотят внедрить PHP как модуль в программное обеспечение сервера (подобно Apache), или PHP будет использоваться с другими типами оболочек CGI, чтобы создать надежное окружение chroot и setuid для сценариев. Эта установка обычно включает установку выполняемого(binary) PHP в каталог cgi-bin на веб-сервере. Бюллетень CERT CA-96.11 рекомендует кроме того, устанавливать любые интерпретаторы в cgi-bin. Даже если исполнимый PHP может быть использован в качестве автономного интерпретатора, PHP разработан для того чтобы предохранить от атаки, которую эта установка делает возможной:
Информация запроса в url после знака вопроса (?) проходит как аргументы командной строки интерпретатору через интерфейс CGI. Обычно переводчики открывают и выполняют файл указанный как первый аргумент в командной строке.
Перенаправление может быть сконфигурировано, например в Apache, директивами AddHandler и Action (см. ниже).
Обычно переадресация в конфигурации Apache сделана со следующими директивами:
Эта опция была протестирована только с веб-сервером Apache, и полагается на Apache чтобы установить не-стандартную внешнюю переменную CGI REDIRECT_STATUS для перенаправленных запросов. Если ваш сервер паутины не поддерживает какого-либо способа сообщать что запрос прямой или перенаправленный, Вы не можете использовать эту опцию и Вы должны использовать один из других путей запуска версии CGI, документированной здесь.
Размещение активного содержания, такого как скрипты и модули, в каталогах документов веб-сервера иногда является небезопасной практикой. Если при некоторой ошибке конфигурации сценарии не выполняются, они отображаются как обычные HTML документы, что может закончиться утечкой интеллектуальной собственности или информации безопасности подобно паролям. Поэтому многие сисадмины предпочитают устанавливать другие каталоги для сценариев, которые будут доступны только через PHP CGI и, следовательно, всегда проинтерпретированы и не отображены как таковые.
Также, если недоступен метод перенаправления неуверенных запросов, как описано в предыдущем разделе, необходимо установить корневой каталог(doc_root) сценариев, который отличается от корневого каталога веб-документов.
Вы можете установить корневой каталог для скриптов директивой конфигурации doc_root в файле php3.ini , или вы можете установить переменную окружения PHP_DOCUMENT_ROOT . Если это установлено, CGI-версия PHP всегда будет добавлять doc_root и путь к файлу в запросах, так что вы всегда будете уверенны что за пределами этого каталога скрипты выполняться не будут (кроме user_dir //см.ниже).
user/doc.php3 не даст результата при открытии файла из каталога пользователя, но вызывается файл
user/doc.php3 из каталога doc_root (да,имя каталога начинается с тильды [
user/doc.php3 откроет файл doc.php3 в каталоге public_php домашнего каталога пользователя. Если это /home/user , то выполняется /home/user/public_php/doc.php3 .
user_dir задается независимо от doc_root , так что вы можете контролировать доступ к document root и user directory отдельно.
Очень безопасная опция должна установить синтаксический анализатор PHP где-нибудь вне дерева файлов web. В /usr/local/bin , например. Обратная сторона этой опции заключается в том что вы должны вставлять строку подобно:
Чтобы PHP получил возможность корректно оперировать с PATH_INFO и PATH_TRANSLATED при такой установке, php анализатордолжен быть скомпилирован с опцией конфигурации --enable-discard-path
Для правил анализа кода доступно несколько параметров конфигурации. Эти параметры указываются в виде пар "ключ-значение" в одном из следующих файлов конфигурации анализатора:
- Файл EditorConfig: параметры конфигурации на основе файлов или папок.
- Глобальный файл AnalyzerConfig: параметры конфигурации на уровне проекта. Полезно, когда некоторые файлы проекта находятся за пределами папки проекта.
EditorConfig
Файлы EditorConfig используются для предоставления параметров, которые применяются к конкретным исходным файлам или папкам. Параметры размещаются под заголовками разделов, позволяя идентифицировать соответствующие файлы и папки. Добавьте запись для каждого правила, которое необходимо настроить, и разместите его в соответствующем разделе расширения имени файла, например [*.cs] .
Соглашения о файлах EditorConfig можно применять к папке, проекту или всему репозиторию, помещая файл в соответствующий каталог. Эти параметры применяются при выполнении анализа во время сборки, а также при редактировании кода в Visual Studio.
Параметры EditorConfig применяются только к исходным файлам в проекте или каталоге. Файлы, которые включены в проект как AdditionalFiles, не считаются исходными файлами, и параметры EditorConfig к ним не применяются. Чтобы применить параметр правила к файлам, не являющимся исходными, укажите параметр в глобальном файле конфигурации.
Если у вас уже есть файл .editorconfig для параметров редактора, таких как размер отступа или необходимость обрезать пробелы в конце, параметры конфигурации анализа кода можно поместить в тот же файл.
Visual Studio предоставляет шаблон элемента .editorconfig, который упрощает добавление одного из этих файлов в проект. Дополнительные сведения см. в разделе Добавление файла EditorConfig в проект.
Пример
Ниже приведен пример файла EditorConfig для настройки параметров и важности правила:
Глобальный AnalyzerConfig
В отличие от файлов EditorConfig, глобальные файлы конфигурации не позволяют настраивать параметры стиля редактора в интегрированных средах разработки, например размеры отступа или обрезку конечных пробелов. Вместо этого они предназначены исключительно для указания параметров конфигурации анализатора уровня проекта.
Формат
В отличие от файлов EditorConfig, которые должны иметь заголовки разделов, например [*.cs] , для обнаружения подходящих файлов и папок, глобальные файлы AnalyzerConfig не имеют заголовков разделов. Вместо этого им требуется запись верхнего уровня формы is_global = true , чтобы отличать их от обычных файлов EditorConfig. Это указывает, что все параметры в файле применяются ко всему проекту. Пример:
Именование
По именованию имеются следующие рекомендации:
- Пользователям следует давать глобальным файлам конфигурации имена .globalconfig.
- Создателям пакетов NuGet нужно давать глобальным файлам конфигурации имена <%Package_Name%>.globalconfig.
- Глобальные файлы конфигурации, создаваемые с помощью инструментов MSBuild, следует называть <%Target_Name%>_Generated.globalconfig или подобным образом.
Запись верхнего уровня, is_global = true , требуется, даже если файл называется .globalconfig .
Пример
Ниже приведен пример глобального файла AnalyzerConfig для настройки параметров и серьезности правил на уровне проекта:
Приоритет
Как файлы EditorConfig, так и глобальные файлы AnalyzerConfig задают пару "ключ-значение" для каждого параметра. Конфликты возникают, когда имеется несколько записей с одинаковым ключом, но разными значениями. Для разрешения конфликтов действуют следующие правила приоритета.
Параметры серьезности
Для параметров конфигурации уровня серьезности действуют дополнительные правила приоритета:
Параметры серьезности, указанные в командной строке как параметры компилятора ( -nowarn или -warnaserror ), всегда переопределяют параметры конфигурации серьезности, указанные в EditorConfig и глобальных файлах AnalyzerConfig.
Правила приоритета для записей с конфликтующим уровнем серьезности из файла ruleset и конфигурации EditorConfig или глобального файла AnalyzerConfig не определены.
Файлы ruleset являются нерекомендуемыми. Вместо них следует использовать EditorConfig и глобальные файлы AnalyzerConfig. Рекомендуем преобразовать файлы ruleset в эквивалентный файл EditorConfig.
Сведения о правилах приоритета для связанных параметров серьезности с различными ключами, например при указании различных уровней серьезности для одного правила и категории, к которой относится правило, см. в разделе Параметры конфигурации для анализа кода.
Читайте также: