Index: tools/telemetry/third_party/coverage/TODO.txt |
diff --git a/tools/telemetry/third_party/coverage/TODO.txt b/tools/telemetry/third_party/coverage/TODO.txt |
new file mode 100644 |
index 0000000000000000000000000000000000000000..f6036d2e5d646580ed7b6419f7fbc33376901b1d |
--- /dev/null |
+++ b/tools/telemetry/third_party/coverage/TODO.txt |
@@ -0,0 +1,285 @@ |
+Coverage.py TODO |
+ |
+Key: |
+ * Heading |
+ - Not done yet. |
+ + Done. |
+ x Not going to do. |
+ |
+* 4.0 |
+ |
+- What defaults should change? |
+ x --source = . ? |
+ x --branch = True ? |
+ |
+- Remove 2.3, 2.4, 2.5 limitations |
+ + set, sorted, reversed, rpartition |
+ + generator expressions |
+ + decorators |
+ + collections.defaultdict |
+ + .startswith((,)) |
+ + "with" statements |
+ - .format() ? |
+ + try/except/finally |
+ + with assertRaises |
+ + addCleanup instead of tearDown |
+ + exec statement can look like a function in py2 (since when?) |
+ - runpy ? |
+ + we can use "except ExcClass as e:" |
+ |
+- Plugins |
+ + Clean up |
+ + implement plugin support in CTracer |
+ + remove plugin support from PyTracer |
+ x add services: |
+ - filelocator |
+ - warning |
+ - dynamic_source_filename: return should be a canonical path |
+ - update the omit test to use "quux*" instead of "*quux*" |
+ + docs |
++ Make reports use filenames, not module names |
+- documentation |
+ - test helpers |
+ + cov.config["run:branch"] api (well, coverage.get_option etc) |
+ + "added in 4.0" |
+ - tweaks to theme? |
+ - Plugins! |
+ Once per process |
+ Once per file |
+ - create a file tracer |
+ - call its has_dynamic_source_file() |
+ Once per call |
+ Once per line |
+- build process |
+ - don't publish to nedbat.com any more (but still need the sample html reports) |
+ + don't need .px tooling |
+ - write a new nedbat.com/code/coverage page. |
+ - all doc links should point to rtfd |
++ Remove code only run on <2.6 |
++ Change data file to json |
++ Create data api |
++ gevent, etc. |
++ Remove the old command-line syntax |
+ + A pain, b/c of the structure of the tests. |
+ + BTW: make an easier way to write those tests. |
+ |
+- tests |
+ - test the kit has the right contents |
+ - test the kit installs the right stuff |
+ |
+ |
+* --source stuff: |
+ + warn if a package is never found. |
+ + warn if no data was collected |
+ - tie --source into reporting |
+ |
+* Soon |
+ |
++ Better omit handling that ignores files during measurement. |
+ - Deal with ~ in specified paths correctly. |
++ while TRUE claims to be partial. |
+ + A way to mark lines as partial branches, with a regex? |
+ + Default to "while True:", "while 1:" |
++ HTML keyboard short cuts |
+ |
+ |
+* 3.2 |
+ |
++ Some kind of indication in the HTML where yellow lines aren't going. |
+- Profile the reporting code: it's REALLY slow. |
+ - parser is doing some redundant work. |
++ Analysis class should do rolling up of stats also (actually Numbers) |
++ Update docs for --branch. |
+x self.coverage.data.has_arcs is ugly. |
++ Branches that never jump to nocover lines shouldn't be marked as partial. |
+ (see top of test_cogapp for examples) |
++ Maybe turning off yellow lines should make those lines green? |
++ A missing branch to leave the function shows an annotation of -1. Now "exit". |
++ XML report needs to get branch information. |
++ Add branch info to "coverage debug data" |
++ Polish up the help, and double-check the docs. |
+ |
+ |
+* Speed |
+ |
++ C extension collector |
+- bitvector in trace extension. |
+- Ignore certain modules |
++ Record linenos rather than (file,lineno) pairs in tracer. |
+x Tricky swapping of collector like figleaf, pycov, et al. (Don't need to do |
+ this with C collector). |
+- Seems like there should be a faster way to manage all the line number sets in |
+ CodeParser.raw_parse. |
+- If tracing, canonical_filename_cache overlaps with should_trace_cache. Skip |
+ canonical_filename_cache. Maybe it isn't even worth it... |
+- Would pre-allocating line number integers make the C tracer faster? It would |
+ use less memory. |
+ |
+ |
+* Accuracy |
+ |
+- Record magic number of module to ensure code hasn't changed |
+- Record version of coverage data file, so we can update what's stored there. |
+- Record options in coverage data file, so multiple runs are certain to make |
+ sense together. |
+- Do I still need the lines in annotate_file that deal specially with "else"? |
+ |
+ |
+* Power |
+ |
++ Branch coverage |
+ Titus' idea: |
+ 1: if a: |
+ 2: b = 2 |
+ 3: c = 3 |
+ if the coverage data shows 1,2,3, it was if-then. if it's 1,3, then the |
+ missing else was executed. |
++ API for getting coverage data. |
+- Instruction tracing instead of line tracing. |
+- Path tracing (how does this even work?) |
+- Count execution of lines |
+- Track callers of functions (ala std module trace) |
+- Method/Class/Module coverage reporting. |
+- .coverage files that can be kept separate, rather than accumulated. |
+- test/coverage map: http://rbtcollins.wordpress.com/2009/09/16/back-from-hiatus/ |
+ - Similar to figleaf's sections. |
+ |
+ |
+* Convenience |
+ |
+- Command line modules should also be directories, meaning all the modules in that |
+ directory. |
+- Why can't a morf also be a string, the name of a module? |
+- ignore by module as well as file? |
++ Use a .coveragerc file to control coverage.py without the programmatic API. |
+- Add a --data switch to explicitly control the data file on the command line. |
+x Why can't you specify execute (-x) and report (-r) in the same invocation? |
+ Maybe just because -x needs the rest of the command line? |
++ Support 2.3 - 3.1! |
+ http://pythonology.blogspot.com/2009/02/making-code-run-on-python-20-through-30.html |
+ http://www.rfk.id.au/blog/entry/preparing-pyenchant-for-python-3 |
+ http://pydev.blogspot.com/2008/11/making-code-work-in-python-2-and-3.html |
+ + Explicitly set pickle protocol to 2. |
+- An inference mode that marks lines as executed if they "must have been" executed: |
+ class definitions, etc, when coverage is started after the class is defined. |
+- Different categories of exclude pragma? So you can enable and disable them |
+ from the command line, to reconsider exclusions. |
++ Reporting on files never touched by coverage.py (package completeness) |
+- A setup.py command? http://jeetworks.org/node/50 |
+- Deltas: indicate the change in coverage percentage from the last run. |
++ Show lines missing rather than lines run in the reporting, since that's what |
+ you need to focus on. |
+ |
+ |
+* Beauty |
+ |
++ HTML report |
+ - Colored bars indicating coverage per file. |
+ - Package navigation. |
+ - Rolled-up statistics. |
+ - Some way to focus in on red and yellow |
+ - Show only lines near highlights? |
+ + Jump to next highlight? |
+ + Keyboard navigation: j and k. |
+ - Cookie for changes to pyfile.html state. |
+ + Clickable column headers on the index page. |
+ + Syntax coloring in HTML report. |
+ + Dynamic effects in HTML report. |
+ + Footer in reports pointing to coverage.py home page. |
+ + Baseline grid for linenumber font. |
+ + Separate out css and HTML. |
+ + Does it work right with utf-8 source files? http://www.python.org/dev/peps/pep-0263/ |
+ - Use vim modeline to determine tab width: http://vimdoc.sourceforge.net/htmldoc/options.html#modeline |
+ |
+ |
+* Community |
+ |
++ New docs, rather than pointing to Gareth's |
+ + Min python version is 2.3. |
+ - Three phases of work: |
+ - Collection |
+ - Analysis |
+ - Reporting |
+ - Distinction between: |
+ - ignore (files not to collect) |
+ - exclude (lines not to report as missed) |
+ - omit (files not to report) |
+ - Changes from coverage.py 2.x: |
+ - Bare "except:" lines now count as executable code. |
+ - Double function decorators: all decorator lines count as executable code. |
+ x Document the .coverage file format. |
+ + HTML reporting. |
+ - Much more detail about what's in the report. |
+ - References between pages are off: |
+ - They have <em> tags around them. |
+ - They use #anchors that don't survive the px->html conversion. |
++ Be sure --help text is complete (-i is missing). |
++ Host the project somewhere with a real bug tracker: bitbucket.org |
++ Point discussion to TIP |
+- PEP 8 compliance? |
+ |
+ |
+* Programmability |
+ |
++ Don't use sys.exit in CoverageScript. |
++ Remove singleton |
+ + Initialization of instance variables in the class. |
+ |
+ |
+* Installation |
+ |
+x How will coverage.py package install over coverage.py module? |
+x pip can't install it: it reads the coverage.py html page, and finds the kit link, |
+ but then can't handle the root-relative link. |
+ |
+ |
+* Modernization |
+ |
++ Decide on minimum supported version |
+ + 2.3 |
+ + Get rid of the basestring protection |
+ + Use enumerate |
+ + Use sets instead of dicts |
++ Switch from getopt to optparse. |
++ Get rid of the recursive nonsense. |
++ Docstrings. |
++ Remove huge document-style comments. |
+- Better names: |
+ + self.cache -> self.cache_filename -> CoverageData.filename |
+ + self.usecache -> CoverageData.use_file |
+- More classes: |
+ - Module munging |
+ + Coverage data files |
++ Why are some imports at the top of the file, and some in functions? |
++ Get rid of sys.exitfunc use. |
++ True and False (with no backward adaptation: the constants are new in 2.2.1) |
++ Get rid of compiler module |
+ + In analyzing code |
+ + In test_coverage.py |
++ Style: |
+ + lineno |
+ + filename |
+ |
+ |
+* Correctness |
+ |
+- What does -p (parallel mode) mean with -e (erase data)? |
+ |
+ |
+* Tests |
+ |
++ Switch to a real test runner, like nose. |
++ Test both the C trace function and the Python trace function. |
++ parser.py has no direct tests. |
++ Tests about the .coverage file. |
++ Tests about the --long-form of arguments. |
++ Tests about overriding the .coverage filename. |
+- Tests about parallel mode. |
++ Tests about assigning a multi-line string. |
+- Tests about tricky docstrings. |
++ Coverage test coverage.py! |
+- Tests that tracing stops after calling stop() |
+- More intensive thread testing. |
+x Tests about the "import __main__" in cmdline.py |
++ What happens if the -x script raises an exception? |
+- Test that the kit has all the proper contents. |