Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(180)

Unified Diff: third_party/pylint/pyreverse/main.py

Issue 10447014: Add pylint to depot_tools. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: Fix unittests. Created 8 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « third_party/pylint/pyreverse/diagrams.py ('k') | third_party/pylint/pyreverse/utils.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/pylint/pyreverse/main.py
diff --git a/third_party/pylint/pyreverse/main.py b/third_party/pylint/pyreverse/main.py
new file mode 100644
index 0000000000000000000000000000000000000000..da80bd63a275b2a566f5fe1eacdb13e674e405dc
--- /dev/null
+++ b/third_party/pylint/pyreverse/main.py
@@ -0,0 +1,129 @@
+# # Copyright (c) 2000-2010 LOGILAB S.A. (Paris, FRANCE).
+# http://www.logilab.fr/ -- mailto:contact@logilab.fr
+#
+# This program is free software; you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or (at your option) any later
+# version.
+#
+# 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.,
+# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+"""
+ %prog [options] <packages>
+
+ create UML diagrams for classes and modules in <packages>
+"""
+
+import sys, os
+from logilab.common.configuration import ConfigurationMixIn
+from logilab.astng.manager import ASTNGManager
+from logilab.astng.inspector import Linker
+
+from pylint.pyreverse.diadefslib import DiadefsHandler
+from pylint.pyreverse import writer
+from pylint.pyreverse.utils import insert_default_options
+
+OPTIONS = (
+("filter-mode",
+ dict(short='f', default='PUB_ONLY', dest='mode', type='string',
+ action='store', metavar='<mode>',
+ help="""filter attributes and functions according to
+ <mode>. Correct modes are :
+ 'PUB_ONLY' filter all non public attributes
+ [DEFAULT], equivalent to PRIVATE+SPECIAL_A
+ 'ALL' no filter
+ 'SPECIAL' filter Python special functions
+ except constructor
+ 'OTHER' filter protected and private
+ attributes""")),
+
+("class",
+dict(short='c', action="append", metavar="<class>", dest="classes", default=[],
+ help="create a class diagram with all classes related to <class>;\
+ this uses by default the options -ASmy")),
+
+("show-ancestors",
+dict(short="a", action="store", metavar='<ancestor>', type='int',
+ help='show <ancestor> generations of ancestor classes not in <projects>')),
+("all-ancestors",
+dict(short="A", default=None,
+ help="show all ancestors off all classes in <projects>") ),
+("show-associated",
+dict(short='s', action="store", metavar='<ass_level>', type='int',
+ help='show <ass_level> levels of associated classes not in <projects>')),
+("all-associated",
+dict(short='S', default=None,
+ help='show recursively all associated off all associated classes')),
+
+("show-builtin",
+dict(short="b", action="store_true", default=False,
+ help='include builtin objects in representation of classes')),
+
+("module-names",
+dict(short="m", default=None, type='yn', metavar='[yn]',
+ help='include module name in representation of classes')),
+# TODO : generate dependencies like in pylint
+#("package-dependencies",
+#dict(short="M", action="store", metavar='<package_depth>', type='int',
+ #help='show <package_depth> module dependencies beyond modules in \
+#<projects> (for the package diagram)')),
+("only-classnames",
+dict(short='k', action="store_true", default=False,
+ help="don't show attributes and methods in the class boxes; \
+this disables -f values")),
+("output", dict(short="o", dest="output_format", action="store",
+ default="dot", metavar="<format>",
+ help="create a *.<format> output file if format available.")),
+)
+# FIXME : quiet mode
+#( ('quiet',
+ #dict(help='run quietly', action='store_true', short='q')), )
+
+class PyreverseCommand(ConfigurationMixIn):
+ """base class providing common behaviour for pyreverse commands"""
+
+ options = OPTIONS
+
+ def __init__(self, args):
+ ConfigurationMixIn.__init__(self, usage=__doc__)
+ insert_default_options()
+ self.manager = ASTNGManager()
+ self.register_options_provider(self.manager)
+ args = self.load_command_line_configuration()
+ self.run(args)
+
+ def run(self, args):
+ """checking arguments and run project"""
+ if not args:
+ print self.help()
+ return
+ # insert current working directory to the python path to recognize
+ # dependencies to local modules even if cwd is not in the PYTHONPATH
+ sys.path.insert(0, os.getcwd())
+ try:
+ project = self.manager.project_from_files(args)
+ linker = Linker(project, tag=True)
+ handler = DiadefsHandler(self.config)
+ diadefs = handler.get_diadefs(project, linker)
+ finally:
+ sys.path.pop(0)
+
+ if self.config.output_format == "vcg":
+ writer.VCGWriter(self.config).write(diadefs)
+ else:
+ writer.DotWriter(self.config).write(diadefs)
+
+
+class Run:
+ """pyreverse main class"""
+ def __init__(self, args):
+ """run pyreverse"""
+ PyreverseCommand(args)
+
+if __name__ == '__main__':
+ Run(sys.argv[1:])
« no previous file with comments | « third_party/pylint/pyreverse/diagrams.py ('k') | third_party/pylint/pyreverse/utils.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698