Metadata-Version: 2.4
Name: cppclean
Version: 0.13
Summary: Find problems in C++ source that slow development of large code bases.
Home-page: https://github.com/myint/cppclean
License: Apache license
Classifier: Environment :: Console
Classifier: Intended Audience :: Developers
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Software Development :: Quality Assurance
License-File: COPYING
Dynamic: classifier
Dynamic: description
Dynamic: home-page
Dynamic: license
Dynamic: license-file
Dynamic: summary

========
cppclean
========

.. image:: https://travis-ci.org/myint/cppclean.svg?branch=master
   :target: https://travis-ci.org/myint/cppclean
   :alt: Build status


Goal
====

cppclean attempts to find problems in C++ source that slow development
in large code bases, for example various forms of unused code.
Unused code can be unused functions, methods, data members, types, etc
to unnecessary #include directives. Unnecessary #includes can cause
considerable extra compiles increasing the edit-compile-run cycle.

This is a fork of the original cppclean project. The original project home
page, which no longer contains code, is at https://code.google.com/p/cppclean/.


Features
========

cppclean finds the following:

- Classes with virtual methods, no virtual destructor, and no bases
- Global/static data that are potential problems when using threads
- Functions that are declared but not defined
- Unnecessary forward class declarations
- Unnecessary function declarations
- Undeclared function definitions
- Unnecessary #includes in header files
    - No direct reference to anything in the header
    - Header is unnecessary if classes were forward declared instead
- Inconsistent case in #includes (``foo.h`` versus ``Foo.h``)
- (planned) Unnecessary #includes in source files
- (planned) Source files that reference headers not directly #included,
  ie, files that rely on a transitive #include from another header
- (planned) Unused members (private, protected, & public) methods and data
- (planned) ``using namespace std`` in header files
- (planned) Methods that are declared but not defined

AST is Abstract Syntax Tree, a representation of parsed source code
(https://en.wikipedia.org/wiki/Abstract_syntax_tree).


Installation
============

::

    $ pip install --upgrade cppclean


Run
===

::

    $ cppclean <path>


Multiple include paths can be specified::

    $ cppclean --include-path=directory1 --include-path=directory2 <path>


Current status
==============

The parser works pretty well for header files, parsing about 99% of Google's
header files. Anything which inspects structure of C++ source files should
work reasonably well. Function bodies are not transformed to an AST,
but left as tokens.


Non-goals
=========

- Parsing all valid C++ source
- Handling invalid C++ source gracefully
- Compiling to machine code (or anything beyond an AST)


Links
=====

* Coveralls_

.. _`Coveralls`: https://coveralls.io/r/myint/cppclean
