diff options
author | Yacine Belkadi <yacine.belkadi.1@gmail.com> | 2012-11-26 16:22:27 -0500 |
---|---|---|
committer | Jiri Kosina <jkosina@suse.cz> | 2012-11-27 15:09:35 -0500 |
commit | 4092bac77131048b8f69cb1f939326c55d93709f (patch) | |
tree | d6ef89dcde5b3ad99b27e27b1d51ef2bbff217f8 /scripts | |
parent | e65fe5a91404af97a7a487e6c7606fb5e3807d7d (diff) |
scripts/kernel-doc: check that non-void fcts describe their return value
If a function has a return value, but its kernel-doc comment doesn't contain a
"Return" section, then emit the following warning:
Warning(file.h:129): No description found for return value of 'fct'
Note: This check emits a lot of warnings at the moment, because many functions
don't have a 'Return' doc section. So until the number of warnings goes
sufficiently down, the check is only performed in verbose mode.
Signed-off-by: Yacine Belkadi <yacine.belkadi.1@gmail.com>
Signed-off-by: Rob Landley <rob@landley.net>
Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Diffstat (limited to 'scripts')
-rwxr-xr-x | scripts/kernel-doc | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/scripts/kernel-doc b/scripts/kernel-doc index 46e7aff80d1a..28b761567815 100755 --- a/scripts/kernel-doc +++ b/scripts/kernel-doc | |||
@@ -137,6 +137,8 @@ use strict; | |||
137 | # should document the "Context:" of the function, e.g. whether the functions | 137 | # should document the "Context:" of the function, e.g. whether the functions |
138 | # can be called form interrupts. Unlike other sections you can end it with an | 138 | # can be called form interrupts. Unlike other sections you can end it with an |
139 | # empty line. | 139 | # empty line. |
140 | # A non-void function should have a "Return:" section describing the return | ||
141 | # value(s). | ||
140 | # Example-sections should contain the string EXAMPLE so that they are marked | 142 | # Example-sections should contain the string EXAMPLE so that they are marked |
141 | # appropriately in DocBook. | 143 | # appropriately in DocBook. |
142 | # | 144 | # |
@@ -315,6 +317,7 @@ my $section_default = "Description"; # default section | |||
315 | my $section_intro = "Introduction"; | 317 | my $section_intro = "Introduction"; |
316 | my $section = $section_default; | 318 | my $section = $section_default; |
317 | my $section_context = "Context"; | 319 | my $section_context = "Context"; |
320 | my $section_return = "Return"; | ||
318 | 321 | ||
319 | my $undescribed = "-- undescribed --"; | 322 | my $undescribed = "-- undescribed --"; |
320 | 323 | ||
@@ -2039,6 +2042,28 @@ sub check_sections($$$$$$) { | |||
2039 | } | 2042 | } |
2040 | 2043 | ||
2041 | ## | 2044 | ## |
2045 | # Checks the section describing the return value of a function. | ||
2046 | sub check_return_section { | ||
2047 | my $file = shift; | ||
2048 | my $declaration_name = shift; | ||
2049 | my $return_type = shift; | ||
2050 | |||
2051 | # Ignore an empty return type (It's a macro) | ||
2052 | # Ignore functions with a "void" return type. (But don't ignore "void *") | ||
2053 | if (($return_type eq "") || ($return_type =~ /void\s*\w*\s*$/)) { | ||
2054 | return; | ||
2055 | } | ||
2056 | |||
2057 | if (!defined($sections{$section_return}) || | ||
2058 | $sections{$section_return} eq "") { | ||
2059 | print STDERR "Warning(${file}:$.): " . | ||
2060 | "No description found for return value of " . | ||
2061 | "'$declaration_name'\n"; | ||
2062 | ++$warnings; | ||
2063 | } | ||
2064 | } | ||
2065 | |||
2066 | ## | ||
2042 | # takes a function prototype and the name of the current file being | 2067 | # takes a function prototype and the name of the current file being |
2043 | # processed and spits out all the details stored in the global | 2068 | # processed and spits out all the details stored in the global |
2044 | # arrays/hashes. | 2069 | # arrays/hashes. |
@@ -2109,6 +2134,15 @@ sub dump_function($$) { | |||
2109 | my $prms = join " ", @parameterlist; | 2134 | my $prms = join " ", @parameterlist; |
2110 | check_sections($file, $declaration_name, "function", $sectcheck, $prms, ""); | 2135 | check_sections($file, $declaration_name, "function", $sectcheck, $prms, ""); |
2111 | 2136 | ||
2137 | # This check emits a lot of warnings at the moment, because many | ||
2138 | # functions don't have a 'Return' doc section. So until the number | ||
2139 | # of warnings goes sufficiently down, the check is only performed in | ||
2140 | # verbose mode. | ||
2141 | # TODO: always perform the check. | ||
2142 | if ($verbose) { | ||
2143 | check_return_section($file, $declaration_name, $return_type); | ||
2144 | } | ||
2145 | |||
2112 | output_declaration($declaration_name, | 2146 | output_declaration($declaration_name, |
2113 | 'function', | 2147 | 'function', |
2114 | {'function' => $declaration_name, | 2148 | {'function' => $declaration_name, |