rizsotto.mailinglist marked 13 inline comments as done. rizsotto.mailinglist added a comment.
thanks Devin for your comments. made some changes already (will upload it tonight after some tests). ================ Comment at: tools/scan-build-py/CHANGES.txt:1 @@ +1,1 @@ +v<version>, <date> -- Initial release. ---------------- dcoughlin wrote: > Is this one needed too? in order to make this code a standalone python tool tool, we need this file. (see llvm/utils/lit directory for example.) ================ Comment at: tools/scan-build-py/MANIFEST.in:1 @@ +1,2 @@ +include README.md +include *.txt ---------------- dcoughlin wrote: > How about this one? Is it needed in clang trunk? in order to make this code a standalone python tool tool, we need this file. (see llvm/utils/lit directory for example.) ================ Comment at: tools/scan-build-py/libear/__init__.py:1 @@ +1,2 @@ +# -*- coding: utf-8 -*- +# The LLVM Compiler Infrastructure ---------------- dcoughlin wrote: > How does this file fit into the overall build picture? Will this file go away > once scan-build-py is built with the common clang cmake? this is quiet confusing me. previously you were asking make it work without installation. this file makes it possible to compile the `ear` library compiled before the build runs to use as preloaded library. the thing which is not needed is the CMakefile actually. ================ Comment at: tools/scan-build-py/libear/__init__.py:99 @@ +98,3 @@ + def dl_libraries(self): + pass + ---------------- dcoughlin wrote: > I gather the intent is that subclasses will override to provide their own > versions of these methods? If so, these methods need to be documented so that > people adding new support for additional platforms know what they should > provide in their subclasses. > > If there are reasonable defaults (for example., `[]` for `dl_libraries`), > those should be returned here rather than `pass`. If not, these should > probably raise an exception indicating they must be implemented rather than > silently doing nothing. now rise `NotImplementedError` runtime exception. ================ Comment at: tools/scan-build-py/libear/__init__.py:166 @@ +165,3 @@ + self.ctx = context + self.results = {'APPLE': sys.platform == 'darwin'} + ---------------- dcoughlin wrote: > What does this do? Why is it hard-coded? this is added to mimic `cmake` behaviour. it is used in the `config.h.in` file. ================ Comment at: tools/scan-build-py/libscanbuild/command.py:20 @@ +19,3 @@ + +def classify_parameters(command): + """ Parses the command line arguments of the given invocation. """ ---------------- dcoughlin wrote: > I think it would be good to document the keys and meaning of the returned > dictionary. Or perhaps it would be better represented as class? now documented when create the return value. (creating class would not bring much to the kitchen i think.) ================ Comment at: tools/scan-build-py/libscanbuild/command.py:23 @@ +22,3 @@ + + ignored = { + '-g': 0, ---------------- dcoughlin wrote: > I think it would good to document what the value in this mapping means > (number of expected parameters). I realize ccc-analyzer in the original > scan-build is similarly un-documented, but we should do better here! > > Also: should this include all the arguments `IgnoredOptionMap` in > ccc-analyzer? It is missing `-u' and adds '-g'. Or are these changes > intentional? `-u` is part of ignored linker flags. (see a few line above) `-g` is added to mimic the `ccc-analyzer` results. comment about key, value is added. ================ Comment at: tools/scan-build-py/libscanbuild/driver.py:1 @@ +1,2 @@ +# -*- coding: utf-8 -*- +# The LLVM Compiler Infrastructure ---------------- dcoughlin wrote: > Why is this file called "driver"? any recommendation? it was the only entry point before the interposition was introduced. so it was the driver of the libscanbuild library. ================ Comment at: tools/scan-build-py/libscanbuild/driver.py:34 @@ +33,3 @@ +def main(bin_dir): + """ Entry point for 'scan-build'. """ + ---------------- dcoughlin wrote: > Should this be 'intercept-build'? can be anything, but would make it rhyme with the module name... ================ Comment at: tools/scan-build-py/libscanbuild/driver.py:67 @@ +66,3 @@ + except Exception: + logging.exception("Something unexpected had happened.") + return 127 ---------------- dcoughlin wrote: > I think this error message can be improved. Perhaps "Unexpected error running > intercept-build"? this line is printed as: intercept-build: ERROR: Something unexpected had happened. (and the stack-trace) because the logging formating. so, 'intercept-build' and 'error' will be part of the message anyway. ================ Comment at: tools/scan-build-py/libscanbuild/intercept.py:98 @@ +97,3 @@ + + if args.override_compiler or not ear_library_path: + environment.update({ ---------------- dcoughlin wrote: > What is the purpose of setting CC/CXX environmental variables here? Doesn't > libear intercept calls to the compiler? Why is intercept-cc/cxx needed? documentation added. this branch is used when preload does not work. (eg.: windows builds or failed to compile `libear` for unknown reasons.) ================ Comment at: tools/scan-build-py/libscanbuild/runner.py:63 @@ +62,3 @@ + 'error_type', 'error_output', 'exit_code']) +def report_failure(opts): + """ Create report when analyzer failed. ---------------- dcoughlin wrote: > If it is hard to make sure that opts has the right dictionary keys, maybe it > might be better to create a value class with methods? `require` decorator added to ensure the keys. (create class would be bloat in my view.) ================ Comment at: tools/scan-build-py/libscanbuild/runner.py:113 @@ +112,3 @@ +@require(['clang', 'analyze', 'directory', 'output']) +def run_analyzer(opts, continuation=report_failure): + """ It assembles the analysis command line and executes it. Capture the ---------------- dcoughlin wrote: > What is the point of "continuation"? this module use continuation to pass the current state and the method to call. i find this abstraction much better than create class methods (or a single method as it in the Perl implementation). Specially better if you want to test these methods! ================ Comment at: tools/scan-build-py/libscanbuild/shell.py:1 @@ +1,2 @@ +# -*- coding: utf-8 -*- +# The LLVM Compiler Infrastructure ---------------- dcoughlin wrote: > I'm surprised there is not a library to do this. > > Also, maybe a better name for this module is "shell_escaping". the system library package called `shlex` and it has only the decode method. and failed on many of the real life tests. (in previous version i used that.) i don't find `shell_escaping` a _better_ name. specially when i think how the method names would be: `shell_escaping.encode`. i think `shell.encode` is more descriptive. ================ Comment at: tools/scan-build-py/setup.py:1 @@ +1,2 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- ---------------- dcoughlin wrote: > Is this needed in the clang repo? in order to make this code a standalone python tool tool, we need this file. (see llvm/utils/lit directory for example.) http://reviews.llvm.org/D9600 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits