Анализ исходного кода 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:
- Получить список проекта JS GitHub.
- Извлеките название проекта.
- Используйте REST API, чтобы получить предложение компонента.
Лично я бы рассматривал Mozilla-Central репозиторий в качестве отправной точки, так как он в основном аннотирован: очистить BUG_COMPONENT
из исходных файлов сопоставьте их с путями, а затем используйте REST API для получения списка ошибок.
Sidenote: панель загрузки, похоже, правильно аннотирована в главном репо.