Warnings for missing documentations.
This commit is contained in:
parent
ed9a793d24
commit
c6581325ac
1 changed files with 71 additions and 0 deletions
|
@ -82,6 +82,9 @@ pub enum lint {
|
||||||
dead_assignment,
|
dead_assignment,
|
||||||
unused_mut,
|
unused_mut,
|
||||||
unnecessary_allocation,
|
unnecessary_allocation,
|
||||||
|
|
||||||
|
missing_struct_doc,
|
||||||
|
missing_trait_doc,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn level_to_str(lv: level) -> &'static str {
|
pub fn level_to_str(lv: level) -> &'static str {
|
||||||
|
@ -252,6 +255,20 @@ static lint_table: &'static [(&'static str, LintSpec)] = &[
|
||||||
desc: "detects unnecessary allocations that can be eliminated",
|
desc: "detects unnecessary allocations that can be eliminated",
|
||||||
default: warn
|
default: warn
|
||||||
}),
|
}),
|
||||||
|
|
||||||
|
("missing_struct_doc",
|
||||||
|
LintSpec {
|
||||||
|
lint: missing_struct_doc,
|
||||||
|
desc: "detects missing documentation for structs",
|
||||||
|
default: allow
|
||||||
|
}),
|
||||||
|
|
||||||
|
("missing_trait_doc",
|
||||||
|
LintSpec {
|
||||||
|
lint: missing_trait_doc,
|
||||||
|
desc: "detects missing documentation for traits",
|
||||||
|
default: allow
|
||||||
|
}),
|
||||||
];
|
];
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -952,6 +969,58 @@ fn lint_unnecessary_allocations(cx: @mut Context) -> visit::vt<()> {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn lint_missing_struct_doc(cx: @mut Context) -> visit::vt<()> {
|
||||||
|
visit::mk_simple_visitor(@visit::SimpleVisitor {
|
||||||
|
visit_struct_field: |field| {
|
||||||
|
let mut has_doc = false;
|
||||||
|
for field.node.attrs.each |attr| {
|
||||||
|
if attr.node.is_sugared_doc {
|
||||||
|
has_doc = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if !has_doc {
|
||||||
|
cx.span_lint(missing_struct_doc, field.span, "missing documentation \
|
||||||
|
for a field.");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.. *visit::default_simple_visitor()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
fn lint_missing_trait_doc(cx: @mut Context) -> visit::vt<()> {
|
||||||
|
visit::mk_simple_visitor(@visit::SimpleVisitor {
|
||||||
|
visit_trait_method: |method| {
|
||||||
|
let mut has_doc = false;
|
||||||
|
let span = match copy *method {
|
||||||
|
ast::required(m) => {
|
||||||
|
for m.attrs.each |attr| {
|
||||||
|
if attr.node.is_sugared_doc {
|
||||||
|
has_doc = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
m.span
|
||||||
|
},
|
||||||
|
ast::provided(m) => {
|
||||||
|
for m.attrs.each |attr| {
|
||||||
|
if attr.node.is_sugared_doc {
|
||||||
|
has_doc = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
m.span
|
||||||
|
}
|
||||||
|
};
|
||||||
|
if !has_doc {
|
||||||
|
cx.span_lint(missing_trait_doc, span, "missing documentation \
|
||||||
|
for a method.");
|
||||||
|
}
|
||||||
|
},
|
||||||
|
.. *visit::default_simple_visitor()
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
pub fn check_crate(tcx: ty::ctxt, crate: @ast::crate) {
|
pub fn check_crate(tcx: ty::ctxt, crate: @ast::crate) {
|
||||||
let cx = @mut Context {
|
let cx = @mut Context {
|
||||||
dict: @get_lint_dict(),
|
dict: @get_lint_dict(),
|
||||||
|
@ -980,6 +1049,8 @@ pub fn check_crate(tcx: ty::ctxt, crate: @ast::crate) {
|
||||||
cx.add_lint(lint_unused_mut(cx));
|
cx.add_lint(lint_unused_mut(cx));
|
||||||
cx.add_lint(lint_session(cx));
|
cx.add_lint(lint_session(cx));
|
||||||
cx.add_lint(lint_unnecessary_allocations(cx));
|
cx.add_lint(lint_unnecessary_allocations(cx));
|
||||||
|
cx.add_lint(lint_missing_struct_doc(cx));
|
||||||
|
cx.add_lint(lint_missing_trait_doc(cx));
|
||||||
|
|
||||||
// type inference doesn't like this being declared below, we need to tell it
|
// type inference doesn't like this being declared below, we need to tell it
|
||||||
// what the type of this first function is...
|
// what the type of this first function is...
|
||||||
|
|
Loading…
Reference in a new issue