/pycscope

Cscope database generator for Python source code

Primary LanguagePythonGNU General Public License v2.0GPL-2.0

========
PyCscope
========

:Copyright: Copyright 2013 Peter Portante.  See LICENSE for details.
:Author: Peter Portante
:Release: 1.2.1
:Date: 2013/03/16

Purpose
-------

A python script to generate a cscope index from a Python source
tree.  `pycscope` uses Python's own parser and (C)oncrete (S)yntax
(T)ree to generate the index, so it is a bit more accurate than
plain cscope.


Usage
-----

::

    pycscope.py [-D] [-R] [-S] [-V] [-f reffile] [-i srclistfile] [files ...]
    -D              Dump the (C)oncrete (S)yntax (T)ree generated by the parser for each file
    -R              Recurse directories for files
    -S              Interpret simple strings as symbols
    -V              Print version and exit
    -f reffile      Use 'reffile' as cross-ref file name instead of 'cscope.out'
    -i srclistfile  Use the contents of 'srclistfile' as the list of source files to scan


License
-------

Copyright 2013 Peter Portante

This program is free software; you can redistribute it and/or
modify it under the terms of version 2 of the GNU General
Public License as published by the Free Software Foundation.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public
License along with this program; if not, write to the Free
Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Boston, MA  02110-1301, USA


Install
-------

PyCscope uses Python's distutils package for installation.
Use the following command to install this package::

    % python setup.py install


Features
--------

PyCscope has the following features:

    - Supports both Python 2.7 and Python 3
    - Command line interface
    - Output can be used by the `CscopeFinder` plugin for jEdit
    - Marks for all files ending in `.py`
    - Marks for all `class` definitions
    - Marks for all defined functions
    - Marks for function calls (algorithm is not perfect)
    - Marks for end-of-function (no search uses this mark yet)
    - Marks for imported modules (use the search for #include)
    - Marks for symbol assignment

A *mark* is an indicator to the cscope utility that something
of interest follows.


History
-------

pycscope 0.3a and later are written and copyright Peter Portante.
pycscope 0.1 - 0.3 were originally written and copyright Dean Hall.


Status
------

It works well enough to generate an index file that can be used
by the `CscopeFinder` plugin for jEdit.  Other editors are not tested.


Release Notes
-------------

This is PyCscope release 1.2.1

==========  ========= ======  ====================================================
Date        Release   Trac    Changes
==========  ========= ======  ====================================================
2013/03/16  1.2.1     N/A     Fix strings-as-symbols support (really).
----------  --------- ------  ----------------------------------------------------
2013/03/16  1.2       N/A     Fix strings-as-symbols support; fix end of function
                              marking; add the ability to only run the indexer;
                              remove the threading support that was broken.
----------  --------- ------  ----------------------------------------------------
2012/10/01  1.1       N/A     Fix Python3 support; enhance unit tests to run using
                              nose, generating coverage by default; fix broken
                              unit tests that were not properly run before the
                              switch to nose; add contrib area containing the
                              pyxcscope integration for (X)Emacs.
----------  --------- ------  ----------------------------------------------------
2012/09/20  1.0       N/A     Call it 1.0; update to use setuptools; drop .py from
                              installed script name; transition authorship from
                              Dean Hall to Peter Portante.
----------  --------- ------  ----------------------------------------------------
2012/09/19  0.3e-pajp N/A     Fix issues #7 and #8: we now properly handle symbols
                              closest to the assignment itself (rather than the
                              first one), and replace the crazy comma counting
                              method with a more stable pattern recognition method
                              that explicitly records which tuples should receive
                              the assignment mark; fixed handling of import state-
                              ments of the form, "from . import moda"
----------  --------- ------  ----------------------------------------------------
2012/09/18  0.3d-pajp N/A     Implement debugging help from Issue #9: dumpCst now
                              works on subtrees of tuples, not just lists.
----------  --------- ------  ----------------------------------------------------
2012/09/17  0.3c-pajp N/A     First pass fix of Issue #6 removing errant assertion
                              thus allowing symbol assignment marking to work as
                              coded (if not correctly, see Issue #7).
----------  --------- ------  ----------------------------------------------------
2012/09/11  0.3b-pajp N/A     Include changes from fspeech to get it working for
                              Python 3; add proper support for yield expression
                              following an augmented assignment; added support
                              for filename and line numbers when assertions fire;
                              fixed handling of commas on the left hand side of
                              assignment statements; gracefully handle errors
                              opening files.
                              GitHub issues: #5
----------  --------- ------  ----------------------------------------------------
2012/04/29  0.3a-pajp N/A     (NOTE: Failed to update version!)
                              Fix handling of DOS style line endings.
                              GitHub issues: #4
----------  --------- ------  ----------------------------------------------------
2012/04/13  0.3a-pajp N/A     (NOTE: Failed to update version!)
                              Fix handling of function definition decorators
                              GitHub issues: #2, #3
----------  --------- ------  ----------------------------------------------------
2012/03/11  0.3a-pajp N/A     (NOTE: Failed to update version!)
                              Change references from abstract syntax tree to
                              concrete syntax tree; fix handling of trailing
                              commas.
----------  --------- ------  ----------------------------------------------------
2012/03/05  0.3a-pajp N/A     Updated changes to support symbol assignment,
                              enhance unit test coverage, prepare code for PyCon
                              poster session.
----------  --------- ------  ----------------------------------------------------
2007/12/25  0.3       N/A     Included changes submitted by K. Rader of Google:
                              - Added the `-i` argument to specify a file-list
                                file
                              - Fixups to the header and footer to make a valid
                                file that cscope can read
----------  --------- ------  ----------------------------------------------------
2006/08/12  0.2       #33     Create 0.2 release.

                      #34     Change all "pyscope" to "pycscope"

                      #29     Make error reports less vague.

                      #23     Create distutils files.

                      #20     Create unit tests.

----------  --------- ------  ----------------------------------------------------
2006/08/02  0.1       None    Released to interested party by
                              email.

                      #19     Observe newlines even without
                              NEWLINE token.

                      #18     Newlines before MARK_FILE causes
                              exception.

                      #16     Work on "." default directory.

                      #10     Exception: TypeError in format.

                       #8     Class mark is incorrect.

                       #6     Create project space.
==========  ========= ======  ====================================================