diff options
| author | Roman <romaaan.git@gmail.com> | 2020-09-01 14:19:24 +0200 | 
|---|---|---|
| committer | Guillaume Gomez <guillaume1.gomez@gmail.com> | 2020-10-12 13:46:37 +0200 | 
| commit | 02e6b861eb04737915636a63eec00ef126f59dd5 (patch) | |
| tree | 36e387b48a4e533f3976d591d4bd8b30ba3ddef4 | |
| parent | 0e022fc2b8eecbc16c090a99efbbd262c37ec962 (diff) | |
| download | rust-02e6b861eb04737915636a63eec00ef126f59dd5.tar.gz rust-02e6b861eb04737915636a63eec00ef126f59dd5.zip  | |
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>
| -rw-r--r-- | src/librustdoc/passes/calculate_doc_coverage.rs | 21 | ||||
| -rw-r--r-- | src/test/rustdoc-ui/coverage/allow_missing_docs.rs | 31 | ||||
| -rw-r--r-- | src/test/rustdoc-ui/coverage/allow_missing_docs.stdout | 7 | 
3 files changed, 57 insertions, 2 deletions
diff --git a/src/librustdoc/passes/calculate_doc_coverage.rs b/src/librustdoc/passes/calculate_doc_coverage.rs index 4bca3996eb4..30dd8def70e 100644 --- a/src/librustdoc/passes/calculate_doc_coverage.rs +++ b/src/librustdoc/passes/calculate_doc_coverage.rs @@ -5,7 +5,7 @@ use crate::fold::{self, DocFolder}; use crate::html::markdown::{find_testable_code, ErrorCodes}; use crate::passes::doc_test_lints::{should_have_doc_example, Tests}; use crate::passes::Pass; -use rustc_span::symbol::sym; +use rustc_span::symbol::{sym, Ident}; use rustc_span::FileName; use serde::Serialize; @@ -41,8 +41,11 @@ impl ItemCount { has_docs: bool, has_doc_example: bool, should_have_doc_examples: bool, + should_have_docs: bool, ) { - self.total += 1; + if has_docs || should_have_docs { + self.total += 1; + } if has_docs { self.with_docs += 1; @@ -229,6 +232,15 @@ impl fold::DocFolder for CoverageCalculator { } _ => { 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 }; find_testable_code( @@ -250,7 +262,12 @@ impl fold::DocFolder for CoverageCalculator { has_docs, has_doc_example, should_have_doc_example(&i.inner), + should_have_docs, ); + + if !should_have_docs { + return Some(i); + } } } diff --git a/src/test/rustdoc-ui/coverage/allow_missing_docs.rs b/src/test/rustdoc-ui/coverage/allow_missing_docs.rs new file mode 100644 index 00000000000..8c076761ede --- /dev/null +++ b/src/test/rustdoc-ui/coverage/allow_missing_docs.rs @@ -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, +} diff --git a/src/test/rustdoc-ui/coverage/allow_missing_docs.stdout b/src/test/rustdoc-ui/coverage/allow_missing_docs.stdout new file mode 100644 index 00000000000..ea5380e3204 --- /dev/null +++ b/src/test/rustdoc-ui/coverage/allow_missing_docs.stdout @@ -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% | ++-------------------------------------+------------+------------+------------+------------+  | 
