[PATCH][RFC] llvm-cov HTML generation

Harlan Haskins via llvm-commits llvm-commits at lists.llvm.org
Mon Mar 7 16:56:36 PST 2016


I really need to get better at patches.

Updated patch without the build directory:



> On Mar 7, 2016, at 2:03 PM, Harlan Haskins via llvm-commits <llvm-commits at lists.llvm.org> wrote:
> 
> Thanks! I’m still working out how to properly tests the HTML generation (I need to build a compatible version of clang to make compatible profdata inputs.)
> 
> In the meantime, I think I’ve fixed the portability issues that you and Maggie suggested, as well as a preliminary index implementation and a better design.
> 
> Let me know what you think!
> 
> Thanks,
> Harlan
> 
> <llvm-cov-html.diff>
> <macro-coverage.zip>
> 
>> On Mar 7, 2016, at 1:26 PM, Xinliang David Li <xinliangli at gmail.com <mailto:xinliangli at gmail.com>> wrote:
>> 
>> 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 <mailto: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 <mailto: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 <mailto: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 <mailto:llvm-commits at lists.llvm.org>> wrote:
>>>>> 
>>>>> 
>>>>> 
>>>>> On Wed, Mar 2, 2016 at 1:41 PM, Harlan Haskins <hhaskins at apple.com <mailto: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 <mailto: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 <mailto: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 <mailto: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 <mailto:llvm-commits at lists.llvm.org>
>>>>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits <http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits>
>>>>>> 
>>>>>> 
>>>>>> _______________________________________________
>>>>>> llvm-commits mailing list
>>>>>> llvm-commits at lists.llvm.org <mailto:llvm-commits at lists.llvm.org>
>>>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits <http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits>
>>>>>> 
>>>>>> 
>>>>> 
>>>>> 
>>>>> _______________________________________________
>>>>> llvm-commits mailing list
>>>>> llvm-commits at lists.llvm.org <mailto:llvm-commits at lists.llvm.org>
>>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits <http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits>
>>>> _______________________________________________
>>>> llvm-commits mailing list
>>>> llvm-commits at lists.llvm.org <mailto:llvm-commits at lists.llvm.org>
>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits <http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits>
>>> 
>>> _______________________________________________
>>> llvm-commits mailing list
>>> llvm-commits at lists.llvm.org <mailto:llvm-commits at lists.llvm.org>
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits <http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits>
>> 
>> 
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at lists.llvm.org <mailto:llvm-commits at lists.llvm.org>
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits <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/60fa2a27/attachment-0002.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: llvm-cov-html.diff
Type: application/octet-stream
Size: 47667 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160307/60fa2a27/attachment-0001.obj>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160307/60fa2a27/attachment-0003.html>


More information about the llvm-commits mailing list