Что это такое esn sonar
ESN sonar что это за программа и нужна ли она?
Всем хеллоу
Я выяснил, что данная программа установилась вместе с компьютерной игрой Battlefield 4. Предназначена для голосового общения.
На другом форуме также узнал некую инфу. Сообщается, что у одного юзера наблюдалась картина, когда не работал левый shift на клавиатуре. Человек не долго думая взял и заменил клавиатуру, но ситуация осталась прежней, человек подумал вот попадос! Методом проб и ошибок, поисков в чем проблема, человек все таки пришел к выводу, что все дело в приложении ESN sonar. Если прекратить работу этого приложения (правый клик по иконке в трее), то левый shift начинает работать как в прежнем режиме, вот такой феномен.
Мы можем сделать уже первое заявление господа, ESN sonar это дополнительное приложение, входящее в состав игры Battlefield 4. Цель у приложения одна, это обеспечение голосовой связи между игроками. Юзеры отмечают также, что Скайп прекрасен, спору нет, но все таки ESN sonar лучше, но такой прикол с шифтом ни в какие ворота не лезет
Один пользователь на форуме Battlefield написал, что у его знакомого такая же ерундовина, так вот знакомый взял и повесил голос на альт вместо шифта и проблемы нет. Попробуйте и вы, если вдруг у вас будет наблюдаться такая проблема.
Так, стоп, голосовой чат вроде есть не в самой игре, а в батллоге, что это такое я не знаю. Но настройку можно произвести в меню группы, нажав на шестеренку над аватарками:
И потом откроются настройки (где кстати и можно изменить кнопку shift):
Программа может быть не только в четвертой версии игры Battlefield, но и в третьей, а может и во второй
Кстати, я не уверен, но вроде бы данный голосовой чат работает по технологии VoIP..
Один юзер написал что он не припомнит чтобы при установке игры были где-то сказано про ESN sonar. С другой стороны если это голосовой чат, то эта программа наверно по мнению производителя обязательно должна быть установлена. Вот примерно как этот чат выглядит (извините за плохое качество картинки):
Вот еще один юзер пишет и все становится на вои места. ESN sonar это часть BF3 ну или BF4 и он просто необходим для работы игрового клиента, что также важно, он зарегистрирован как плагин BF3/BF4.
Можно ли данное приложение отключить? Вроде можно. Но вот есть риск словить какой-то глюк потом с игрой..
Новые сведенья. ENS Sonar обычно ставится при установке плагина в браузере под названием Battlelog. То есть этот плагин спокойно может быть у вас в Google Chrome например… Вот нашел картинку даже по поводу плагина в браузере Хром, смотрите он называется как ESN Sonar API:
Также есть мнение, что даже если удалить данную программу, то игра потом ее снова сама поставит. Правда это или нет я к сожалению проверить не могу
Работает ENS Sonar под процессом SonarHost.exe
Итак ребята, давайте соберем все в кучу и подытожим:
Вот кстати нашел картинку по поводу удаления, вот список программ и здесь находится ESN Sonar (указал стрелочкой), нажимаете правой кнопкой по проге ну и выбираете Удалить и потом нажимаете Далее, все как обычно:
Также я узнал что для данной программы создается специальное правило в штатном виндовском брандмауэре, правило называется ESN Sonar Host Application:
Зеленая иконка означает что доступ в сеть разрешен
Надеюсь вы нашли ответ на свой вопрос. Будем прощаться, удачи вам
Миллионы пользователей обманом открывают вредоносные программы, маскирующиеся под видеоплееры или антивирусные продукты, которые не предлагают заявленных возможностей, но заражают компьютер пользователя и заставляют его платить за несуществующие функции.
Загрузки методом «Drive-by» и распространенные веб-атаки незаметно заражают пользователей, посещающих популярные сайты. Некоторые программы устанавливают руткиты или внедряют вредоносный код в системные процессы. Современное вредоносное ПО может с легкостью обходить, уже недостаточную для защиты конечного пользователя, файловую защиту.
Почему именно защита на основе поведения?
В 2010 году, Symantec обнаружила более 286 миллионов вариантов вредоносных программ и заблокировала более 3 миллиардов атак. В условиях продолжающегося роста вредоносного ПО и его вариантов, Symantec увидела необходимость в создании инновационного подхода, который позволит предотвратить вредоносные инфекции- автоматически и бесшумно, вне зависимости от того, чем занят пользователь и каким образом вирус проник в его систему. Insight Reputation Technology и поведенческая технология Symantec Online Network for Advanced Response (SONAR) компании Symantec, являются двумя из таких подходов.
Защита на основе поведения является более рентабельной по сравнению с файловой эвристикой, поскольку она одновременно может оценивать большие масштабы программ как опасных, так и не представляющих угрозы.
Основными направлениями защиты, которые обеспечивает поведенческая технология Symantec, являются:
— Направленные атаки, включая Advanced Persistent Threats (APT), троянские программы, шпионское ПО, кейлоггеры и общие угрозы «нулевого дня»;
— Загрузки методом drive-by, веб-атаки;
— Атаки типа «Социальной инженерии»: FakeAV (поддельные антивирусы), вредоносные генераторы ключей и кодеки;
— Боты и ботнеты:
— Non-Process and Injected Threats (NPTs)
— Угрозы «нулевого дня»;
— Угрозы, пропущенные другими слоями защиты
— Угрозы, использующие технику руткитов.
В каких случаях осуществляется поведенческая защита?
Независимо от того, запускает ли пользователь вредоносное приложение умышленно, или же оно производит автоматическую попытку установки, SONAR блокирует программу в режиме реального времени, после того, как она была запущена и/или пытается внедрить себя в запущенные процессы (технология NPT). Обеспечивая защиту от Hydraq/Aurora, Stuxnet и вредоносного ПО, такого как Tidsrev и ZeroAccess, она зарекомендовала себя как одну из самых важных технологий защиты конечных точек.
Как это работает? Классификационный движок, основанный в области Искусственного Интеллекта
Symantec создала одну из самых больших баз данных поведенческих профилей во всем мире, имея около 1.2 миллиардов экземпляров приложений. Анализируя поведение хороших и плохих файлов, используя метод машинного обучения, Symantec способна создавать профили для приложений, которые еще не были созданы. Опираясь почти на 1400 различных поведенческих атрибутов и богатый контекст, которые компания получает от других компонентов, таких как Insight, IPS, AV-движок, классификация SONAR способна быстро обнаружить вредоносное поведение и принимать меры по остановке вредоносных приложений до того, как они нанесут ущерб. В 2011 году более 586 миллионов исполняемых DLL-файлов и приложений, были проанализированы с помощью технологии SONAR.
Non-process Based Threat Protection
Современные угрозы не всегда являются отдельными исполняемыми файлами. Зачастую, они пытаются скрыться при помощи инъекций в широко известные запущенные процессы, приложения или другие компоненты, тем самым скрывая свою вредоносную деятельность под видом доверенных процессов (к примеру, системных), или же доверенных приложений. В качестве примера, при выполнении вредоносного приложения, оно может внедрить вредоносный код в запущенные процессы, такие как explorer.exe (процесс оболочки Рабочего стола), Iexplorer.exe (браузер Internet Explorer) или зарегистрировать вредоносные компоненты в качестве расширений для подобных приложений. SONAR предотвращает выполнение кода, введенного в целевой процесс, путем классификации источника, пытающегося сделать инъекцию. Он также классифицирует, и при необходимости останавливает вредоносный код, загружаемый в целевой или доверенный процесс.
Политика Поведенческой блокировки
Загрузка методом «Drive-by» работает, используя уязвимости в браузерных плагинах, таких как Adobe Reader, Oracle Sun Java и Adobe Flash. После того, как уязвимость была обнаружена подобной загрузкой, она может использовать уязвимое приложение в своих целях, т.е. для запуска любого другого приложения. Создавая определение политики Поведенческой блокировки, Symantec может блокировать вредоносные поведения, такие как «Adobe Acrobat не должно создавать другие исполняемые файлы» или «этой DLL запрещена инъекция в процесс explorer.exe», тем самым защищая систему. Это может быть описано как блокировка поведения на основе политики и правил. Эти политики/определения SONAR создаются командой Symantec STAR и автоматически задействованы в блокирующем режиме и не требуют управления. Это предотвращает подозрительное поведение «хороших» приложений, и автоматически защищает пользователей.
Возможность развития в соответствии с непрерывно изменяющимися угрозами, является неотъемлемой частью технологий SONAR, поэтому защита продуктов компании Symantec имеет возможность ориентироваться на угрозы даже завтрашнего, еще не наступившего дня. Когда Symantec обнаруживает новое семейство угроз, такие как новые руткиты, трояны, FakeAV или другие типы вредоносных программ, она может создать новые поведенческие сигнатуры для обнаружения подобных семейств угроз, и доставить их вместе с обновлениями. Поэтому, компании совершенно не обязательно обновлять код самого продукта. Это так называемые поведенческие сигнатуры SONAR Enforcement Policy. Эти сигнатуры можно довольно быстро написать, протестировать и доставить пользователю, и именно они дают SONAR «гибкости» и «адаптивности», что позволяет ей дать ответ на некоторые классы возникающих угроз, имея при этом очень низкий уровень ложных срабатываний.
Так как же работают BPE-сигнатуры?
Давайте взглянем на приложение, которое запускается для выполнения.
1) Оно создает определенные компоненты в директории TEMP
2) Добавляет свои записи в реестр
3) Меняет hosts-файл
4) Оно не имеет интерфейса
5) Оно открывает связи на «высоких» портах
Любая из этих форм поведения сама по себе не может быть «плохой», но в целом ее поведенческий профиль расценивается, как плохой. STAR-аналитик создает правило, в котором указывает, что если имеется определенная последовательность поведения исполняемых файлов с определенными характеристиками Репутации Insight, то продукт должен остановить этот процесс и выполнить откат изменений. SONAR умеет создавать виртуальную песочницу вокруг зараженного, но вполне законного приложения и тем самым может предотвратить любые вредоносные действия зараженного приложения, которое способно нанести вред компьютеру пользователя. Это является совершенно новой парадигмой в сфере конечной защиты пользователя. Она работает за счет использования данных, которые показывают действия приложения, а не его внешний вид.
Автоматическое Восстановление вредоносных файлов с помощью песочницы
Защита на основе поведения в режиме реального времени отслеживает и помещает в песочницу приложения, процессы и события во время того, как они происходят. Системные изменения могут быть отменены с целью предотвращения вредоносной активности.
Мониторинг приложений и процессов в режиме реального времени
SONAR отслеживает и защищает более 1400 аспектов всех запущенных приложений, DLL-файлов и процессов, предоставляя защиту в режиме реального времени, по мере их выполнения.
STAR Intelligence Communication Bus
Технология защиты SONAR не работает сама по себе. Движок обменивается данными с другими сервисами защиты при помощи протокола STAR Intelligence Communication (STAR ICB). Движок Сетевой IPS, соединяется с движком Symantec Sonar, а затем с движком Внутренней Репутации (Insight Reputation). Это позволяет предоставить более информативную и точную защиту, какую не может предоставить практически ни один продукт.
Контролируем качество кода с помощью платформы SonarQube
В этой статье мы рассмотрим основные возможности SonarQube — платформы для непрерывного анализа и измерения качества кода, а также обсудим достоинства методики оценки качества кода на основе метрик SonarQube.
Введение
Наша компания занимается разработкой статического анализатора кода PVS-Studio. Мы убеждены, что выбор подходящей методологии разработки и следование ей, применение доказавших свою эффективность методик и инструментов существенно повышает вероятность того, что код будет написан правильно, и конечный продукт будет соответствовать требуемым стандартам качества. Одной из таких методологий является использование статического анализа исходного кода. Статический анализ, применяемый вместе с другими метриками кода, позволяет оценить текущее состояние кодовой базы, динамику этого состояния, возможные риски при реализации проекта.
Для начала расскажу вкратце о представлении результатов анализа PVS-Studio. Результаты работы нашего статического анализатора PVS-Studio сохраняются в формате xml. Список сообщений об обнаруженных ошибках можно открыть прямо в окне Microsoft Visual Studio или в отдельной утилите Standalone, и работать с этими ошибками, используя возможности навигации по коду, сортировки, фильтрации, подавления ложных срабатываний и т.д.
Список найденных ошибок в формате xml можно преобразовать в один из форматов, удобных для чтения, например, html. Такие отчеты с результатами анализа можно рассылать всем заинтересованным участникам проекта по почте. Другой способ оповещения участников проекта — рассылка списков ошибок тем разработчикам, которые их допустили. Для этого пользователи могут использовать специальные утилиты, поставляемые в дистрибутиве PVS-Studio.
Говоря о возможностях PVS-Studio, следует упомянуть о функциональности для массового подавления диагностических сообщений. Если статический анализ был внедрен на поздних этапах жизненного цикла приложения, когда объем кодовой базы достиг большого размера, инспекция кода может привести к обнаружению большого количества ошибок. Возможно, в данный момент времени у команды отсутствуют ресурсы, необходимые для исправления всех ошибок. В этом случае разработчики могут скрыть все сообщения, выданные на текущей ревизии кода, и сконцентрироваться на ошибках, найденных во вновь написанном или модифицированном коде.
Динамику количества ошибок, найденных PVS-Studio, можно получить, используя функциональность Analysis Statistics плагина PVS-Studio для Microsoft Visual Studio или утилиты Standalone:
Перечисленные способы представления результатов работы нашего статического анализатора, однако, существуют сами по себе и не связаны с другими метриками кода, такими как количество строк кода, цикломатическая сложность, количество ошибок на 1000 строк кода, уровень покрытия кода модульными тестами, дублирование и так далее. Отчет о найденных ошибках после очередного анализа и количество этих ошибок не дает ответов на вопросы: много у нас ошибок или мало? Как динамика количества ошибок связана с ростом кодовой базы? Улучшается или ухудшается качество кода? И, наверное, самый главный вопрос менеджеров: когда все будет работать (сколько времени потребуется, чтобы устранить ошибки)? Эти вопросы заставили нас задуматься о том, как придать отчетам PVS-Studio большую ценность и информативность.
Почему же полезно собирать и контролировать метрики кода? Невозможно улучшить то, что вы не измеряете. Предположим, какая-то команда не собирает метрики кода. С развитием проекта кодовая база может становиться все хуже и хуже, и долгое время никто этого даже не заметит, пока в какой-то момент объем технического долга не достигнет такого размера, что поддержка и добавление новой функциональности будет стоить дороже и дороже. Если бы команда постоянно отслеживала метрики кода, она бы видела динамику состояния своего проекта и, по достижению определенных пороговых значений, начала бы бить тревогу.
Далее, допустим, команда осознала проблему и убедила своего менеджера в том, что необходимо потратить ресурсы на улучшение качества кода. Менеджер, в свою очередь, задаст команде несколько простых вопросов: сколько времени понадобится на это команде? Какие части проекта необходимо улучшить? Сколько багов вы собираетесь исправить? По каким критериям вы оцените, что качество кода достигло требуемого уровня, и можно снова вернуться к разработке новой функциональности? Использование метрик позволит ответить на все эти вопросы. Если перед началом работ по улучшению качества кода команда зафиксирует текущее состояние кода по каждому компоненту продукта и определит пороговые значения для каждой метрики, достижение которых позволит с определенной степенью уверенности заявить, что код продукта стал качественным, можно спрогнозировать дату окончания работ и остановиться тогда, когда определенные пороговые значения будут достигнуты. Так, например, команда сможет показать менеджеру, что после окончания работ по повышению качества кода уровень покрытия модульными тестами достиг 90%, следование стандартам кодирования, принятым в компании, достигло 95%, а дублирование кода сократилось до 5%, и т.д.
Почему SonarQube?
SonarQube — это платформа с открытым исходным кодом, предназначенная для непрерывного анализа и измерения качества кода. SonarQube предоставляет следующие возможности:
Мы тщательно изучили возможности платформы SonarQube и решили, что эти возможности могут быть интересны нашим клиентам. Поэтому мы приняли решение о разработке плагина для импорта результатов анализа PVS-Studio.
Приблизительно в это же время один из наших клиентов выразил заинтересованность во внедрении централизованного хранилища различных метрик кода. Клиент разрабатывает очень крупный (более 10 миллионов строк кода) и долгосрочный (более 15 лет активной разработки) проект. Естественно, в таком проекте очень много унаследованного кода и связанных с ним скелетов в шкафу, и в этом случае, на мой взгляд, совершенно необходимо разработать и внедрить набор метрик, позволяющих оценить состояние кода проекта и динамику изменений этого состояния во времени. Естественно, наш клиент давно принял решение о сборе и анализе метрик, и внедрил различные утилиты для мониторинга показателей качества кода, таких как: покрытие кода модульными тестами, результаты прогона тестов, дублирование блоков кода, следование принятым стандартам кодирования, плотность комментариев в коде и т.д. Параллельно со сбором этих метрик ежедневно выполнялся статический анализ кода. Использование большого количества утилит приводило к усложнению конфигурации сервера непрерывной интеграции, написанию дополнительных скриптов для преобразования результатов работы каждой утилиты в удобный для представления вид и объединения всех показателей в единый отчет. Такой подход требовал значительных ресурсов на создание и поддержку этой системы отчетности.
Исходя из потребностей клиента и нашего исследования возможностей платформы SonarQube, мы предложили внедрить эту платформу. Что и было сделано. В рамках задачи по внедрению был реализован плагин для SonarQube, позволяющий импортировать в SonarQube результаты анализа PVS-Studio. Процесс развертывания SonarQube и его интеграции с имеющимся окружением (сборочная система, сервер непрерывной интеграции, система контроля версий) не вызвал затруднений благодаря логичным механизмам настройки и большого количества подробной документации. Были настроены виджеты, позволяющие оценивать как состояние портфолио проектов клиента в целом, так и состояние каждого проекта в отдельности, настроены Quality Profiles и Quality Gates (об этих механизмах SonarQube я расскажу ниже) согласно потребоностям клиента, автоматическое назначение задач на исполнителей, рассылка уведомлений всем заинтересованным лицам.
В результате внедрения SonarQube клиент получил централизованную систему хранения и отображения метрик кода, позволяющую оценивать и прогнозировать риски проекта. Переход от отдельных инструментов к централизованной системе контроля качества кода не только упрощает развертывание и поддержку этой системы, но и позволяет совершить качественный скачок в сфере управления проектами, предоставляя всем заинтересованным участникам средства для мониторинга состояния проекта и принятия взвешенных решений. После тестовой эксплуатации клиент принял решение о включении SonarQube в действующий набор инструментов ALM (Application Lifecycle Management).
Следует отметить, что SonarQube, благодаря своим широким возможностями интеграции с другими инструментами, легко может стать неотъемлемой частью вашего фреймворка ALM. С помощью плагинов в SonarQube можно добавить поддержку Git, SVN, Mercurial, Team Foundation Version Control, ClearCase, настроить авторизацию через LDAP, GitHub, Bitbucket, Azure Active Directory, импортировать результаты работы сторонних анализаторов. Плагины SonarLint для IntelliJ IDEA, Eclipse и Visual Studio позволяют анализировать код в режиме реального времени в вашей любимой IDE, используя правила, определенные в профиле SonarQube. Также доступна интеграция с Team Foundation Server и Visual Studio Team Services. Вы можете запустить анализ кода и импорт данных в SonarQube прямо из сборочного процесса в этих системах, или, например, управлять состоянием сборок в Team Foundation Server и Visual Studio Team Services с помощью Quality Gates (индикаторов качества сборки), настронных в SonarQube: если код не удовлетворяет требованиям Quality Gate, сборка будет считаться неудавшейся. Таким образом, разработчики SonarQube стремятся сделать свой продукт максимально открытым и позволить командам разработчиков интегрировать SonarQube в их окружение.
Для каких же проектов и команд целесообразно внедрять SonarQube? Я считаю, что для относительно короткосрочных проектов (не более 2 — 3 месяцев), которыми занимаются небольшие команды (не более 5 человек), инвестиции во внедрение SonarQube в процесс разработки могут не оправдаться. Как правило, такие проекты не требуют больших затрат на поддержку продукта. Для таких проектов я бы рекомендовал ограничиться отдельными инструментами для контроля состояния кода проекта: статический анализатор, контроль покрытия кода тестами, соответствие стандартам кодирования и т.д., которые команда привыкла использовать.
На крупных проектах, требующих значительных ресурсов, с продолжительным жизненным циклом, внедрение платформы SonarQube в процесс разработки оправдано. Причем внедрение SonarQube может принести пользу на любой стадии развития проекта. Оптимальная, на мой взгляд, стратегия — это внедрение SonarQube на ранних этапах цикла разработки, что позволит команде с самого начала анализировать отчеты о контроле качества и быть уверенными в том, что соблюдаются заданные стандарты качества кода. Внедрение SonarQube на более поздних этапах разработки потенциально может потребовать больших затрат на улучшение качества кода. Так, например, может выясниться, что статический анализ обнаружил большое количество потенциальных ошибок, присутствует большой объем технического долга, код не покрыт тестами, публичные API не документированы и т.д. Тем не менее, выявление рисков продукта на любой стадии жизненного цикла позволяет правильно отреагировать на эти риски и спланировать действия по их минимизации.
Например, команда может договориться, что при изменении какого-то участка кода в рамках разработки новой функциональности будет ликвидирован весь технический долг в этом коде. Инвестиции в устранение найденных недостатков позволят в дальнейшем снизить стоимость поддержки продукта и разработки нового функционала. Также, если продукт давно присутствует на рынке, и, несмотря на то, что инспекция качества кода выявила большое количество проблем, поведение в продукционной среде достаточно стабильно и в текущий момент времени нет достаточных ресурсов для улучшения качества кодовой базы, можно отложить эту инвестицию. SonarQube предоставляет возможность сфокусироваться на проблемах, появившихся в новом коде. Эта функциональность похожа на функциональность массового подавления сообщений в PVS-Studio.
Как SonarQube помогает оценить качество кода
В основе модели качества SonarQube лежит реализация методологии SQALE (Software Quality Assessment based on Lifecycle Expectations) с определенными дополнениями. Как известно, методология SQALE фокусируется в основном на сложности поддержки кода (maintainability) и не учитывает риски проекта. Например, если сегодня в проекте обнаружилась критическая проблема безопасности, строгое следование методологии SQALE обязывает вас устранить все уже существующие проблемы с надежностью (reliability), возможностью изменений (changeability), тестируемостью (testability) и т.д., и только затем вернуться к новой критической проблеме. На самом деле, если потенциальные проблемы существуют в коде давно и не проявляют себя в виде пользовательских баг-репортов, гораздо важнее сфокусироваться на исправлении новых багов.
С учетом этого, разработчики SonarQube модифицировали модель качества, основанную на SQALE, чтобы акцентировать внимание на следующих важных моментах:
PVS-Studio и SonarQube
Для импорта результатов анализа в SonarQube мы разработали плагин sonar-pvs-studio-plugin. Использование плагина позволяет добавлять сообщения, найденные анализатором PVS-Studio, в базу сообщений сервера SonarQube. Плагин содержит репозиторий с описанием диагностик, которые выполняет наш статический анализатор. После того, как вы добавите наш плагин в SonarQube, вы увидите репозиторий с названием PVS-Studio для языков C, C++ и C#:
Диагностические сообщения PVS-Studio в репозитории плагина сопровождаются подробными описаниями ошибок с примерами кода и рекомендациями по устранению проблемы:
После статического анализа кода проекта и импорта результатов в SonarQube, с помощью фильтров вы можете, например, выбрать все неисправленные проблемы, найденные PVS-Studio:
Чтобы добавить результаты анализа PVS-Studio в SonarQube, достаточно установить плагин sonar-pvs-studio-plugin, добавить диагностики PVS-Studio из репозитория плагина в Quality Profile и передать путь до файла отчета PVS-Studio в свойстве sonar.pvs-studio.reportPath при запуске сканера SonarQube.
Для анализа проектов MSBuild разработчики SonarQube рекомендуют использовать SonarQube Scanner for MSBuild. Этот сканер представляет из себя обертку над стандартным сканером SonarQube и облегчает процесс создания конфигурационного файла сканера sonar-project.properties, автоматически добавляя в него модули (проекты в решении) и записывая пути до исходных файлов, которые необходимо проанализировать.
Однако мы столкнулись с важными с нашей точки зрения ограничениями сканера SonarQube Scanner for MSBuild.
Во-вторых, SonarQube Scanner for MSBuild не добавляет для анализа исходные файлы, расположенные выше по дереву каталогов, чем каталог, в котором находится проектный файл. Сообщения для таких файлов будут также отсутствовать в SonarQube.
Исходя из этих ограничений, для импорта результатов анализа PVS-Studio мы рекомендуем использовать стандартный сканер SonarQube. Использование этого сканера предполагает создание конфигурационного файла sonar-project.properties вручную. Использование и настройка сканера описаны в статье Analyzing with SonarQube Scanner.
По умолчанию, сканер SonarQube индексирует исходные файлы для анализа, расположенные по дереву каталогов ниже, чем файл решения (.sln) либо проекта (.vcxproj/.csproj). Для анализа проектов со сложной структурой, где исходные файлы могут находиться выше по дереву каталогов, чем файл решения или проекта, в свойстве sonar.projectBaseDir нужно указать наивысший общий каталог для всех исходных файлов (в крайнем случае, это может быть корень диска), и в свойстве sonar.sources затем перечислить директории, в которых следует искать исходные файлы для анализа (либо полные пути до исходных файлов).
Процесс добавления путей до исходных файлов в свойство sonar.sources для больших проектов может быть достаточно трудоемким, а с учетом всех подключаемых заголовочных файлов — и нетривиальным. Чтобы облегчить эту задачу, мы реализовали специальный режим работы нашего анализатора, позволяющий автоматически создавать конфигурационные файлы для сканера SonarQube.
При разработке нашего статического анализатора мы фокусируемся на поиске ошибок в коде, и не поддерживаем поиск потенциальных уязвимостей и code smells, поэтому при использовании нашего плагина для SonarQube метрики Security и Maintainability не будут заполнены. Также следует отметить, что в текущей версии нашего плагина не реализовано вычисление Duplications, Complexity и Documentation.
Заключение
В этом обзоре я попытался показать, как SonarQube позволяет внедрить и применять практики контроля качества кода на основе метрик. Как сказал Питер Друкер (или, возможно, это был Уильям Деминг): if you can’t measure it, you can’t improve it. Регулярный сбор метрик кода, анализ их изменения с течением времени позволяет обнаруживать, что технический долг накапливается, поддерживаемость кода снижается, что приводит к увеличению стоимости разработки нового функционала и повышению рисков, связанных с поставкой новых версий продукта. Приведу цитату из книги «Программист-прагматик. Путь от подмастерья к мастеру» Эндрю Ханта и Дэвида Томаса:
«Не оставляйте «разбитые окна» (неудачные конструкции, неверные решения или некачественный текст программы) без внимания. Как только их обнаружите, чините сразу. Если нет времени на надлежащий ремонт, забейте окно досками. Наверняка вы сможете закомментировать ошибочный фрагмент или вывести на экран сообщение «В стадии разработки», или использовать фиктивные данные. Необходимо предпринять хотя бы малейшее действие, чтобы предотвратить дальнейшее разрушение, и показать, что вы контролируете ситуацию.
Мы видели, как безошибочные, функциональные системы быстро портились, как только окна начали разбиваться. Существуют и другие факторы, которые вносят свой вклад в порчу программ, и мы коснемся некоторых из них далее, но небрежность ускоряет порчу быстрее, чем любой другой фактор.
Вы можете подумать, что ни у кого не будет времени обойти «разбитые окна» проекта и отремонтировать их. Если вы продолжаете думать подобным образом, тогда вам лучше спланировать приобретение мусорного контейнера или переехать в другой район города. Не давайте энтропии победить себя.«.
Платформа SonarQube позволяет обнаруживать такие «разбитые окна». Используя SonarQube, вы получите доступ к консолидированным отчетам о состоянии кода проекта, смотреть, как это состояние меняется с течением времени, сможете исследовать обнаруженные проблемы методом анализа «сверху вниз», от значения интересующей вас метрики для всего проекта в целом до конкретного участка кода прямо в окне браузера. SonarQube также предоставляет оценку времени, необходимого для устранения проблем в коде. Таким образом, если в вашем проекте накопился большой объем технического долга, вы всегда можете сказать, сколько вам нужно времени для его устранения.
Из интересных и полезных особенностей SonarQube хочу также отметить его широкие возможности для интеграции с другими инструментами, что делает его частью вашего ALM-фреймворка, и возможности расширения сушествующего функционала благодаря использованию сторонних плагинов. И вся эта мощь и удобство доступны под свободной лицензией бесплатно. Если вы используете статический анализатор PVS-Studio, наш плагин позволит вам импортировать результаты анализа в SonarQube, чтобы использовать его возможности для исследования проблем с качеством кода.
Если возможности платформы SonarQube вас заинтересовали, попробуйте ее в своем окружении. Установка SonarQube очень проста и заключается лишь в извлечении файлов дистрибутива из архива и запуске исполняемого файла под вашу операционную систему.
Также вы можете проверить свои проекты, написанные на языках C/C++ или C#, с помощью статического анализатора PVS-Studio.
Полезные ссылки
Если хотите поделиться этой статьей с англоязычной аудиторией, то прошу использовать ссылку на перевод: Pavel Kusnetsov. Control source code quality using the SonarQube platform.