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

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

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

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

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 (например, Activity Stream), но не имеют прямого сопоставления с исходными файлами в центральном хранилище mozilla (из которого построен Firefox). Это связано с тем, что некоторые новые компоненты не работают в " поездах " (цикл разработки ~ 6 недель), а скорее обновляются чаще и развертываются как дополнения.

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

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

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

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

Sidenote: панель загрузки, похоже, правильно аннотирована в главном репо.

Другие вопросы по тегам