rustdoc: skip allow missing doc in cover. report
During the document coverage reporting with ```bash rustdoc something.rs -Z unstable-options --show-coverage ``` the coverage report also includes parts of the code that are marked with `#[allow(missing_docs)]`, which outputs lower numbers in the coverage report even though these parts should be ignored for the calculation. Co-authored-by: Joshua Nelson <joshua@yottadb.com>
This commit is contained in:
parent
0e022fc2b8
commit
02e6b861eb
3 changed files with 57 additions and 2 deletions
|
@ -5,7 +5,7 @@ use crate::fold::{self, DocFolder};
|
||||||
use crate::html::markdown::{find_testable_code, ErrorCodes};
|
use crate::html::markdown::{find_testable_code, ErrorCodes};
|
||||||
use crate::passes::doc_test_lints::{should_have_doc_example, Tests};
|
use crate::passes::doc_test_lints::{should_have_doc_example, Tests};
|
||||||
use crate::passes::Pass;
|
use crate::passes::Pass;
|
||||||
use rustc_span::symbol::sym;
|
use rustc_span::symbol::{sym, Ident};
|
||||||
use rustc_span::FileName;
|
use rustc_span::FileName;
|
||||||
use serde::Serialize;
|
use serde::Serialize;
|
||||||
|
|
||||||
|
@ -41,8 +41,11 @@ impl ItemCount {
|
||||||
has_docs: bool,
|
has_docs: bool,
|
||||||
has_doc_example: bool,
|
has_doc_example: bool,
|
||||||
should_have_doc_examples: bool,
|
should_have_doc_examples: bool,
|
||||||
|
should_have_docs: bool,
|
||||||
) {
|
) {
|
||||||
|
if has_docs || should_have_docs {
|
||||||
self.total += 1;
|
self.total += 1;
|
||||||
|
}
|
||||||
|
|
||||||
if has_docs {
|
if has_docs {
|
||||||
self.with_docs += 1;
|
self.with_docs += 1;
|
||||||
|
@ -229,6 +232,15 @@ impl fold::DocFolder for CoverageCalculator {
|
||||||
}
|
}
|
||||||
_ => {
|
_ => {
|
||||||
let has_docs = !i.attrs.doc_strings.is_empty();
|
let has_docs = !i.attrs.doc_strings.is_empty();
|
||||||
|
let should_have_docs = !i.attrs.other_attrs.iter().any(|a| {
|
||||||
|
a.has_name(sym::allow)
|
||||||
|
&& a.meta_item_list().iter().any(|meta_list_item| {
|
||||||
|
meta_list_item.iter().any(|li| match li.ident() {
|
||||||
|
Some(ident) => ident == Ident::from_str("missing_docs"),
|
||||||
|
_ => false,
|
||||||
|
})
|
||||||
|
})
|
||||||
|
});
|
||||||
let mut tests = Tests { found_tests: 0 };
|
let mut tests = Tests { found_tests: 0 };
|
||||||
|
|
||||||
find_testable_code(
|
find_testable_code(
|
||||||
|
@ -250,7 +262,12 @@ impl fold::DocFolder for CoverageCalculator {
|
||||||
has_docs,
|
has_docs,
|
||||||
has_doc_example,
|
has_doc_example,
|
||||||
should_have_doc_example(&i.inner),
|
should_have_doc_example(&i.inner),
|
||||||
|
should_have_docs,
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if !should_have_docs {
|
||||||
|
return Some(i);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
31
src/test/rustdoc-ui/coverage/allow_missing_docs.rs
Normal file
31
src/test/rustdoc-ui/coverage/allow_missing_docs.rs
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
// compile-flags:-Z unstable-options --show-coverage
|
||||||
|
// check-pass
|
||||||
|
|
||||||
|
//! Make sure to have some docs on your crate root
|
||||||
|
|
||||||
|
#[allow(missing_docs)]
|
||||||
|
pub mod mod_foo {
|
||||||
|
pub struct Bar;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// This is a struct with a `#[allow(missing_docs)]`
|
||||||
|
pub struct AllowTheMissingDocs {
|
||||||
|
#[allow(missing_docs)]
|
||||||
|
pub empty_str: String,
|
||||||
|
|
||||||
|
/// This has
|
||||||
|
#[allow(missing_docs)]
|
||||||
|
/// but also has documentation comments
|
||||||
|
pub hello: usize,
|
||||||
|
|
||||||
|
/// The doc id just to create a boilerplate comment
|
||||||
|
pub doc_id: Vec<u8>,
|
||||||
|
}
|
||||||
|
|
||||||
|
/// A function that has a documentation
|
||||||
|
pub fn this_is_func() {}
|
||||||
|
|
||||||
|
#[allow(missing_docs)]
|
||||||
|
pub struct DemoStruct {
|
||||||
|
something: usize,
|
||||||
|
}
|
7
src/test/rustdoc-ui/coverage/allow_missing_docs.stdout
Normal file
7
src/test/rustdoc-ui/coverage/allow_missing_docs.stdout
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
+-------------------------------------+------------+------------+------------+------------+
|
||||||
|
| File | Documented | Percentage | Examples | Percentage |
|
||||||
|
+-------------------------------------+------------+------------+------------+------------+
|
||||||
|
| ...i/coverage/allow_missing_docs.rs | 5 | 100.0% | 0 | 0.0% |
|
||||||
|
+-------------------------------------+------------+------------+------------+------------+
|
||||||
|
| Total | 5 | 100.0% | 0 | 0.0% |
|
||||||
|
+-------------------------------------+------------+------------+------------+------------+
|
Loading…
Add table
Add a link
Reference in a new issue