В репозитории GitHub вы можете увидеть «статистику языка», которая отображает процент проекта, написанного на языке. Однако он не отображает количество строк кода, из которых состоит проект. Часто я хочу быстро получить представление о масштабе и сложности проекта, а количество строк кода может дать хорошее первое впечатление. 500 строк кода подразумевают относительно простой проект, 100 000 строк кода подразумевают очень большой / сложный проект.
Итак, возможно ли получить строки кода, написанные на разных языках, из репозитория GitHub, желательно без его клонирования?
Вопрос « Подсчитать количество строк в репозитории git » спрашивает, как посчитать строки кода в локальном репозитории Git, но:
- Вы должны клонировать проект, который может быть массовым. Например, клонирование такого проекта, как Wine, занимает много времени.
- Вы будете считать строки в файлах, которые не обязательно будут кодом, например, файлы i13n.
- Если вы учитываете только (например) файлы Ruby, вы можете пропустить огромное количество кода на других языках, таких как JavaScript. Вы должны заранее знать, какие языки использует проект. Вы также должны будете повторить счет для каждого языка, который использует проект.
В общем, это потенциально слишком много времени для «быстрой проверки масштаба проекта».
источник
git clone --depth 1
. Что касается 2 и 3, я подозреваю, что есть программное обеспечение, которое может сделать анализ для вас, и вы можете делать много предположений, основываясь на расширениях файлов, но у меня чертовски много времени, чтобы придумать хороший поиск срок, чтобы найти указанное программное обеспечение. Может быть, вам нужно задать еще один вопрос.Ответы:
Сценарий оболочки,
cloc-git
Вы можете использовать этот сценарий оболочки для подсчета количества строк в удаленном Git-репозитории с помощью одной команды:
Установка
Для этого сценария требуется установить CLOC («Количество строк кода»).
cloc
возможно может быть установлен с вашим менеджером пакетов - например,brew install cloc
с Homebrew . Существует также изображение докера, опубликованное подmribeiro/cloc
.Вы можете установить скрипт, сохранив его код в файле
cloc-git
, запустивchmod +x cloc-git
, а затем переместив файл в папку,$PATH
например/usr/local/bin
.Применение
Сценарий принимает один аргумент - любой URL, который
git clone
будет принят. Примерами являютсяhttps://github.com/evalEmpire/perl5i.git
(HTTPS) илиgit@github.com:evalEmpire/perl5i.git
(SSH). Вы можете получить этот URL на любой странице проекта GitHub, нажав «Клонировать или скачать».Пример вывода:
альтернативы
Запустите команды вручную
Если вы не хотите сохранять и устанавливать скрипт оболочки, вы можете запускать команды вручную. Пример:
лингвист
Если вы хотите, чтобы результаты точно соответствовали процентам языка GitHub, вы можете попробовать установить Linguist вместо CLOC . Согласно его README , вам нужно,
gem install linguist
а затем запуститьlinguist
. Я не мог заставить его работать ( выпуск № 2223 ).источник
--depth 1
только для загрузки самого последнего коммита. Для большинства репозиториев это позволяет избежать беспокойства исходного вопроса о том, что клонирование занимает слишком много времени.cloc
для получения строк кода в репозитории github без клонирования репо на нашу машину (через Интернет). приведенные вышеcloc-git
первые клоны для проецирования перед началом подсчета количества строкcloc
для вас. Чтобыcloc
считать строки в коде, ваш компьютер должен загрузить этот код, но только временно. Обратите внимание, что даже веб-браузеры технически загружают веб-страницы при их посещении; они просто сохраняют их в памяти, а не на диск.который даст вам общее количество →
Или используйте этот инструмент → http://line-count.herokuapp.com/
источник
git ls-files | grep '\.py' | xargs wc -l
.xargs
дляwc -l
всех файлов вручную затем использоватьawk
просуммировать столбец, OMG это так гораздо проще.Существует расширение для браузера Google Chrome - GLOC, которое работает для публичных и частных репозиториев.
Подсчитывает количество строк кода проекта из:
источник
Если вы перейдете на страницу графиков / участников, вы увидите список всех участников репо и сколько строк они добавили и удалили.
Если я что-то не упустил, вычитание суммарного количества удаленных строк из общего количества строк, добавленных среди всех участников, должно привести к общему количеству строк кода в репо. (РЕДАКТИРОВАТЬ: оказывается, я что-то упустил в конце концов. Посмотрите на комментарий орбитального робота для деталей.)
ОБНОВИТЬ:
Эти данные также доступны в API GitHub . Поэтому я написал быстрый скрипт для извлечения данных и вычисления:
Просто вставьте его в фрагмент Chrome DevTools, измените репозиторий и нажмите «Выполнить».
Отказ от ответственности (спасибо Lovasoa ):
Возьмите результаты этого метода с частичкой соли, потому что для некоторых репозиториев (sorich87 / bootstrap-tour) это приводит к отрицательным значениям, которые могут указывать, что что-то не так с данными, возвращаемыми из API GitHub.
ОБНОВИТЬ:
Похоже, этот метод для расчета общего количества строк не совсем надежен. Посмотрите на комментарий орбитального робота для деталей.
источник
fetch("https://api.github.com/repos/jquery/jquery/stats/code_frequency").then(x=>x.json()).then(x=>alert(x.reduce((total,changes)=>total+changes[1]+changes[2],0)))
Вы можете клонировать только последние коммиты,
git clone --depth 1 <url>
а затем выполнить собственный анализ с помощью Linguist , того же программного обеспечения, которое использует Github. Это единственный способ, которым я знаю, что вы получите строки кода.Другой вариант - использовать API для отображения языков, используемых в проекте . Это не дает их в строках, а в байтах. Например...
Несмотря на то, что в этом проекте есть доля соли, этот проект включает в себя YAML и JSON, которые веб-сайт признает, а API - нет.
Наконец, вы можете использовать поиск кода, чтобы узнать, какие файлы соответствуют данному языку. В этом примере спрашивается, какие файлы в Perl5i являются Perl.
https://api.github.com/search/code?q=language:perl+repo:evalEmpire/perl5i
, Это не даст вам строк, и вам придется запрашивать размер файла отдельно, используя возвращаемыйurl
для каждого файла.источник
В настоящее время невозможно на Github.com или их API
Я поговорил со службой поддержки и подтвердил, что этого нельзя сделать на github.com. Они передали это предложение команде Github, так что, надеюсь, это будет возможно в будущем. Если так, я обязательно отредактирую этот ответ.
Между тем, ответ Рори О'Кейна - блестящая альтернатива, основанная на
cloc
клоне репо.источник
Вы можете использовать GitHub API для получения sloc, как в следующей функции
Лично я сделал расширение Chrome, которое показывает количество SLOC как в списке проектов github, так и на странице сведений о проекте. Вы также можете установить свой личный токен доступа для доступа к частным репозиториям и обойти ограничение скорости API.
Вы можете скачать здесь https://chrome.google.com/webstore/detail/github-sloc/fkjjjamhihnjmihibcmdnianbcbccpnn
Исходный код доступен здесь https://github.com/martianyi/github-sloc
источник
Firefox дополнение Github SLOC
Я написал небольшой аддон Firefox, который печатает количество строк кода на страницах проекта github: Github SLOC
источник
Если вопрос «можете ли вы быстро получить КОЛИЧЕСТВО ЛИНИЙ РЕПО GitHub», ответ будет отрицательным, как указано в других ответах.
Однако, если вопрос «можете ли вы быстро проверить масштаб проекта», я обычно оцениваю проект, глядя на его размер. Конечно, размер будет включать дельты всех активных коммитов, но это хороший показатель, так как порядок величины довольно близок.
Например
Насколько велик проект «докер»?
В вашем браузере введите api.github.com/repos/ORG_NAME/PROJECT_NAME, т.е. api.github.com/repos/docker/docker
В хэше ответа вы можете найти атрибут размера:
Это должно дать вам представление об относительном масштабе проекта. Кажется, это число в килобайтах, но когда я проверил его на своем компьютере, оно на самом деле меньше, хотя порядок величины постоянен. (161432 КБ = 161 МБ, du -s -h докер = 65 МБ)
источник
Инструкции и объяснения
sloc поддерживает форматирование вывода как a
cli-table
, asjson
илиcsv
. Регулярные выражения могут использоваться для исключения файлов и папок ( дополнительная информация о npm ).Powershell:
rm -r -force ".\react\"
или на Mac / Unix:rm -rf ".\react\"
Скриншоты выполненных шагов (cli-таблица):
Вывод sloc (без аргументов):
источник
Передайте вывод из числа строк в каждом файле,
sort
чтобы упорядочить файлы по количеству строк.git ls-files | xargs wc -l |sort -n
источник
Из комментария @ Tgr есть онлайн-инструмент: https://codetabs.com/count-loc/count-loc-online.html.
источник
Откройте терминал и запустите следующее:
источник