cscope is a
programming tool which works in console mode, text-based interface, that allows
computer programmer
A computer programmer, sometimes referred to as a software developer, a software engineer, a programmer or a coder, is a person who creates computer programs — often for larger computer software.
A programmer is someone who writes/creates ...
s or
software developer
Software development is the process of conceiving, specifying, designing, Computer programming, programming, software documentation, documenting, software testing, testing, and Software bugs, bug fixing involved in creating and maintaining applic ...
s to search
source code
In computing, source code, or simply code, is any collection of code, with or without comments, written using a human-readable programming language, usually as plain text. The source code of a program is specially designed to facilitate the wo ...
of the programming language
C, with some support for
C++ and
Java
Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's List ...
. It is often used on very large projects to aid
code comprehension to find source code, functions, declarations, definitions and regular expressions given a
text string. cscope is free and released under a
BSD license. The original developer of cscope is Joe Steffen.
History
The history of the tool goes back to the days of the
PDP-11
The PDP-11 is a series of 16-bit minicomputers sold by Digital Equipment Corporation (DEC) from 1970 into the 1990s, one of a set of products in the Programmed Data Processor (PDP) series. In total, around 600,000 PDP-11s of all models were sold, ...
, but it is still used by developers who are accustomed to using the
vi or
Vim editor or other text-based editors, instead of editors based on
graphical user interface
The GUI ( "UI" by itself is still usually pronounced . or ), graphical user interface, is a form of user interface that allows users to interact with electronic devices through graphical icons and audio indicator such as primary notation, inste ...
s (GUIs). The functions in cscope are available to varying degrees in modern graphical source editors.
Mode of use
cscope is used in two phases. First a developer builds the cscope database. The developer can often use
find
or other
Unix
Unix (; trademarked as UNIX) is a family of multitasking, multiuser computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, and ot ...
tools to get the list of filenames needed to index into a file called
cscope.files
. The developer then builds a database using the command
cscope -b -q -k
. The
k
flag is intended to build a database for an operating system or C library source code. It will not look in
/usr/include
. Second, the developer can now search those files using the command
cscope -d
. Often an index must be rebuilt whenever changes are made to files.
In software development it is often very useful to be able to find the callers of a function because this is the way to understand how code works and what other parts of the program expect from a function. cscope can find the callers and callees of functions, but it is not a compiler and it does that by searching the text for keywords. This has the disadvantages that macros and duplicate symbol names can generate an unclear graph. There are other programs that can extract this information by
parsing
Parsing, syntax analysis, or syntactic analysis is the process of analyzing a string of symbols, either in natural language, computer languages or data structures, conforming to the rules of a formal grammar. The term ''parsing'' comes from Lati ...
the source code or looking at the generated object files.
cscope was created to search content within C files, but it can also be used (with some limits) for C++ and Java files.
GUI frontends
Three graphical user interface (GUI) frontends are available for cscope which ease its use.
* KScope runs on
KDE
KDE is an international Free software movement, free software community that develops free and open-source software. As a central development hub, it provides tools and resources that allow collaborative work on this kind of software. Well-know ...
and integrates the
Kate text editor. The KScope project is no longer being maintained.
* Seascope runs on
PyQt4 and integrates the
Scintilla text editor.
* Gscope is based on GTK2 and GTK3 and integrates with multiple text editors.
CCTree is a native Vim plugin that integrates with the Vim editor and offers functions similar to KScope and Seascope.
See also
*
ctags
Ctags is a programming tool that generates an index (or tag) file of names found in source and header files of various programming languages to aid code comprehension. Depending on the language, functions, variables, class members, macros and ...
*
Cross-reference
The term cross-reference (abbreviation: xref) can refer to either:
* An instance within a document which refers to related information elsewhere in the same document. In both printed and online dictionaries cross-references are important because ...
(X-Ref)
*
LXR Cross Referencer
LXR Cross Referencer, usually known as LXR, is a general-purpose source code indexer and cross-referencer for code comprehension that provides web-based browsing of source code, with links to the definition and usage of any identifier.
History ...
, Web-based source code browsing with hyperlinks
*
OpenGrok
References
External links
*{{Official website
Source code navigation tools
Code comprehension tools
Code navigation tools
Static program analysis tools
Linux programming tools
Unix programming tools
Software using the BSD license