анализ исходного кода Firefox; строк кода на компонент

В настоящее время я пытаюсь проанализировать Bugzilla, чтобы найти соотношение number of bugs : lines of code для каждого компонента Firefox. Однако я никогда раньше не работал с Bugzilla и не знаком с кодовой базой Firefox.

Как мне найти строки кода для каждого компонента Firefox (как они появляются на Bugzilla под заголовком Comp)? Я попытался просмотреть Mozilla Central, но понятия не имею, какие исходные файлы относятся к каким компоненты.

РЕДАКТИРОВАТЬ: Декстер указал, что в дереве mozilla-central есть директива BUG_COMPONENT, но эта директива кажется крайне неполной и бесполезной. Любые другие советы или указатели относительно того, где я мог бы получить такой совет, будут высоко оценены.


person Fraser Price    schedule 03.07.2017    source источник


Ответы (1)


Отличный вопрос! Недавно мы добавили директиву BUG_COMPONENT (см. мета-ошибку) в Firefox. код: он находится в файле moz.build, содержащемся в каждом каталоге исходного кода. Эта директива позволяет связать каждый файл в репозитории с соответствующим компонентом Bugzilla.

Например, следующая директива нашла здесь, сообщает, что все файлы в test/browser, содержащие слово Telemetry, принадлежат компоненту Toolkit::Telemetry в Bugzilla.

with Files("test/browser/*Telemetry*"):
    BUG_COMPONENT = ("Toolkit", "Telemetry")

Вы можете использовать либо DXR, либо searchfox для быстрого поиска в репозитории Firefox.

Ответ обновлен с учетом вопросов в комментариях.

Как отмечено в комментариях, некоторые компоненты отслеживаются в Bugzilla (например, Поток активности), но не имеют прямого сопоставления с исходными файлами в пределах mozilla-central репозиторий (из которого собран Firefox). Это связано с тем, что некоторые новые компоненты не ездят "в поездах" (цикл разработки ~6 недель), но чаще обновляются и развертываются как дополнения.

Код этих компонентов обычно находится под учетной записью github Mozilla вместе с другим проектом. Поскольку проектов довольно много, один из способов определить, какие из них могут вас заинтересовать, — это ограничить их JavaScript. Если вы перейдете по этой последней ссылке, вы увидите репозиторий как для тест-пилота, так и для Activity Stream (плюс другие надстройки).

Боюсь, единственный способ сопоставить проекты GitHub с компонентами Bugzilla — это посмотреть на имя репозитория на GitHub и найти соответствующий компонент в Bugzilla: вы можете ввести имя здесь, чтобы получить рекомендации по некоторым компонентам. Если вы хотите пофантазировать, вы также можете использовать Bugzilla REST API:

  1. Получите список проектов JS GitHub.
  2. Извлеките имя проекта.
  3. Используйте REST API, чтобы получить рекомендацию по компоненту.

Лично я бы просто рассматривал репозиторий mozilla-central в качестве отправной точки, так как он в основном аннотирован: извлеките BUG_COMPONENT из исходных файлов, сопоставьте их с путями, а затем используйте REST API, чтобы получить список. ошибок.

Примечание: панель загрузки выглядит правильно аннотирован в основном репозитории.

person Dexter    schedule 04.07.2017
comment
Идеально, как раз то, что я искал. Большое спасибо! - person Fraser Price; 04.07.2017
comment
Я заметил, что некоторые компоненты Firefox (например, потоки активности, панель загрузок, совместимость расширений и т. д.) не индексируются. Есть ли для этого причина или директива BUG_COMPONENT еще не завершена? Запрос: dxr.mozilla .org/mozilla-central/ - person Fraser Price; 04.07.2017
comment
Некоторые из упомянутых вами вещей существуют за пределами основного репозитория Mozilla. Они хранятся в собственном репозитории github, например. Лента активности живет здесь - person Dexter; 05.07.2017
comment
OK; Я предполагаю, что если бы я хотел охватить все компоненты + источник, это могло бы потребовать гораздо больше усилий. Не могли бы вы указать мне правильное направление, если бы я хотел добиться чего-то подобного (например, другие очевидные репозитории, любые другие сопоставления компонентов > src или общие советы)? Спасибо за вашу помощь до сих пор, это очень ценится. - person Fraser Price; 05.07.2017
comment
Я только что обновил свой ответ, чтобы ответить на ваши вопросы, надеюсь, я рассмотрел все пункты! - person Dexter; 06.07.2017
comment
Большое спасибо. Я не думаю, что смогу достичь того, что намеревался сделать, но вы мне очень помогли! - person Fraser Price; 06.07.2017