On 12/17/19 4:41 PM, Josef Reidinger wrote:
V Tue, 17 Dec 2019 16:53:04 +0100
Stefan Hundhammer <shundham...@suse.de> napsáno:

On 17.12.19 11:04, Josef Reidinger wrote:
Ruby                           4281         104886         150083         573752
C++                             726          40778          31679         143555

I was tempted to calculate the ratio of real lines of code vs. comment lines
(ignoring blank lines):

    comment_ratio = comment_lines / (total_lines - blank_lines)

Then I realized that we have that license header in each file which greatly
distorts such a ratio: That legalese is also considered comment lines. Each
file has a legalese header. But Ruby files tend to be a lot smaller, so there
are more percent of legalese lines.

so...

    comment_ratio = (comment_lines - legalese_lines) /
                    (total_lines - blank_lines - legalese_lines)

Any chance of figuring out the real sizes without the legalese?

I am not sure if that tool support e.g. plugin so we can extend it by some 
trick to recognize that legalese lines.

I am really curious how well documented our stuff is.

Well, not sure if we can measure quality of documentation (I worry we will need 
to test it on real people), but we can easily for ruby code measure quantity of 
documented public interfaces.

yardoc itself support it and you can define in Rakefile threshold to ensure 
that it does not lower[1].

Output looks like:

jreidinger@linux-vvcf:~/prace/yast/bootloader> rake check:doc
/usr/bin/yardoc
Generating documentation...
Files:          38
Modules:         3 (    2 undocumented)
Classes:        66 (    7 undocumented)
Constants:      32 (   27 undocumented)
Attributes:     25 (    0 undocumented)
Methods:       299 (  166 undocumented)
  52.47% documented

There are even some services that can be attached to github repo that generate 
more precise output[2].
So definitively we have a ways to measure it and what is the best, we do not 
need to write it ourself :)

Josef

[1] https://github.com/yast/yast-bootloader/blob/master/Rakefile#L11
[2] https://inch-ci.org/github/yast/yast-bootloader



Kind regards


And for c++, maybe coverxygen [1] could help (if doxygen was used for documenting the code).

[1] https://github.com/psycofdj/coverxygen

--
José Iván López González
YaST Team at SUSE LINUX GmbH
IRC: jilopez
--
To unsubscribe, e-mail: yast-devel+unsubscr...@opensuse.org
To contact the owner, e-mail: yast-devel+ow...@opensuse.org

Reply via email to