Функциональные возможности и инструкция по установке
CodeScoring
Решение для композиционного анализа программного обеспечения
1. Введение
CodeScoring — программное обеспечение, созданное российскими разработчиками. Продукт обеспечивает функции компонентного анализа программного обеспечения (Software Component Analysis, SCA), контроль совместимости лицензий, расширенный анализ для юристов и оценку качества исполнения в разрезе команд.
1.1. Композиционный анализ
CodeScoring сканирует исходный код и бинарные сборки, определяет компонентный и лицензионный состав обнаруженных Open Source зависимостей, дополняет сопроводительной информацией.

Решение интегрируется в жизненный цикл разработки программного обеспечения, и даёт возможность управления политиками совместимости, событиями и оповещениями.

1.2. Оценка качества
CodeScoring использует поиск дубликатов (заимствований) как основной критерий качества разработки, определяет переиспользование кода не только внутри проекта, но и между проектами организации, а также заимствования из Open Source библиотек. Анализ учитывает переименования переменных, методов и классов.

Дополнительно система производит расчет цикломатической сложности и на её основе дает понимание о качестве исполнения, сложности поддержки, необходимости и близости рефакторинга проекта.

1.3. Прозрачное раскрытие авторского состава
CodeScoring анализирует и визуализирует историю работы над проектами, предоставляет ретроспективную картину применяемых технологий и качественных параметров.

Система автоматически идентифицирует авторов кода проектов компании, показывает наиболее близких авторов на основании информации о компетенциях и истории участия авторов в проектах. Дополнительно CodeScoring находит и отслеживает публичную работу авторов в профессиональных OSS-сообществах.

1.4. Принципиальные подходы
Работа сервиса и его развитие опирается на набор базовых принципов.

  • Sustainability. обеспечение устойчивого развития.
  • Shift-left. работа с кодовой базой максимально слева жизненного цикла разработки.
  • Black box transparency. Нужный уровень прозрачности всем участникам процесса.
  • Super App Modules. Модульный подход к расширению функционала.
  • Code Mining State-of-the-Art. Совмещение проверенных научных подходов и новейших разработок в области Data Science.


2. Функциональные возможности
CodeScoring — комплексное решение, состоящее из набора дополняющих друг друга модулей:

  • Компоненты — обнаружение и анализ зависимостей.
  • Лицензии — выявление и совместимость лицензий.
  • Политики — управление политиками лицензий и оповещениями.
  • Качество и дубликаты — поиск дубликатов, оценка качества кода.
  • Команды и авторы — авторский состав, история, технологии, похожесть.
2.1. Обнаружение и анализ зависимостей
Система анализирует состав кода, выявляет прямые и транзитивные Open Source зависимости, определяет версии используемых зависимостей и типы лицензий для каждой из них. Автообнаружение новых зависимостей происходит:

  • по исходному коду;
  • по файлам конфигураций (манифесты и lock-файлы менеджеров пакетов);
  • по мета-данным: по хэшам (sha1);

На основе этой информации создается точная компонентная спецификация (BOM) для приложений.

CodeScoring вычисляет степень использования компонент в разрабатываемом программном обеспечении, чтобы оценить сложность замены. Дополнительно рассчитывается статистика по технологиям и приросту кодовой базы.
2.2. Выявление и совместимость лицензий
CodeScoring выявляет лицензионный состав прямых и транзитивных зависимостей, сопоставляет лицензии потенциально заимствованного кода. Идентифицирует лицензионную информацию, добавленную напрямую в исходный код приложений. Отслеживает наличие несовместимостей по общим правилам и на основе сформированных политик.

В интерфейсе доступен лицензионный состав как каждого отдельного проекта, так и агрегирующая информация по продуктам и организации в целом.

База лицензий CodeScoring регулярно пополняется.
2.3. Управление политиками уведомления
CodeScoring поставляется с предустановленным набором готовых политик уведомления, связанных с совместимостью лицензий и качеством ПО. Формируются регулярные отчеты по событиям системы с возможностью отправки на электронную почту.

Дополнительно есть возможность гибкой настройки собственных политик и соответствующих оповещений для разных частей системы.
2.4. Оценка качества и дубликаты
В основе системы оценки качества CodeScoring лежат алгоритм выявления заимствований и дубликатов и расчёт цикломатической сложности кода.

Поиск дубликатов происходит с учетом направления копирования и производится по кодовой базе внутри проектов, между проектами и по известным Open Source компонентам. Анализ учитывает не только простой copy-paste, но и переименования переменных, методов и классов. Для всех артефактов идентифицируется автор. На базе этой информации система может оценивать степень связности решений.

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

Дополнительно в анализ могут быть включены конфигурируемые параметры качества:

  • уровень комментирования;
  • полнота комментариев;
  • некачественное форматирование;
  • качество именования переменных и функций;
  • длинные блоки кода: функции и классы;
  • объемы логирования (журналирования);
  • выявление нереализованных участков кода.
2.5. Авторский состав
CodeScoring обеспечивает прозрачное раскрытие авторского состава анализируемого ПО от оценки длительности работы авторов и применяемых ими технологий до отслеживания качественных параметров. Дополнительно система отслеживает публичную работу авторов в профессиональных сообществах, что может являться местом утечки корпоративного кода.

С помощью информации о компетенциях и истории участия авторов в проекте, CodeScoring может предложить наиболее близких авторов на замену в случае отпуска, болезни или увольнения сотрудника.

В интерфейсе также можно посмотреть ретроспективные карты авторского состава и проектов, чтобы оценить историю развития проектов и компонентного состава. Подобные инструменты помогают принимать более информированное решение при изменении технологического стека исполнения, при найме отдельных разработчиков или подрядчиков.

3. Технические детали
3.1. Языки программирования
  • Java
  • Kotlin
  • Swift
  • Objective-C
  • JavaScript
  • TypeScript
  • Python
  • Ruby
  • PHP
  • C
  • C++
  • C#
  • Bash
  • Go
  • Perl
  • PLSQL
  • PGSQL
  • Scala
3.2. Пакетные менеджеры
  • Maven
  • NPM
  • PyPi
  • Packagist
  • Ruby Gems
  • NuGet
  • Conda
  • Cocoapods
  • CONAN
3.3. Интеграции
3.3.1. Системы контроля версий (VCS)
  • Github
  • Gitlab
3.3.2. Программные интерфейсы (API)
API обеспечивает возможность управления любыми сущностями системы, получение результатов анализа и технической информации о процессах системы:
  • Проекты и зависимости
  • Лицензии
  • Авторы
  • Результаты анализа качества
  • Данные всех отчетов
  • Информация по дубликатам
  • Логи

    4. Инструкция по установке системы
    1. Установить Docker Engine под нужную операционную систему в соответствии с документацией: https://docs.docker.com/engine/install/.
    2. Установить Docker Compose в соответствии с документацией: https://docs.docker.com/compose/install/.
    3. Примечание: Для Mac и Windows шаг можно пропустить, т. к. утилита включена в установщик Docker Engine. Версия Docker Compose должна быть не ниже 1.29.
    4. Авторизоваться в приватном реестре Docker-образов системы «CodeScoring» при помощи команды:
    5. docker login registry-zero.codescoring.ru
    6. Примечание: Логин, пароль и адрес реестра образов будут переданы клиенту в момент совершения покупки.
    7. Скачать архив с установочными мета-файлами по ссылке, распаковать, используя пароль.
    8. Примечание: Ссылка и пароль будут переданы клиенту в момент совершения покупки.
    9. Перейти в консоли в распакованную директорию.
    10. Выполнить команду установки приложения CodeScoring:
    11. docker-compose -f /path/to/docker-compose.yml up
    12. Дождаться в консоли появления строки следующей строки, обозначающей завершение импорта данных: "cs_migration_1 exited with code 0".
    13. После запуска сервис будет доступен по адресу http://localhost
    14. Примечание: Логин, пароль будут переданы клиенту в момент совершения покупки.
    Дата последнего обновления: 15.05.2021