CLOC – Граф радкоў кода


Original: http://cloc.sourceforge.net/

Новая версiя знаходзiцца тут https://github.com/AlDanial/cloc

Aгляд ^

Cloc разлічвае пустых радкоў, радкі каментароў і фізічныя радкоў зыходнага кода ў многіх мовах праграмавання. Улічваючы дзве версіі кода базы, Cloc можна вылічыць розніцу ў пусты, каментар і радкоў зыходнага кода. Ён цалкам напісаны на Perl без залежнасцяў па-за стандарту распаўсюджвання Perl версіі 5.6 і вышэй (код ад некаторых знешніх модуляў ўбудоўваецца ў Cloc) і так даволі партатыўнымі. Cloc вядома для запуску на многіх версіях Linux, FreeBSD, NetBSD, OpenBSD, Mac OS X, AIX, HP-UX, Solaris, IRIX, г / OS, і Windows. (Для запуску зыходнага версію Perl ў Cloc на адным Windows, неабходна ActiveState Perl 5.6.1 або вышэй,  Strawberry Perl, Cygwin, або MobaXTerm з Perl усталяваны убудова. У якасці альтэрнатывы можна выкарыстоўваць бінарныя файлы з Cloc генераванага з  PAR::Packer для запуску на кампутарах Windows, што не маюць ні Perl, ні Cygwin.)

Cloc змяшчае код ад Дэвіда Уілерам SLOCCount, Damian Conway і Абигейл Perl модуля Regexp :: Common, Perl модуля Шона М. Берка Win32 :: Autoglob, і Тай МакКуін Perl модуля Algorithm::Dif. Мова маштабныя каэфіцыенты былі атрыманы з Mayes Consulting, LLC сайце http://softwareestimator.com/IndustryData2.htm~~HEAD=pobj.

Усталюйце з дапамогай мэнэджара пакетаў ^

У залежнасці вашу аперацыйную сістэму, адзін з гэтых спосабаў ўстаноўкі можа працаваць для вас:

Спампаваць стабільны рэліз ^

Зыходны код, заўвагі па выпуску, Windows выкананы, і Unix пакет для бягучага стабільнага рэлізу можна знайсці на http://sourceforge.net/projects/cloc/files/cloc/v1.64/.

Спампаваць версію развіцця ^

Зыходны код для апошняй Subversion фіксацыі можна знайсці на http://sourceforge.net/p/cloc/code/HEAD/tree/trunk/cloc.


Ліцэнзія ^

Cloc пад ліцэнзіяй GNU General Public License v2, за выключэннем часткі, якія былі скапіяваныя з іншых крыніц. Код скапіяваны з Regexp :: Common, Win32 :: Autoglob, і алгарытм :: модуляў Perl Розніца падлягае Artistic License.

Навошта выкарыстоўваць Cloc? ^

Cloc мае шмат асаблівасцяў, якія робяць яго простым ў выкарыстанні, стараннага, якія пашыраюцца і пераносным:

  1.     Існуе ў выглядзе адзінага аўтаномнага файла, які патрабуе мінімальных намаганняў для ўстаноўкі — проста спампаваць файл і запусціць яго.
  2.     Можна чытаць вызначэння мовы каментар з файла і, такім чынам, патэнцыйна працаваць з кампутарнымі мовамі, якія яшчэ не існуюць.
  3.     Дазваляе вынікі некалькіх трас будуць падведзены разам мовы і праекта.
  4.     Можа вырабляць вынікі ў розных фарматах: тэкст, SQL, XML, YAML, падзеленых коскамі значэнняў.
  5.     Можа разлічваць код у сціснутых архіваў (бітумінозных шары, Zip файлаў, Java .ear файлаў).
  6.     Мае шматлікія варыянты ліквідацыі непаладак.
  7.     Ручкі імёны файлаў і каталогаў з прабеламі і іншых незвычайных персанажаў.
  8.     Не мае залежнасцяў па-за стандарту распаўсюджвання Perl.
  9.     Працуе на Linux, FreeBSD, NetBSD, OpenBSD, Mac OS X, AIX, HP-UX, Solaris, IRIX, і сістэм г / OS, якія Perl 5.6 або вышэй. Версія крыніцай працуе на Windows, альбо з ActiveState Perl, клубніцы Perl, Cygwin або MobaXTerm + Perl плагіна. У якасці альтэрнатывы на Windows, можна запусціць выкананы файл Windows, які не мае залежнасцяў.


Іншыя Лічыльнікі ^

Калі Cloc ня задаволіць вашыя патрэбы тут і іншыя свабодна даступныя лічыльнікі, каб разгледзець:


Іншыя спасылкі:

  •     Каталог КСМ па падліку код інструмента.
  •     Запіс Вікіпедыя для зыходнага кода лініі разлічвае.


Regexp :: Агульныя, дайджэст :: MD5, Win32 :: Autoglob, алгарытм :: Diff

Хоць Cloc ня трэба Perl модуляў па-за тыя, што ў стандартнай пастаўцы, Cloc сапраўды належыць на некалькі знешніх модуляў. Код ад трох гэтых знешніх модуляў – Regexp :: Common, Win32 :: Autoglob, і алгарытм :: Diff – ўбудоўваецца ў Cloc. Чацвёрты модуль, дайджэст :: MD5, выкарыстоўваецца толькі калі гэта магчыма. Калі Cloc знаходзіць рэгулярнага выразы :: Агульныя ці ўсталяваная алгарытму :: Diff лакальна ён будзе выкарыстоўваць тыя ўстаноўкі. Калі гэта не так, Cloc ўсталюе часткі рэгулярнага выразы :: Агульныя і / або алгарытму: Diff ён павінен часовых каталогаў, якiя ствараюцца ў пачатку Cloc перспектыве, то выдаляецца, калі прабег будзе завершана. Неабходны код з RegExp :: Common v2.120 і алгарытм :: Diff v1.1902 ўбудаваны ў зыходны код Cloc (гл падпраграм Install_Regexp_Common () і Install_Algorithm_Diff ()). Толькі тры лініі неабходна ад Win32 :: Autoglob, і яны ўключаны прама ў Cloc.

Акрамя таго, Cloc будзе выкарыстоўваць Digest :: MD5 для праверкі ўнікальнасці сярод ўваходных файлаў, калі ўсталяваны Дайджэст :: MD5 лакальна. Калі Дайджэст :: MD5 не знойдзены унікальнасць праверка файл прапускаецца.

Двайковы Вокны пабудаваны на кампутар, на якім і рэгулярных выразаў :: Агульныя і дайджэст :: MD5 усталяванай лакальна.

Пабудова АС Windows выкананы ^

Спампаваць па змаўчанні для Windows, Cloc-1.64.exe, быў пабудаваны з  PAR::Packer на Windows 7 кампутар з Strawberry Perl. Вокны выкананыя Cloc версіі 1.60 і раней былі пабудаваны з perl2exe на 32-бітнай Windows XP кампутар. Невялікі мадыфікацыя была зроблена ў зыходны код Cloc перад яго перадачай perl2exe; Лініі 87 і 88 былі раскаментаваць:

Чаму выкананы Вокны настолькі вялікія?

Вокны выкананыя Cloc версіі 1.60 і вышэй, створаны з perl2exe як адзначалася вышэй, каля 1,6 Мб, у той час як больш новыя версіі, створаныя з PAR Пакер ::, 11 МБ. Чаму новыя выкананыя настолькі больш? Мая тэорыя складаецца ў тым, што perl2exe выкарыстоўвае разумнейшыя Абразанне дрэў логіку, чым PAR Пакер ::, але гэта чыстая спекуляцыя.

Стварыце свой уласны выкананы файл

Калі ў вас ёсць доступ да perl2exe, вы можаце выкарыстоўваць яго для стварэння жорсткай выкананы Windows. См лініі 84-87 у зыходным кодзе Cloc для малаважнага змены кода, што неабходна пры выкарыстанні perl2exe.

У адваротным выпадку, каб пабудаваць выкананы файл Windows, з п.п. ад PAR Пакер :: спачатку ўсталяваць Windows, заснаваны размеркаванне Perl (напрыклад Perl або Strawberry ActivePerl) пасля іх даручэнні. Далей, адкрыйце камандную радок, інакш у акне DOS і ўсталяваць модуль ФАР :: Packer. Нарэшце, выклічце каманду зноў усталяваны п.п. з Cloc код соусе стварыць файл з пашырэннем .exe:

Варыяцыя на вышэй, калі вы ўсталявалі партатыўную версію Strawberry Perl, вам трэба будзе запусціць portableshell.bat першым правільна наладзіць сераду. Клубніцы Perl атрыманы выкананы на SourceForge вобласць загрузкі быў створаны з пераносны версіі на кампутары Windows 7.

Асноўнае прымяненне ^

Cloc гэта праграма каманднага радка, якая прымае файл, каталог і / або імёны архіўных як ўваходы. Вось прыклад запуску Cloc супраць распаўсюджвання Perl крыніцы v5.10.0:

Для запуску Cloc на кампутарах Windows, трэба спачатку адкрыць каманду (ака DOS) акно і выклікаць cloc.exe з каманднага радка няма.

Oпцыі ^

Прызнаныя Мовы ^

Прыведзены вышэй пералік могуць быць настроены, чытаючы вызначэння мовы з файла з –read-лан-выразнасці або –force-лан-выразнасці варыянтаў.

Восем пашырэньні файлаў ёсць некалькі супастаўленняў мовы:

  •     .cl файлы могуць быць Lisp або OpenCL
  •     .INC Файлы могуць быць PHP або Паскаль
  •     .jl файлы могуць быць Lisp або Юлія
  •     .m файлы могуць быць MATLAB, Меркурый, эпідэмічнага паратыту, або Objective C
  •     .P Файлы могуць быць D або DTrace
  •     .pl файлы могуць быць Perl або Пралог
  •     .PP Файлы могуць быць Паскаль ці лялек
  •     .pro файлы могуць быць IDL, Пралог, або праект Qt


Cloc мае падпраграмы, якія спрабуюць вызначыць правільны мова, заснаваны на змесціва файла для гэтых асаблівых выпадкаў. Дакладнасць ідэнтыфікацыі мовы з’яўляецца функцыя, як шмат кода файл ўтрымлівае; .m файлы з аднаго або двух ліній, напрыклад, рэдка маюць дастаткова інфармацыі, каб правільна адрозніваць MATLAB, Меркурыя, эпідэмічнага паратыту, або Objective C.

Мовы з пашырэннем файла сутыкненняў цяжка наладзіць з –read-Lang выразнасці або –force-Lang выразнасці, як у іх няма механізму для выяўлення мовы з агульнымі пашырэнняў. У гэтай сітуацыі неабходна змяніць зыходны код Cloc.

Як гэта працуе ^

Метад Cloc аб працы нагадвае SLOCCount: па-першае, стварыць спіс файлаў, каб разгледзець. Далей, спроба вызначыць, ці з’яўляецца ці не, знойдзеныя файлы ўтрымліваюць прызнаная крыніца кампутарны мову кода. Нарэшце, для файлаў, вызначаных у якасці зыходных файлаў, выклічце канкрэтнага мовы працэдуры, каб падлічыць колькасць радкоў зыходнага кода.

Больш падрабязнае апісанне:

  1.     Калі ўваходных файл ўяўляе сабой архіў (напрыклад, .tar.gz або .zip файла), стварыце часовы каталог і разгарнуць архіў туды з дапамогай сістэмнага выкліку да адпаведнага асноўны ўтыліты (дзёгаць, bzip2, распакуйце, і г.д.), то дадаць Гэты часовы каталог у якасці аднаго з уваходаў. (Гэта працуе больш надзейна на Unix, чым на Windows.)
  2.     Выкарыстоўвайце File :: Find рэкурсіўна спускацца ўваходныя каталогі і складзіце спіс імёнаў файлаў кандыдат. Ігнараваць падвойных і нулявога памеру файлаў.
  3.     Пераканайцеся, што файлы ў спісе кандыдата ёсць унікальныя ўтрыманне (першы, параўноўваючы памеры файлаў, то для тых жа памераў файлаў, параўнаць MD5 хэшы змесціва файлаў з Дайджэст :: MD5). Для кожнага набору аднолькавых файлаў, выдаліць усе, акрамя першай копіі, як вызначана ў лексічнай роду, аднолькавых файлаў з набору. Знятыя файлы не ўключаны ў справаздачу. (Пераключальнік –skip-Унікальнасць адключае тэсты унікальнасць і прымушае ўсе копіі файлаў, якія будуць уключаны ў справаздачу.) Глядзі таксама –ignored = перамыкач, каб убачыць, якія файлы былі праігнараваныя, і чаму.
  4.     Праглядзіце спіс кандыдат файла пашырэнняў файлаў, якія Cloc асацыюецца з мовамі праграмавання (гл –show-Ланг і –show-EXT варыянты). Файлы, якія адпавядаюць класіфікуюцца як якія змяшчаюць зыходны код для дадзенага мовы. Кожны файл без пашырэння адкрываецца і яго першы радок чытання, каб убачыць, калі гэта сцэнар абалонкі Unix (усе, што пачынаецца з #!). Калі гэта сцэнар абалонкі, файл класіфікуецца гэтай мовай сцэнарыяў (калі мова прызнана). Калі файл не мае прызнанага пашырэнне ці не recognzied скрыптовая мова, файл ігнаруецца.
  5.     Зараз усе астатнія файлы ў спісе кандыдата павінна быць зыходныя файлы для вядомых моў праграмавання. Для кожнага з гэтых файлаў:

1        Чытайце ўвесь файл у памяць

2       Падлічыце колькасць радкоў (= Loriginal).

3      Выдаліць пустыя радкі, то разлічваць зноў (= Lnon_blank).   

Пятлю на каментар фільтраў, вызначаных для гэтай мовы. (Напрыклад, у C ++ мае два фільтра: (1) выдаліць радкі, якія пачынаюцца з дадатковым прабелам з наступнай // і (2) выдаліць тэкст паміж / * і * /) ўжыць кожны фільтр да кода, каб выдаліць каментары. Граф пакінутыя лініі (= Lcode).

5        Захаваць разлічвае на гэтай мове:

blank lines = Loriginal – Lnon_blank
comment lines = Lnon_blank – Lcode
code lines = Lcode

Варыянты змяніць алгарытм няшмат. Опцыя –readLang выразнасці, напрыклад, дазваляе карыстальніку чытаць вызначэння каментарыяў фільтраў, вядомых пашырэньні файлаў і вядомых моў сцэнарыяў з файла. Код для гэтай опцыі апрацоўваецца паміж крокамі 2 і 3.

Пашыраны Выкарыстанне ^

Выдаліць Каментары з зыходнага кода ^

Як вы можаце сказаць, калі Cloc правільна вызначае каментары? Адзін са спосабаў, каб пераканаць сябе Cloc робіць правільную рэч, каб выкарыстоўваць яго –strip-каментары варыянт, каб выдаліць каментары і пустыя радкі з файлаў, а затым параўнаць зрэзаная файлы арыгіналаў.
Давайце паспрабуем гэта з SQLite у аб’яднанне, З файл, які змяшчае ўсе код, неабходны для пабудовы SQLite бібліятэкі разам з загалоўка файла:

Аргумент падаўжэнне даецца –strip-каментары адвольна; тут пс быў выкарыстаны як скарачэнне для “без каментароў”.

Cloc выдаленыя больш 31000 радкоў з файла:

Цяпер мы можам параўнаць orignial файл, sqlite3.c і адзін распрануты каментароў, sqlite3.c.nc з інструментамі, як дифф або vimdiff і паглядзець, што менавіта лічыцца Cloc каментары і пустыя радкі. Строгі доказ таго, што зрэзаная файл ўтрымлівае той жа код C як арыгінал, каб абагульніць гэтыя файлы і параўнаць кантрольныя сумы атрыманых аб’ектных файлаў.

Па-першае, арыгінальны крыніца файла:

Далей, версія без каментароў:
Cloc выдаленыя больш 31000 радкоў каментароў і прабелаў, але не змяняць зыходны код у любым істотным чынам, паколькі ў выніку аб’ектны файл адпавядае арыгіналу.
Праца з сціснутыя архівы ^Версіі Cloc да v1.07 патрабаваў –extract-с = <каманда> магчымасць расказаць Cloc як пашырыць архіўны файл. Пачынаючы з v1.07 гэта здабыча спроба аўтаматычна. У цяперашні час метад аўтаматычнае выманне працуе дастаткова добра на Unix-тыпу OS для наступных тыпаў файлаў: .tar.gz, .tar.bz2, .tgz, .zip, .ear. Некаторыя з гэтых пашырэнняў працаваць на Windows, калі адзін WinZip усталяваны ў тэчку па змаўчанні (C: \ Program Files \ WinZip \ WinZip32.exe). Акрамя таго, з больш новымі версіямі WinZip, камандны радок дапаўненні неабходныя для правільнай працы; у гэтым выпадку будзе спасылацца Cloc нешта накшталт
--extract-with="\"c:\Program Files\WinZip\wzunzip\" -e -o >FILE< ."(гл. паведамленне ў форуме).
У сітуацыях, калі аўтаматычнае выманне не атрымоўваецца, можна паспрабаваць варыянт –extract-с = <каманда> для падліку радкоў кода ў бітумінозных файлаў, Zip файлаў, або іншых сціснутых архіваў для якіх мае інструмент для здабывання. Cloc прымае каманду здабывання карыстальнікам пры ўмове, і пашырае архіў ў часовую дырэкторыю (створанай з File :: Temp), падлічвае радкі кода ў часовым каталогу, а затым выдаляе гэты каталог. У той час, як не асабліва карысна, калі маем справу з адной сціснутага архіва (у рэшце рэшт, калі вы збіраецеся ў любым выпадку увядзіце каманду здабывання, чаму не проста ўручную разгарнуць архіў?) Гэтая опцыя зручная для працы з некалькімі архівамі адначасова.Напрыклад, у вас ёсць наступныя зыходныя архівы на машыне Unix
 perl-5.8.5.tar.gz
Python-2.4.2.tar.gz
і вы хочаце, каб разлічваць увесь код ўнутры іх. Каманда будзе


Калі Unix машына мае GNU Tar (які можа распакаваць і атрымаць у адзін прыём) каманда можа быць скарочаны да
На кампутары Windows, з дапамогай WinZip, усталяванай у C: \ Program Files \ WinZip каманда будзе выглядаць
Java .ear файлы Zip-файлы, якія ўтрымліваюць дадатковыя файлы Zip. Cloc можа апрацоўваць укладзеныя ў сціснутыя архівы без працы пры ўмове, усе такія файлы сціскаюцца і захоўваюцца ў тым жа шляху. Прыклады падліку .ear файл Java у Unix і Windows:
Адрозненні ^–diff Пераключальнік дазваляе вымяраць адноснае змяненне ў зыходным кодзе і каментары паміж двума версіямі файла, каталога або архіва. Адрозненні выявіць значна больш, чым абсалютных кода пунктах двух версій файлаў. Напрыклад, кажуць, што зыходны файл мае 100 радкоў і яго распрацоўшчык пастаўляе новую версію з 102 ліній. Ён дадайце два радкі каментароў, або выдаліць семнаццаць радкоў зыходнага і дадаць чатырнаццаць зыходныя лініі і пяць радкоў каментароў, або ён зрабіў поўны рерайт, адкідаючы ўсе 100 арыгінальных ліній і дадання лініі 102 ўсіх новых крыніц? Опцыя розн распавядае, як былі дададзены многія лініі крыніцы, выдаляецца, змены або засталіся такімі ж, як і былі дададзены многія лініі каментароў, выдаленыя, зменены або засталіся ранейшымі.У дадатак да пар файлаў, можна даць Cloc пары каталогаў, або пары файлавых архіваў, або файлавы архіў і каталог. Cloc будзе спрабаваць выраўнаваць пары файлаў ўнутры каталогаў або архіваў і параўнаць адрозненні для кожнай пары. Напрыклад, каб паглядзець, што змянілася паміж GCC 4.4.0 і 4.5.0 можна зрабіць
Будзьце гатовыя чакаць некаторы час для вынікаў, хоць; –diff варыянт працуе значна павольней, чым абсалютная колькасць кода.Каб убачыць, як Cloc выраўноўвае файлы паміж двума архівамі, выкарыстоўваць –diff выраўноўванне варыянт
для атрымання файла align.txt які паказвае файл пары, а таксама дадаць файлы і выдаленыя. Сімвалы == і! = Перад кожным пары файлаў пазначыць, калі файлы ідэнтычныя (==), або калі яны маюць рознае ўтрыманне (! =).Вось прыклад высновы, які паказвае розніцу паміж Python 2.6.6 і 2.7рэлізы:
Звярніце ўвагу на дзве памылкі на файлавай Python-X / Mac / Модулі / QD / qdsupport.py. Гэты файл мае Python радкі дакументацыі (тэкст паміж парамі патройных двукоссяў), якія ўтрымліваюць C каментары. Cloc лечыць радкі дакументацыі як каментары і апрацоўвае іх спачатку пераўтварыць іх у З каментарамі, то з дапамогай C каментар выдаленне рэгулярны выраз. Укладзеныя каментары C выхад памылковыя вынікі, аднак.Там таксама выхад для мовы “(невядомага)”. Файлы ў гэтай катэгорыі не з’яўляюцца зыходныя файлы і, такім чынам, не ўлічваюцца; іх прысутнасць проста адзначаецца як быццам яны былі выдаленыя, дададзеныя або мадыфікаваны.Стварэнне карыстацкіх мовы Вызначэння ^Cloc можаце напісаць свае вызначэння мовы каментар да файла або можаце прачытаць вызначэння каментар з файла, перакрываючы убудаваныя вызначэння. Гэта можа быць карысна, калі вы хочаце выкарыстоўваць Cloc для падліку радкоў у мове яшчэ не ўключаны, каб змяніць асацыяцыі пашырэньні файлаў з мовамі, або змяніць спосаб існуючыя мовы падлічваюцца.Самы просты спосаб стварыць карыстацкі файл апісання мовы, каб зрабіць Cloc напісаць свае вызначэння ў файл, а затым змяніць файл:

стварае файл my_definitions.txt, якія могуць быць зменены, то чытаць назад у ні з –readLang выразнасці або –forceLang выразнасці варыянт. Розніца паміж варыянтамі былы вызначэння зліцця мовы з дадзенага файла з выкарыстаннем унутраных азначэнняў Cloc з cloc’taking прыярытэт, калі ёсць супадзенні. Опцыя –forceLang выразнасці, з другога боку, замяняе вызначэння Cloc зусім. Гэты варыянт мае недахоп у прадухіленні Cloc з падліку мовы, пашырэння карту для некалькіх моў, як гэтыя мовы патрабуюць дадатковай логікі, што так сабе не выяўленае ў файле апісанняў.
Кожны запіс мова складаецца з чатырох частак:
  1.      Назва мова, пачынаючы з калонкі 1.
  2.      Адзін або некалькі фільтраў, пачынаючы каментар у калонцы 5.
  3.      Адзін або некалькі імёнаў файлаў, якія пачынаюцца пашырэння ў калонцы 5.
  4.      Каэфіцыент 3. шкале пакаленне, пачынаючы з калонкі 5. Гэтая запіс павінна быць прадастаўлена, але яго значэнне не важна, калі вы не хочаце, каб параўнаць мову ў гіпатэтычнай мове праграмавання трэцяга пакалення.

Фільтр вызначае метад выдалення каментар тэкст з зыходнага файла. Напрыклад, запіс для C ++ выглядае наступным
C ++ мае два фільтра: па-першае, выдаліць радкі, якія пачынаюцца з дадатковым прабелам і затым ад //. Затым выдаліце ўсе каментары C. C каментары цяжка выказаць, як рэгулярныя выразы так выклік на Regexp :: Common, каб атрымаць адпаведны рэгулярны выраз, каб адпавядаць C каментары, якія затым выдаляюцца.Больш поўнае абмеркаванне розных варыянтаў фільтраў можа з’явіцца тут у будучыні. Выхад варыянт –writeLang выразнасці Cloc павінны забяспечыць дастатковую колькасць прыкладаў для матываваных людзей, каб змяніць або пашырыць вызначэння мовы Cloc ст.
Камбінат Справаздачы ^Калі вы кіраваць некалькімі праектамі праграмнага забеспячэння вы можаце быць зацікаўлены ў тым, лічыльнікі лініі па праекце, а не толькі па мове. Скажам, вы кіраваць тры праграмных праектаў званыя MySQL, PostgreSQL, SQLite і. Каманды, якія адказваюць за кожны з гэтых праектаў запусціць Cloc на іх зыходнага кода і даць Вам з выхадам. Напрыклад каманда MySQL робіць
і забяспечвае вас з файлавай MySQL5.1.42.txt. Змест трох файлаў вы атрымліваеце з’яўляюцца
У той час як гэтыя тры файла цікава, вы таксама хочаце, каб убачыць аб’яднаныя разлічвае з усіх праектаў. Гэта можа быць зроблена з –sum_reports опцыі Cloc у:
Спалучэнне справаздачу вырабляе два выходных файлаў, адзін для сум па мове праграмавання (databases.lang) і адзін праект (databases.file). Іх змест
Паведаміць файлы самі па сабе могуць быць падсумоўваюцца. Скажам, вы таксама кіраваць развіцця Perl і Python, і вы хочаце, каб адсочваць тых, лінія налічвае асобна ад праектаў баз дадзеных. Па-першае, стварэнне справаздач за Perl і Python асобна:
затым падвесці іх разам з
Нарэшце, аб’яднаць спалучэнне файлаў:
SQL *Cloc можаце напісаць вынікі ў выглядзе табліцы SQL стварыць і ўставіць заявы для выкарыстання з рэляцыйнымі базамі дадзеных праграм, такіх як SQLite, MySQL, PostgreSQL, Oracle, Microsoft SQL або. Пасля таго, як інфармацыя кол код у базе дадзеных, інфармацыя можа быць дапытаны і адлюстроўваюцца ў цікавымі спосабамі.База дадзеных, створаная з Cloc выхаду SQL мае дзве табліцы, metadata і  t:

У табліцы metadata змяшчае інфармацыю аб тым, калі быў зроблены Cloc выканання. Перамыкач –sqlAppend дазваляе аб’яднаць мноства трас у адзінай базе даных; пры кожным запуску дадае радок у табліцу метададзеных. Інфармацыя падлік код знаходзіцца ў табліцы T.

Давайце паўторым прыклады падліку код Perl, Python, SQLite, MySQL і PostgreSQL архівы, паказаныя ў прыкладзе вышэй спалучаюць справаздач, на гэты раз з дапамогай опцыі вываду SQL і рухавік SQLite базы дадзеных.

–sql Пераключальнік паказвае Cloc генераваць выснова ў выглядзе табліцы SQL ствараць і ўстаўляць каманды. Перамыкач прымае аргумент імя файла, каб напісаць гэтыя SQL заявы ў, або, калі аргумент 1 (лікавае адзін), ручаі выснову STDOUT. З SQLite праграмы каманднага радка, sqlite3, можаце прачытаць каманды з стандартнага ўводу, мы можам абысціся без захоўвання SQL заявы ў файл і выкарыстоўваць –sql 1 да гэтых труб непасрэдна ў выкананы файл SQLite:

–sql-Праект MySQL частка з’яўляецца неабавязковай; няма неабходнасці ўказваць назву праекта, калі працаваць толькі з адной базай кода. Аднак, паколькі мы будзем дадаваць лічыльнікі кода з чатырох іншых тарболов мы будзем толькі ў стане вызначыць дадзеныя, крыніца уваходнага сігналу, калі мы пастаўляем імя праекта для кожнага прагону.

Цяпер у нас ёсць база дадзеных нам трэба будзе прайсці ў камутатары –sqlнясьпешнага дапісваньня ўсялякай сказаць Cloc ня знішчыць гэтую базу дадзеных, але замест гэтага дадаць яшчэ дадзеныя:

Цяпер пачынаецца самае цікавае – у нас ёсць база дадзеных, code.db, з вялікай колькасцю інфармацыі аб пяці праектаў і можа пачаць яго запытаў для усялякіх цікавых фактаў.
Які самы доўгі файл на ўсе праекты?

фармат высновы па змаўчанні sqlite3 пакідае жадаць лепшага. Мы можам дадаць опцыю ў файл гс праграмы, ~ / .sqliterc, каб паказаць загалоўкі слупкоў:
.header на
Адзін можа ўзнікнуць спакуса таксама
калонка .mode
у ~ / .sqliterc але гэта выклікае праблемы, калі выхад мае больш аднаго радка, так як шырыня запісаў у першым радку рэгулююць максімальную шырыню для ўсіх наступных шэрагаў. Часта гэта прыводзіць да ўсечанай выхадзе – зусім не пажаданыя. Адным з варыянтаў з’яўляецца, каб напісаць выхадны фарматавання карыстацкіх дадзеных SQLite, такіх як sqlite_formatter. Ён выкарыстоўваецца так:

Адзначым таксама, што sqlite3 мае опцыю вываду HTML, –html, што таксама можа апынуцца карысным.
Які самы доўгі файл у кожным праекце?

Якія файлы ў кожным праекце ёсць большасць радкоў кода?

Якія зыходныя файлы З з больш чым 300 ліній маюць дачыненне каментар ніжэй 1%?

Якія дзесяць доўгія файлы (на аснове радкоў кода), якія не маюць ні аднаго каментара на ўсіх? Выключыць загаловак і YAML файлы.

Якія найбольш папулярныя мовы (у плане радкоў кода) у кожным праекце?

Screenshot 2015-09-15 21:45

Трэцяга пакалення Мова маштабныя каэфіцыенты ^

Cloc версіі да 1.50 па змаўчанні вылічаецца, за прадстаўленыя уваходаў, грубая ацэнка таго, колькі радкоў кода будзе трэба напісаць той жа код у гіпатэтычным мове трэцяга пакалення кампутара. Для атрымання гэтай высновы адзін зараз павінны выкарыстоўваць перамыкач –3.

Маштабныя каэфіцыенты былі атрыманы ад версіі мовы суадносінах зачапленнем пералічаных на вэб-сайце Мейс Consulting, http://softwareestimator.com/IndustryData2.htm 2006 года з выкарыстаннем гэтага раўнання:

Cloc маштабны каэфіцыент для мовы X = 3-га пакалення змаўчанні каэфіцыент фінансавай залежнасці / мова X суадносін уласных і пазыковых

напрыклад,

Cloc маштабны фактар ​​3-га пакалення для DOS Batch = 80/128 = 0,625

Самы вялікі недахоп гэтага падыходу заключаецца ў тым, што для перадач адносіны вызначаны для лагічных радкоў зыходнага кода не фізічныя лініі (які Cloc адлікаў). Значэння ў Cloc ў “маштабе” і “3-га пакалення. экв. калоны павінны быць прыняты з вялікім недаверам.

Абмежаванні ^

Вызначэнне каментары ў зыходным кодзе складаней, чым можна было б чакаць. Шматлікія мовы спатрэбіцца поўны парсер лічыцца правільна. Cloc не спрабуйце разабраць любы з моў яна накіравана разлічваць, і таму з’яўляецца недасканалым інструментам. Ніжэй прыведзены вядомыя праблемы:

1 Радкі, якія змяшчаюць як зыходны код і каментары лічацца радкоў кода.
2
Каментар маркеры ў радках або тут-дакументы разглядаюцца як фактычныя каментар маркераў і ня радковых литералов. Напрыклад наступныя радкі кода C

Screenshot 2015-09-15 21:46

па ўсёй бачнасці, Cloc як дзве лініі C кода (лініі з чорным тэкстам) і трох ліній каментары (лініі, якія маюць толькі чырвоны тэкст – ліній з чорнага і чырвонага тэксту разглядаюцца як код).
3
Lua доўгія каментары, не прызнаюцца.

Як замовіць падтрымку дадатковых моў ^

Калі Cloc не прызнае мову вы зацікаўлены ў падліку, размясціць наступную інфармацыю да функцый Запыт на SourceForge старонцы Cloc у:

1 Пашырэння, звязаныя з мовай. Калі мова не спадзявацца на пашырэньні файлаў, а замест гэтага працуе з імёнамі файлаў з фіксаванай або #! Праграма выклікі стыль, растлумачце, што гэта такое.
2
Апісанне таго, як вызначаны каментары.
3
Спасылкі на прыклад кода.

Аўтар ^

Аль Даніял

Падзякі ^

Вальфрам Реслер ўмове большасць прыкладаў кода ў набор тэстаў. Гэтыя прыклады са сваёй калекцыі прывітанне свет.

Ісмет Куршуноглу знайшлі памылкі з прылаўка свінкі і забяспечвае доступ да кампутара з вялікім целам MUMPS кода, каб праверыць Cloc.

Тод Хаггинс даў карысныя парады для фільтраў Visual Basic.

Антон Демичев знайшоў загана з прылаўка JSP ў Cloc v0.76 і напісаў генератар XML-выснове для –xml варыянт.

Рувім Томас адзначыў, што ІСО С99 дазваляе // як маркера каментара, пры ўмове, код для –no3 і –stdin-Імя, лічачы мова m4, і прапанаваў некалькі удасканаленняў карыстацкага інтэрфейсу.

Майкл Бэла ўмове код –opt-матч-F, –opt-ня-матч-е, –opt-матч-д, і –opt-ня-матч-д варыянтаў.

Махбуб Хусэйн натхніў –original-DIR і –skip-адзінасці варыянты, знайшлі памылку ў логіцы выяўлення дублікатаў файлаў і палепшыў фільтр JSP.

Рэндзі Sharo выяўленыя і выпраўленыя неинициализированной зменнай памылка для скрыптоў, якія маюць толькі адзін радок.

Стывен Бэйкер выяўленыя і выпраўленыя праблемы з генератарам вываду YAML.

Грег Той ўмове код, каб палепшыць выяўленне пусты радкі ў COBOL.

Джоэл Алівейра ўмове код, каб дазволіць –exclude-ліст-файла імя каталога ручка выключэнне.

Blazej Кролл ўмове код прадукаваць XSLT-файл, Cloc-diff.xsl, пры вытворчасці выснову XML для –diff варыянт.

Дзяніс Силаков ўзмацняецца код, які генеруе cloc.xsl пры выкарыстанні –by-файл і –by-файл за Lang варыянтаў, і пры ўмове XSL файл, які працуе з –diff вытворчасці.

Эндзі (awalshe@sf.net) пры ўмове, код выправіць некалькі памылак: правільны выснову –counted так, што толькі тыя файлы, якія выкарыстоўваюцца пры падліку кода з’яўляюцца і што вынікі паказаны мове, а не імя файла; дазваляюць –diff выхад з некалькіх трас будуць падведзены разам з –sum-справаздач.

Яры Аалто стварыў першапачатковы варыянт cloc.1.pod і падтрымлівае пакет Debian для Cloc.

Мікель Крыстыянс (mikkels@gmail.com) пры ўмове, вызначэння лічыльніка для Clojure і ClojureScript.

Развіццё Cloc часткова фінансуецца Northrop Grumman Corporation.

Copyright ^

Copyright (C) 2006-2015 ,.

Ліцэнзія ^

Гэтая праграма з’яўляецца свабодным праграмным забеспячэннем; вы можаце распаўсюджваць і / або змяняць яго ў адпаведнасці з умовамі GNU General Public License, апублікаванай Фундацыяй вольнага праграмнага забеспячэння, альбо версіі 2 Ліцэнзіі, альбо (па вашаму выбару) любы больш позняй версіі.

Comments are closed.