[PATCH][RFC] llvm-cov HTML generation

Xinliang David Li via llvm-commits llvm-commits at lists.llvm.org
Mon Mar 7 13:26:18 PST 2016


The patch looks pretty good now.

>    std::string OutputPath = OutputDirectory;
>    if (OutputPath != "") {
>      sys::fs::create_directories(OutputDirectory);
>      OutputPath += "/functions." + FileExt;

This is not portable. Try:

  llvm::sys::path::append(...) method

There are other places with similar code.

And it seems test cases are still missing?

thanks,

David






On Fri, Mar 4, 2016 at 10:46 AM, Harlan Haskins via llvm-commits <
llvm-commits at lists.llvm.org> wrote:

> Somehow the CSS include file didn’t make it into that diff.
>
> — Harlan
>
> On Mar 3, 2016, at 5:02 PM, Harlan Haskins via llvm-commits <
> llvm-commits at lists.llvm.org> wrote:
>
> Hi all,
>
> Thanks again for the reviews!
>
> I’ve restructured how I handle subviews and pulled out the common
> behavior. I also addressed the issue with highlighting and showing macro
> expansions (and found a possible bug in clang because of it).
>
> Attached is a) a new patch, and b) an HTML file showing a single line
> multi-macro expansion.
>
> Thanks,
> Harlan Haskins
>
> <macro.c.html>
> <llvm-cov-html.diff>
>
> On Mar 2, 2016, at 3:00 PM, Harlan Haskins via llvm-commits <
> llvm-commits at lists.llvm.org> wrote:
>
> Oh, I see! Yeah, this seems like something I overlooked. The HTML view
> currently just shows two expansions, one after the other.
>
> I’ll revise the subview rendering with this in mind. Thanks for the simple
> example case!
>
> Best,
> Harlan
>
> On Mar 2, 2016, at 2:40 PM, Xinliang David Li via llvm-commits <
> llvm-commits at lists.llvm.org> wrote:
>
>
>
> On Wed, Mar 2, 2016 at 1:41 PM, Harlan Haskins <hhaskins at apple.com> wrote:
>
>> Hi David,
>>
>> Specifically with renderSubviews, in my refactor it seemed that their
>> bodies were different enough (i.e. SourceCoverageViewConsole needs to track
>> state between loop invocations to know whether or not to display a final
>> view divider, and the common behavior is really just looping over the
>> instantiation and expansion subviews. I can investigate converging them
>> more, but I think it’s going to increase complexity.
>>
>
> Emitting the final divider is easy to abstract away. The main difference I
> see is that in Console view, if there are multiple macro expansions in the
> same line, the line will be re-rendered again in order to highlight the
> macro. For instance given the following line with two macros,
>
>    MY_MACRO(10, 10); MY_MACRO(20,10);    // line 10
>
> The console dump will be two lines:
>
> 1|   10| MY_MACRO(10, 10); MY_MACRO(20,10);    // line 10
>          ^^^^^^^^^^^
>       .... expansion lines
>
>          MY_MACRO(10, 10); MY_MACRO(20,10);    // line 10
>                                                      ^^^^^^^^^^^^^
>         .... expansion lines
>
>
> Does HTML view lose that functionality?
>
> Also the template instantiation subview rendering code looks sufficiently
> close between two classes.
>
> thanks,
>
> David
>
>
>
>>
>> Also, I definitely need to add a test case.
>>
>> Thanks!
>> Harlan
>>
>> On Mar 2, 2016, at 10:43 AM, Xinliang David Li <xinliangli at gmail.com>
>> wrote:
>>
>> Hi Harlan,
>>
>> This looks great! Some high level comments. I find the code can be
>> further restructured
>> 1) high level methods can be commoned between two derived classes  (and
>> pushed to the base class) -- such as renderSubviews
>> 2) the subclasses just need to provide virtual functions that implement
>> the view specific low level routines.
>>
>> Also there does not seem to be a test case.
>>
>> thanks,
>>
>> David
>>
>> On Tue, Mar 1, 2016 at 6:03 PM, Harlan Haskins via llvm-commits <
>> llvm-commits at lists.llvm.org> wrote:
>>
>>> Oops, forgot to add a file to the patch.
>>>
>>> New patch attached.
>>>
>>>
>>>
>>>
>>> On Mar 1, 2016, at 5:48 PM, Harlan Haskins via llvm-commits <
>>> llvm-commits at lists.llvm.org> wrote:
>>>
>>> Hi all,
>>>
>>> I’ve got a preliminary implementation of HTML generation for llvm-cov’s
>>> coverage reports.
>>>
>>> The patch adds 2 flags to llvm-cov show:
>>>
>>>    - -format [html | console]
>>>    - -output-dir <dirname>
>>>
>>>
>>> Specifying -format=console will perform the current behavior (now the
>>> default), and -format=html will generate an HTML report.
>>> If -output-dir is specified, then the output is split into one html or
>>> txt file per source file, named <source-name>.<ext>, with a directory
>>> structure that mimics the file system structure.
>>>
>>> If neither are provided, the behavior remains the same.
>>>
>>> I’m hoping to add an index with a browsable list of files within their
>>> directories, but for now I’ve attached the patch and a sample HTML file (In
>>> this case, AliasAnalysis.h, as included by swiftc).
>>>
>>> Thanks,
>>> Harlan Haskins
>>>
>>> <AliasAnalysis.h.html>
>>> <llvm-cov-html.diff>
>>> _______________________________________________
>>> llvm-commits mailing list
>>> llvm-commits at lists.llvm.org
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>>
>>>
>>>
>>> _______________________________________________
>>> llvm-commits mailing list
>>> llvm-commits at lists.llvm.org
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>>
>>>
>>
>>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160307/184102ae/attachment.html>


More information about the llvm-commits mailing list