Я использую функции статического анализа Scrutinizer-CI для обратной связи с моим PHP-кодом. в их документация, у меня есть .scrutinizer.yml
файл в корне моего проекта, который, кажется, успешно настраивает параметры Scrutinizer так, как я хочу. Почти.
Один из этих вариантов dependency_paths
, который позволяет мне указать путь, который содержит зависимость. По словам кого-то, с кем я общался в Scrutinizer …
«Пути, перечисленные в зависимостях, отличаются от полностью исключенных путей тем, что мы смотрим на них, чтобы найти классы или функции, которые они определяют, чтобы сделать анализ других ваших файлов более точным. Однако мы не будем искать никаких проблем в этих файлах».
К сожалению, это не работает для меня. Я использую SAML для аутентификации, и поэтому у меня есть simplesamlphp
папка с моим исходным кодом. (Вы не можете просто включить simplesamlphp через что-то вроде composer, потому что вам нужно отредактировать некоторые файлы конфигурации и так далее в зависимости от того, как вы их используете).
Соответствующая часть моего .scrutinizer.yml
файл выглядит так:
filter:
paths:
- application/*
tools:
php_analyzer:
dependency_paths:
- application/simplesamlphp/*
(The application
папка — это папка корневого уровня в моем исходном коде).
это делает кажется, чтобы предотвратить любые проблемы, найденные в simplesamlphp
папка от влияния на оценку моего кода в Scrutinizer. Тем не менее, Scrutinizer по-прежнему сообщает о тысячах проблем с кодом, найденным в этом simplesamlphp
папку, что затрудняет поиск проблем, которые на самом деле о коде, который я написал.
Я использую dependency_paths
неправильная настройка? Похоже, что это не работает так, как мне сказали, что … оставив меня в замешательстве.
РЕДАКТИРОВАТЬ: Чтобы дать немного больше информации, я могу полностью исключить simplesamlephp
папка с использованием excluded_paths
вариант. Задача состоит в том, чтобы позволить Scrutinizer взглянуть на классы и тому подобное в моих зависимостях (чтобы лучше понять мой код), но не сообщать о каких-либо проблемах, обнаруженных в зависимостях.
РЕДАКТИРОВАТЬ 2: Ну, это интересно. Я экспериментировал с несколькими версиями (соответствующими частями) моего .scrutinizer.yml
файл и увидел следующие результаты.
Во-первых, я просто сказал Scrutinizer полностью исключить simplesamlphp
папка:
filter:
paths:
- application/*
excluded_paths:
- application/simplesamlphp/*
tools:
php_analyzer:
dependency_paths:
- application/simplesamlphp/*
Это позволило мне увидеть проблемы с моим собственным кодом и исправить их. На данный момент оценка моего проекта на Scrutinizer составляет 9,54. Я тогда перестал исключать simplesamlphp
:
filter:
paths:
- application/*
tools:
php_analyzer:
dependency_paths:
- application/simplesamlphp/*
Это изменение внесло 7756 проблем в анализ Scrutinizer, но оставило оценку моего проекта на уровне 9,54 (это означает, что проблемы в simplesamlphp
сообщалось, но не засчитывается против меня). Затем я попытался удалить косую черту и звездочку из пути:
filter:
paths:
- application/*
tools:
php_analyzer:
dependency_paths:
- application/simplesamlphp
Это изменение ввело проблемы 2002 года и исправило 3198 проблем, все из которых (как введенные, так и исправленные) находились в simplesamlphp
папка. Я не ожидал такого эффекта вообще. Это также снизило оценку моего проекта на Scrutinizer до 7,47, что означает, что проблемы в simplesamlphp
папка теперь была засчитана против меня. Затем я попытался изменить синтаксис однострочного массива для dependency_paths
:
filter:
paths:
- application/*
tools:
php_analyzer:
dependency_paths: [application/simplesamlphp]
Это не имело никакого эффекта. Ради тщательности я добавил трейлинг /*
к этому синтаксису массива:
filter:
paths:
- application/*
tools:
php_analyzer:
dependency_paths: [application/simplesamlphp/*]
Эти результаты также удивили меня. Это изменение исправило проблемы 2002 года и вернуло мой счет до 9,54. И исправленные проблемы, и оставшиеся 4519 проблем были в simplesamlphp
папка. Хотя это, кажется, приближает меня к цели, это все же оставляет тысячи проблем из кода в моих зависимых_путях. Я не уверен, что еще можно попробовать на этом этапе, поэтому я, вероятно, вернусь к простому исключению simplesamlphp
папка полностью.
Задача ещё не решена.
Других решений пока нет …