[PATCH][RFC] llvm-cov HTML generation
Harlan Haskins via llvm-commits
llvm-commits at lists.llvm.org
Thu Mar 3 17:02:38 PST 2016
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
> 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 <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
> 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/20160303/2e35d9a2/attachment.html>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160303/2e35d9a2/attachment-0001.html>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160303/2e35d9a2/attachment-0002.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: llvm-cov-html.diff
Type: application/octet-stream
Size: 43263 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160303/2e35d9a2/attachment.obj>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160303/2e35d9a2/attachment-0003.html>
More information about the llvm-commits
mailing list