in meta/style.pm [349:428]
sub CheckDoxygenCommentFormating
{
my ($data, $file) = @_;
while ($data =~ m%/\*\*(?:(?!\*/).)*?(\*/\n[\n]+(\s*[a-z][^\n]*))%gis)
{
LogWarning "empty line between doxygen comment and definition: $file: $2";
}
while ($data =~ m%( *)(/\*\*(?:(?!\*/).)*?\*/)%gis)
{
my $spaces = $1 . " ";
my $comment = $2;
next if $comment =~ m!^/\*\*.*\*/$!; # single line comment
my @lines = split/\n/,$comment;
my $first = shift @lines;
my $last = pop @lines;
if (not $first =~ m!^\s*/..$!)
{
LogWarning "first line doxygen comment should be with '/**': $file: $first";
next;
}
if (not $last =~ m!^\s*\*/$!)
{
LogWarning "last line doxygen comment should be '*/': $file: $last";
next;
}
if (not $lines[0] =~ m!\* (\@|Copyright )!)
{
LogWarning "first doxygen line should contain \@ tag $file: $lines[0]";
}
if ($lines[$#lines] =~ m!^\s*\*\s*$!)
{
LogWarning "last doxygen line should not be empty $file: $lines[$#lines]";
}
for my $line (@lines)
{
if (not $line =~ m!^\s*\*( |$)!)
{
LogWarning "multiline doxygen comments should start with '* ': $file: $line";
}
if (not $line =~ /^$spaces\*/)
{
LogWarning "doxygen comment has invalid ident: $file: $line";
}
}
next; # disabled for now since it generates too much changes
$comment =~ s!^ *(/\*\*|\*/|\* *)!!gm;
if ($comment =~ m!\@brief\s+(.+?)\n\n!s)
{
my $brief = $1;
if (not $brief =~ /\.$/)
{
LogWarning "brief should end with dot $file: $brief";
}
}
my @n = split/^\@\S+ /m,$comment;
}
while($data =~ m!(([^\n ])+\n */\*\*.{1,30}.+?\n)!isg)
{
next if $2 eq "{";
LogWarning "doxygen comment must be preceded with blank line: $file:\n$1";
}
}