https://github.com/universal-ctags/codebase
Reference codebase for Universal-ctags
https://github.com/universal-ctags/codebase
ctags
Last synced: 3 months ago
JSON representation
Reference codebase for Universal-ctags
- Host: GitHub
- URL: https://github.com/universal-ctags/codebase
- Owner: universal-ctags
- License: gpl-2.0
- Created: 2019-02-01T12:23:18.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2025-05-18T09:25:33.000Z (5 months ago)
- Last Synced: 2025-06-07T12:46:10.077Z (4 months ago)
- Topics: ctags
- Language: Shell
- Size: 104 KB
- Stars: 4
- Watchers: 4
- Forks: 5
- Open Issues: 3
-
Metadata Files:
- Readme: README.rst
- License: LICENSE
Awesome Lists containing this project
README
==============================================================
Reference codebase for Universal-ctags
==============================================================This is the reference codebase for measuring the performance of
Universal-ctags parsers.How to run ctags for the code base
==============================================================We assume you may have enough storage space on your PC.
1. Get the input code for a parser for the language you are
interested in with following command line:.. code-block:: console
$ ./codebase clone
The following command lists available languages:
.. code-block:: console
$ ./codebase list-languages
# LANGUAGE CODE
C linux
C++ qtbase rocksdb
Go buildah kubernetes
HTML cockpit
JavaScript cockpit
LdScript linux
ObjectiveC gnustep-libs-baseAn example preparing C source code:
.. code-block:: console
$ ./codebae clone C
...2. Run Universal-ctags for the cloned code with following command line:
.. code-block:: console
$ [CTAGS_EXE=${where your ctags executable is}] ./codebase ctags []
codebase refers *CTAGS_EXE* environment variable to run ctags.
`--ctags ${where your ctags executable is}` is an alternative way to
specify the ctags executable you want to test.You can run ctags with different option combination.
We call such option combination *PROFILE*.
The following command is for listing predefined profiles:.. code-block:: console
$ ./codebase list-profiles
PROFILE DESCRIPTION
maximum0 Enables all extras, fields, and kinds
minimum0 Disables all fields and extras.Results are displayed to your terminal. Tee'ed output goes
to a file under results/ directory.An example command line for running C parser:
.. code-block:: console
$ cd /home/yamato/hacking/ctags-github; ./autogen.sh; ./configure; make
$ cd /home/yamato/hacking/codebase
$ CTAGS_EXE=/home/yamato/hacking/ctags-github/ctags ./codebase ctags C
version: 2c46f6d4
features: +wildcards +regex +iconv +option-directory +xpath +json +interactive +sandbox +yaml +aspell +packcc
log: results/2c46f6d4,C...................,..........,time......,default...,2019-03-18-12:47:20.log
tagsoutput: /dev/null
cmdline: + /home/yamato/var/ctags-github/ctags --quiet --options=NONE --sort=no --options=profile.d/maps --totals=yes --languages=C -o - -R code/linux code/php-src code/ruby
27886 files, 19784832 lines (555082 kB) scanned in 15.1 seconds (36686 kB/s)
1158391 tags added to tag filereal 0m15.172s
user 0m14.735s
sys 0m0.399s
+ set +xIn the above output, "36686 kB/s" represents the speed of parsing of C parser.
"1158391 tags" represents the number of tags captured by C parser.codebase stores the cloned source code to `code` directory. The directory is
repository base. codebase makes another directory, `lang`, for your convince.
As the name shows, `lang` is language bases. You can run ctags directly on
a directory for the language you are interested in:.. code-block:: console
[codebase]$ cd lang
[codebase/lang]$ ls
Asm C++ GDScript Java Kconfg Lua Markdown Perl R SQL VHDL
Basic CMake Go JavaScript Kotlin Make Meson PHP RSpec SystemTap XSLT
C Fortran HTML Julia LdScript Man OpenAPI PuppetManifest Ruby Vala YACC
[codebase/lang]$ ~/var/ctags-developing/ctags -R JavaScript
ctags: Warning: ignoring null tag in JavaScript/mediawiki/.svgo.config.js(line: 6)
ctags: main/entry.c:1454: registerEntry: Assertion `corkIndex != CORK_NIL' failed.
ctags: main/entry.c:1454: parsing JavaScript/mediawiki/.svgo.config.js:6 as JavaScript
Aborted (core dumped)How to add your code to code base
==============================================================You have to write a .lcopy file and put it to lcopy.d directory.
See lcopy.d/linux.lcopy as an example::REPO=https://github.com/torvalds/linux
ALIGNMENT=v4.20
LANGUAGES=C,LdScript,Asm,Kconfig,DTS`REPO` specifies a git repository. `ALIGNMENT` is a tag put on the
git repository. `ALIGNMENT` allows users of codebase to get the same
source tree. `LANGUAGES` is a comma separated language list.How to add your profile to preset list
==============================================================You have to write a .ctags file and put it to profile.d directory.
A line started from "# @" is used as a description for the profile.
You may wan to use `--options-maybe` to extend profile without
modifying existing .ctags files.Let's optimize our parsers!
Masatake YAMATO