[INFO] crate lojidoc 0.3.1 is already in cache [INFO] extracting crate lojidoc 0.3.1 into work/ex/clippy-test-run/sources/stable/reg/lojidoc/0.3.1 [INFO] extracting crate lojidoc 0.3.1 into work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/lojidoc/0.3.1 [INFO] validating manifest of lojidoc-0.3.1 on toolchain stable [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] validating manifest of lojidoc-0.3.1 on toolchain stable+rustflags=-Dclippy::into_iter_on_array [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "read-manifest" "--manifest-path" "Cargo.toml"` [INFO] started frobbing lojidoc-0.3.1 [INFO] finished frobbing lojidoc-0.3.1 [INFO] frobbed toml for lojidoc-0.3.1 written to work/ex/clippy-test-run/sources/stable/reg/lojidoc/0.3.1/Cargo.toml [INFO] started frobbing lojidoc-0.3.1 [INFO] finished frobbing lojidoc-0.3.1 [INFO] frobbed toml for lojidoc-0.3.1 written to work/ex/clippy-test-run/sources/stable+rustflags=-Dclippy%3A%3Ainto_iter_on_array/reg/lojidoc/0.3.1/Cargo.toml [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "generate-lockfile" "--manifest-path" "Cargo.toml" "-Zno-index-update"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] running `"/mnt/big/crater/work/local/cargo-home/bin/cargo" "+stable" "fetch" "--locked" "--manifest-path" "Cargo.toml"` [INFO] linting lojidoc-0.3.1 against stable for clippy-test-run [INFO] running `"docker" "create" "-v" "/mnt/big/crater/work/local/target-dirs/clippy-test-run/worker-4/stable:/opt/crater/target:rw,Z" "-v" "/mnt/big/crater/work/ex/clippy-test-run/sources/stable/reg/lojidoc/0.3.1:/opt/crater/workdir:ro,Z" "-v" "/mnt/big/crater/work/local/cargo-home:/opt/crater/cargo-home:ro,Z" "-v" "/mnt/big/crater/work/local/rustup-home:/opt/crater/rustup-home:ro,Z" "-e" "USER_ID=1000" "-e" "SOURCE_DIR=/opt/crater/workdir" "-e" "MAP_USER_ID=1000" "-e" "CARGO_TARGET_DIR=/opt/crater/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/crater/cargo-home" "-e" "RUSTUP_HOME=/opt/crater/rustup-home" "-w" "/opt/crater/workdir" "-m" "1536M" "--network" "none" "rustops/crates-build-env" "/opt/crater/cargo-home/bin/cargo" "+stable" "clippy" "--frozen" "--all" "--all-targets"` [INFO] [stdout] 52c02b34557423f4d626a712ea1be9629e107cb97b100505ef4b762a008c2a1c [INFO] running `"docker" "start" "-a" "52c02b34557423f4d626a712ea1be9629e107cb97b100505ef4b762a008c2a1c"` [INFO] [stderr] Compiling libgit2-sys v0.7.11 [INFO] [stderr] Compiling pest_generator v2.1.0 [INFO] [stderr] Checking elasticlunr-rs v2.3.4 [INFO] [stderr] Checking toml-query v0.7.0 [INFO] [stderr] Checking ammonia v1.2.0 [INFO] [stderr] Compiling pest_derive v2.1.0 [INFO] [stderr] Checking handlebars v1.1.0 [INFO] [stderr] Checking mdbook v0.2.3 [INFO] [stderr] Checking git2 v0.7.5 [INFO] [stderr] Checking lojidoc v0.3.1 (/opt/crater/workdir) [INFO] [stderr] warning: literal with an empty format string [INFO] [stderr] --> src/document/mod.rs:510:55 [INFO] [stderr] | [INFO] [stderr] 510 | println!("{}.{} was created", class.name, "md"); [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::print_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stderr] [INFO] [stderr] warning: literal with an empty format string [INFO] [stderr] --> src/document/mod.rs:530:55 [INFO] [stderr] | [INFO] [stderr] 530 | println!("{}.{} was created", inter.name, "md"); [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stderr] [INFO] [stderr] warning: literal with an empty format string [INFO] [stderr] --> src/document/mod.rs:561:61 [INFO] [stderr] | [INFO] [stderr] 561 | println!("{}.{} was created", enumeration.name, "md"); [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parse/mod.rs:123:13 [INFO] [stderr] | [INFO] [stderr] 123 | author: author, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `author` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parse/mod.rs:124:13 [INFO] [stderr] | [INFO] [stderr] 124 | version: version, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `version` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parse/mod.rs:125:13 [INFO] [stderr] | [INFO] [stderr] 125 | exceptions: exceptions, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `exceptions` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parse/mod.rs:126:13 [INFO] [stderr] | [INFO] [stderr] 126 | deprecated: deprecated, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `deprecated` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: literal with an empty format string [INFO] [stderr] --> src/document/mod.rs:510:55 [INFO] [stderr] | [INFO] [stderr] 510 | println!("{}.{} was created", class.name, "md"); [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::print_literal)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stderr] [INFO] [stderr] warning: literal with an empty format string [INFO] [stderr] --> src/document/mod.rs:530:55 [INFO] [stderr] | [INFO] [stderr] 530 | println!("{}.{} was created", inter.name, "md"); [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stderr] [INFO] [stderr] warning: literal with an empty format string [INFO] [stderr] --> src/document/mod.rs:561:61 [INFO] [stderr] | [INFO] [stderr] 561 | println!("{}.{} was created", enumeration.name, "md"); [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#print_literal [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parse/mod.rs:123:13 [INFO] [stderr] | [INFO] [stderr] 123 | author: author, [INFO] [stderr] | ^^^^^^^^^^^^^^ help: replace it with: `author` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::redundant_field_names)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parse/mod.rs:124:13 [INFO] [stderr] | [INFO] [stderr] 124 | version: version, [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: replace it with: `version` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parse/mod.rs:125:13 [INFO] [stderr] | [INFO] [stderr] 125 | exceptions: exceptions, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `exceptions` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: redundant field names in struct initialization [INFO] [stderr] --> src/parse/mod.rs:126:13 [INFO] [stderr] | [INFO] [stderr] 126 | deprecated: deprecated, [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `deprecated` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#redundant_field_names [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/document/mod.rs:1:1 [INFO] [stderr] | [INFO] [stderr] 1 | / pub mod document { [INFO] [stderr] 2 | | extern crate colored; [INFO] [stderr] 3 | | extern crate git2; [INFO] [stderr] 4 | | [INFO] [stderr] ... | [INFO] [stderr] 887 | | } [INFO] [stderr] 888 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::module_inception)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/document/mod.rs:373:13 [INFO] [stderr] | [INFO] [stderr] 373 | / if member.privacy != ignore { [INFO] [stderr] 374 | | if member.name != String::from("") { [INFO] [stderr] 375 | | if path != "" { [INFO] [stderr] 376 | | let mut file_path = path.clone(); [INFO] [stderr] ... | [INFO] [stderr] 430 | | } [INFO] [stderr] 431 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 373 | if member.privacy != ignore && member.name != String::from("") { [INFO] [stderr] 374 | if path != "" { [INFO] [stderr] 375 | let mut file_path = path.clone(); [INFO] [stderr] 376 | file_path.push_str(format!("#L{}", member.line_num).as_str()); [INFO] [stderr] 377 | doc.push_str( [INFO] [stderr] 378 | format!("### {} [[src]]({})\n\n", member.name, file_path).as_str(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/grammar/mod.rs:2:1 [INFO] [stderr] | [INFO] [stderr] 2 | / pub mod grammar { [INFO] [stderr] 3 | | //! Module that contains grammar used in the lexing and parsing of java code [INFO] [stderr] 4 | | //! Also defines other sets of keywords like javadoc keywords or framework annotations [INFO] [stderr] 5 | | //! [INFO] [stderr] ... | [INFO] [stderr] 155 | | } [INFO] [stderr] 156 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/model/mod.rs:12:1 [INFO] [stderr] | [INFO] [stderr] 12 | / pub mod model { [INFO] [stderr] 13 | | //! Module that contains all necessary data stuctures for parsing javadocs and generating docs [INFO] [stderr] 14 | | [INFO] [stderr] 15 | | pub use model::class::Class; [INFO] [stderr] ... | [INFO] [stderr] 33 | | } [INFO] [stderr] 34 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/parse/mod.rs:2:1 [INFO] [stderr] | [INFO] [stderr] 2 | / pub mod parse { [INFO] [stderr] 3 | | //! A module which handles the parsing for java files [INFO] [stderr] 4 | | [INFO] [stderr] 5 | | use grammar::grammar::*; [INFO] [stderr] ... | [INFO] [stderr] 793 | | } [INFO] [stderr] 794 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parse/mod.rs:764:35 [INFO] [stderr] | [INFO] [stderr] 764 | ObjectState::Class => return ObjectType::Class(object.to_class()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `ObjectType::Class(object.to_class())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parse/mod.rs:765:39 [INFO] [stderr] | [INFO] [stderr] 765 | ObjectState::Interface => return ObjectType::Interface(object.to_interface()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `ObjectType::Interface(object.to_interface())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parse/mod.rs:766:41 [INFO] [stderr] | [INFO] [stderr] 766 | ObjectState::Enumeration => return ObjectType::Enumeration(object.to_enumeration()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `ObjectType::Enumeration(object.to_enumeration())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parse/mod.rs:769:17 [INFO] [stderr] | [INFO] [stderr] 769 | return ObjectType::Class(object.to_class()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `ObjectType::Class(object.to_class())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/parse/mod.rs:638:21 [INFO] [stderr] | [INFO] [stderr] 638 | / if comment { [INFO] [stderr] 639 | | if word != "*" && word != "/*" { [INFO] [stderr] 640 | | comment_buf.push_str(format!("{} ", word).as_str()); [INFO] [stderr] 641 | | } [INFO] [stderr] 642 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 638 | if comment && word != "*" && word != "/*" { [INFO] [stderr] 639 | comment_buf.push_str(format!("{} ", word).as_str()); [INFO] [stderr] 640 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/document/mod.rs:1:1 [INFO] [stderr] | [INFO] [stderr] 1 | / pub mod document { [INFO] [stderr] 2 | | extern crate colored; [INFO] [stderr] 3 | | extern crate git2; [INFO] [stderr] 4 | | [INFO] [stderr] ... | [INFO] [stderr] 887 | | } [INFO] [stderr] 888 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::module_inception)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/document/mod.rs:373:13 [INFO] [stderr] | [INFO] [stderr] 373 | / if member.privacy != ignore { [INFO] [stderr] 374 | | if member.name != String::from("") { [INFO] [stderr] 375 | | if path != "" { [INFO] [stderr] 376 | | let mut file_path = path.clone(); [INFO] [stderr] ... | [INFO] [stderr] 430 | | } [INFO] [stderr] 431 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::collapsible_if)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 373 | if member.privacy != ignore && member.name != String::from("") { [INFO] [stderr] 374 | if path != "" { [INFO] [stderr] 375 | let mut file_path = path.clone(); [INFO] [stderr] 376 | file_path.push_str(format!("#L{}", member.line_num).as_str()); [INFO] [stderr] 377 | doc.push_str( [INFO] [stderr] 378 | format!("### {} [[src]]({})\n\n", member.name, file_path).as_str(), [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/grammar/mod.rs:2:1 [INFO] [stderr] | [INFO] [stderr] 2 | / pub mod grammar { [INFO] [stderr] 3 | | //! Module that contains grammar used in the lexing and parsing of java code [INFO] [stderr] 4 | | //! Also defines other sets of keywords like javadoc keywords or framework annotations [INFO] [stderr] 5 | | //! [INFO] [stderr] ... | [INFO] [stderr] 155 | | } [INFO] [stderr] 156 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/model/mod.rs:12:1 [INFO] [stderr] | [INFO] [stderr] 12 | / pub mod model { [INFO] [stderr] 13 | | //! Module that contains all necessary data stuctures for parsing javadocs and generating docs [INFO] [stderr] 14 | | [INFO] [stderr] 15 | | pub use model::class::Class; [INFO] [stderr] ... | [INFO] [stderr] 33 | | } [INFO] [stderr] 34 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: module has the same name as its containing module [INFO] [stderr] --> src/parse/mod.rs:2:1 [INFO] [stderr] | [INFO] [stderr] 2 | / pub mod parse { [INFO] [stderr] 3 | | //! A module which handles the parsing for java files [INFO] [stderr] 4 | | [INFO] [stderr] 5 | | use grammar::grammar::*; [INFO] [stderr] ... | [INFO] [stderr] 793 | | } [INFO] [stderr] 794 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#module_inception [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parse/mod.rs:764:35 [INFO] [stderr] | [INFO] [stderr] 764 | ObjectState::Class => return ObjectType::Class(object.to_class()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `ObjectType::Class(object.to_class())` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_return)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parse/mod.rs:765:39 [INFO] [stderr] | [INFO] [stderr] 765 | ObjectState::Interface => return ObjectType::Interface(object.to_interface()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `ObjectType::Interface(object.to_interface())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parse/mod.rs:766:41 [INFO] [stderr] | [INFO] [stderr] 766 | ObjectState::Enumeration => return ObjectType::Enumeration(object.to_enumeration()), [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `ObjectType::Enumeration(object.to_enumeration())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: unneeded return statement [INFO] [stderr] --> src/parse/mod.rs:769:17 [INFO] [stderr] | [INFO] [stderr] 769 | return ObjectType::Class(object.to_class()); [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove `return` as shown: `ObjectType::Class(object.to_class())` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_return [INFO] [stderr] [INFO] [stderr] warning: this if statement can be collapsed [INFO] [stderr] --> src/parse/mod.rs:638:21 [INFO] [stderr] | [INFO] [stderr] 638 | / if comment { [INFO] [stderr] 639 | | if word != "*" && word != "/*" { [INFO] [stderr] 640 | | comment_buf.push_str(format!("{} ", word).as_str()); [INFO] [stderr] 641 | | } [INFO] [stderr] 642 | | } [INFO] [stderr] | |_____________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#collapsible_if [INFO] [stderr] help: try [INFO] [stderr] | [INFO] [stderr] 638 | if comment && word != "*" && word != "/*" { [INFO] [stderr] 639 | comment_buf.push_str(format!("{} ", word).as_str()); [INFO] [stderr] 640 | } [INFO] [stderr] | [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/document/mod.rs:39:12 [INFO] [stderr] | [INFO] [stderr] 39 | if !file_dir.is_ok() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `file_dir.is_err()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::nonminimal_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/document/mod.rs:57:59 [INFO] [stderr] | [INFO] [stderr] 57 | let line_vec: Vec<&str> = file_name.split(".").collect::>(); [INFO] [stderr] | ^^^ help: try using a char instead: `'.'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/document/mod.rs:86:62 [INFO] [stderr] | [INFO] [stderr] 86 | let line_vec: Vec<&str> = file.split(".").collect::>(); [INFO] [stderr] | ^^^ help: try using a char instead: `'.'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/document/mod.rs:145:12 [INFO] [stderr] | [INFO] [stderr] 145 | if class.interfaces.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!class.interfaces.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/document/mod.rs:156:12 [INFO] [stderr] | [INFO] [stderr] 156 | if class.exceptions.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!class.exceptions.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/document/mod.rs:269:12 [INFO] [stderr] | [INFO] [stderr] 269 | if enum_ob.interfaces.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!enum_ob.interfaces.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/document/mod.rs:305:12 [INFO] [stderr] | [INFO] [stderr] 305 | if variables.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!variables.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/document/mod.rs:338:20 [INFO] [stderr] | [INFO] [stderr] 338 | if member.modifiers.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!member.modifiers.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/document/mod.rs:364:12 [INFO] [stderr] | [INFO] [stderr] 364 | if methods.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!methods.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: this creates an owned instance just for comparison [INFO] [stderr] --> src/document/mod.rs:374:35 [INFO] [stderr] | [INFO] [stderr] 374 | if member.name != String::from("") { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `""` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cmp_owned)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/document/mod.rs:393:24 [INFO] [stderr] | [INFO] [stderr] 393 | if member.modifiers.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!member.modifiers.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/document/mod.rs:413:24 [INFO] [stderr] | [INFO] [stderr] 413 | if member.parameters.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!member.parameters.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/document/mod.rs:495:13 [INFO] [stderr] | [INFO] [stderr] 495 | / file.write(doc.as_str().as_bytes()) [INFO] [stderr] 496 | | .expect("Not able to write to file"); [INFO] [stderr] | |____________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/document/mod.rs:504:17 [INFO] [stderr] | [INFO] [stderr] 504 | / file.write(doc.as_str().as_bytes()) [INFO] [stderr] 505 | | .expect("Not able to write to file"); [INFO] [stderr] | |________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/document/mod.rs:525:13 [INFO] [stderr] | [INFO] [stderr] 525 | / file.write(doc.as_str().as_bytes()) [INFO] [stderr] 526 | | .expect("Not able to write to file"); [INFO] [stderr] | |____________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/document/mod.rs:556:13 [INFO] [stderr] | [INFO] [stderr] 556 | / file.write(doc.as_str().as_bytes()) [INFO] [stderr] 557 | | .expect("Not able to write to file"); [INFO] [stderr] | |____________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/document/mod.rs:566:9 [INFO] [stderr] | [INFO] [stderr] 566 | / app_file [INFO] [stderr] 567 | | .write(gen_application_doc(app_doc).as_str().as_bytes()) [INFO] [stderr] 568 | | .expect("Not able to write to file"); [INFO] [stderr] | |________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/document/mod.rs:741:46 [INFO] [stderr] | [INFO] [stderr] 741 | let line_vec: Vec<&str> = file.split("/").collect::>(); [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/document/mod.rs:744:9 [INFO] [stderr] | [INFO] [stderr] 744 | / if l_part.contains(".git") || l_part.contains(".hg") { [INFO] [stderr] 745 | | true [INFO] [stderr] 746 | | } else { [INFO] [stderr] 747 | | false [INFO] [stderr] 748 | | } [INFO] [stderr] | |_________^ help: you can reduce it to: `l_part.contains(".git") || l_part.contains(".hg")` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/document/mod.rs:757:51 [INFO] [stderr] | [INFO] [stderr] 757 | let line_vec: Vec<&str> = orig_path.split("/").collect::>(); [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: the loop variable `j` is only used to index `line_vec`. [INFO] [stderr] --> src/document/mod.rs:763:22 [INFO] [stderr] | [INFO] [stderr] 763 | for j in 0..i { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 763 | for in line_vec.iter().take(i) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/document/mod.rs:769:13 [INFO] [stderr] | [INFO] [stderr] 769 | / match file_dir { [INFO] [stderr] 770 | | Ok(dir) => { [INFO] [stderr] 771 | | for f in dir { [INFO] [stderr] 772 | | let p = f.unwrap().path(); [INFO] [stderr] ... | [INFO] [stderr] 784 | | Err(_) => (), [INFO] [stderr] 785 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 769 | if let Ok(dir) = file_dir { [INFO] [stderr] 770 | for f in dir { [INFO] [stderr] 771 | let p = f.unwrap().path(); [INFO] [stderr] 772 | [INFO] [stderr] 773 | if p.is_dir() { [INFO] [stderr] 774 | let p_str = p.as_path().to_str().unwrap(); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/document/mod.rs:812:9 [INFO] [stderr] | [INFO] [stderr] 812 | / match remote_upstream { [INFO] [stderr] 813 | | Some(url) => remote_url = url.clone(), [INFO] [stderr] 814 | | None => (), [INFO] [stderr] 815 | | }; [INFO] [stderr] | |_________^ help: try this: `if let Some(url) = remote_upstream { remote_url = url.clone() }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/document/mod.rs:819:24 [INFO] [stderr] | [INFO] [stderr] 819 | .split("@") [INFO] [stderr] | ^^^ help: try using a char instead: `'@'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/document/mod.rs:826:33 [INFO] [stderr] | [INFO] [stderr] 826 | name_part.split(":").collect::>().join("/") [INFO] [stderr] | ^^^ help: try using a char instead: `':'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/document/mod.rs:846:43 [INFO] [stderr] | [INFO] [stderr] 846 | let line_vec: Vec<&str> = p.split("/").collect::>(); [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/document/mod.rs:877:13 [INFO] [stderr] | [INFO] [stderr] 877 | / file.write(doc.as_str().as_bytes()) [INFO] [stderr] 878 | | .expect("Not able to write to file"); [INFO] [stderr] | |____________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/model/object.rs:64:21 [INFO] [stderr] | [INFO] [stderr] 64 | pub fn to_class(&mut self) -> Class { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/model/object.rs:102:25 [INFO] [stderr] | [INFO] [stderr] 102 | pub fn to_interface(&mut self) -> Interface { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/model/object.rs:127:27 [INFO] [stderr] | [INFO] [stderr] 127 | pub fn to_enumeration(&mut self) -> Enumeration { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/parse/mod.rs:28:24 [INFO] [stderr] | [INFO] [stderr] 28 | fn get_doc(tokens: &Vec) -> Doc { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[JdocToken]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `tokens` [INFO] [stderr] --> src/parse/mod.rs:40:18 [INFO] [stderr] | [INFO] [stderr] 40 | for i in 0..tokens.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 40 | for (i, ) in tokens.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/parse/mod.rs:50:76 [INFO] [stderr] | [INFO] [stderr] 50 | let word_parts: Vec<&str> = new_desc.split(" ").collect(); [INFO] [stderr] | ^^^ help: try using a char instead: `' '` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/parse/mod.rs:72:76 [INFO] [stderr] | [INFO] [stderr] 72 | let word_parts: Vec<&str> = new_desc.split(" ").collect(); [INFO] [stderr] | ^^^ help: try using a char instead: `' '` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/parse/mod.rs:74:36 [INFO] [stderr] | [INFO] [stderr] 74 | if exceptions.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!exceptions.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `gram_parts`. [INFO] [stderr] --> src/parse/mod.rs:209:18 [INFO] [stderr] | [INFO] [stderr] 209 | for i in 0..gram_parts.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 209 | for in &gram_parts { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/parse/mod.rs:215:28 [INFO] [stderr] | [INFO] [stderr] 215 | if java_doc.exceptions.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!java_doc.exceptions.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: The function/method `match_params` doesn't need a mutable reference [INFO] [stderr] --> src/parse/mod.rs:263:26 [INFO] [stderr] | [INFO] [stderr] 263 | match_params(&mut method, &java_doc.params); [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_mut_passed)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `gram_parts`. [INFO] [stderr] --> src/parse/mod.rs:279:18 [INFO] [stderr] | [INFO] [stderr] 279 | for i in 0..gram_parts.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 279 | for in &gram_parts { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/parse/mod.rs:293:37 [INFO] [stderr] | [INFO] [stderr] 293 | if key.contains("=") { [INFO] [stderr] | ^^^ help: try using a char instead: `'='` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/parse/mod.rs:294:58 [INFO] [stderr] | [INFO] [stderr] 294 | let parts: Vec<&str> = key.split("=").collect(); [INFO] [stderr] | ^^^ help: try using a char instead: `'='` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `gram_parts` [INFO] [stderr] --> src/parse/mod.rs:321:18 [INFO] [stderr] | [INFO] [stderr] 321 | for i in 0..gram_parts.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 321 | for (i, ) in gram_parts.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/parse/mod.rs:336:51 [INFO] [stderr] | [INFO] [stderr] 336 | pub fn match_params(method: &Method, jparams: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Param]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `jparams`. [INFO] [stderr] --> src/parse/mod.rs:341:22 [INFO] [stderr] | [INFO] [stderr] 341 | for i in 0..jparams.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 341 | for in &jparams { [INFO] [stderr] | ^^^^^^ ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/parse/mod.rs:377:31 [INFO] [stderr] | [INFO] [stderr] 377 | fn push_token(curr_token: &String, tokens: &mut Vec, keywords: &Vec<&str>) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/parse/mod.rs:377:75 [INFO] [stderr] | [INFO] [stderr] 377 | fn push_token(curr_token: &String, tokens: &mut Vec, keywords: &Vec<&str>) { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[&str]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/parse/mod.rs:383:62 [INFO] [stderr] | [INFO] [stderr] 383 | } else if is_keyword!(curr_token, jdoc_keywords) { [INFO] [stderr] | ______________________________________________________________^ [INFO] [stderr] 384 | | tokens.push(Token::Keyword(curr_token.to_string())); [INFO] [stderr] 385 | | } else if is_keyword!(curr_token, spring_keywords) { [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/parse/mod.rs:381:50 [INFO] [stderr] | [INFO] [stderr] 381 | if is_keyword!(curr_token, keywords) { [INFO] [stderr] | __________________________________________________^ [INFO] [stderr] 382 | | tokens.push(Token::Keyword(curr_token.to_string())); [INFO] [stderr] 383 | | } else if is_keyword!(curr_token, jdoc_keywords) { [INFO] [stderr] | |_____________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/parse/mod.rs:393:34 [INFO] [stderr] | [INFO] [stderr] 393 | pub fn lex_contents(content: &String) -> Vec { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/parse/mod.rs:403:9 [INFO] [stderr] | [INFO] [stderr] 403 | / loop { [INFO] [stderr] 404 | | match blob.next() { [INFO] [stderr] 405 | | Some(ch) => match ch { [INFO] [stderr] 406 | | ' ' | '\t' | '\r' => { [INFO] [stderr] ... | [INFO] [stderr] 471 | | } [INFO] [stderr] 472 | | } [INFO] [stderr] | |_________^ help: try: `while let Some(ch) = blob.next() { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/parse/mod.rs:417:25 [INFO] [stderr] | [INFO] [stderr] 417 | line_number = line_number + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `line_number += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/parse/mod.rs:455:25 [INFO] [stderr] | [INFO] [stderr] 455 | block_depth = block_depth + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `block_depth += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/parse/mod.rs:462:25 [INFO] [stderr] | [INFO] [stderr] 462 | block_depth = block_depth - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `block_depth -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 54 [INFO] [stderr] --> src/parse/mod.rs:507:5 [INFO] [stderr] | [INFO] [stderr] 507 | / pub fn construct_ast(tokens: Vec) -> ObjectType { [INFO] [stderr] 508 | | let mut annotation = false; [INFO] [stderr] 509 | | let mut ignore = false; [INFO] [stderr] 510 | | let mut object = Object::new(); [INFO] [stderr] ... | [INFO] [stderr] 771 | | } [INFO] [stderr] 772 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/parse/mod.rs:629:53 [INFO] [stderr] | [INFO] [stderr] 629 | } else if word.contains("@") && !doc { [INFO] [stderr] | ^^^ help: try using a char instead: `'@'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/main.rs:32:27 [INFO] [stderr] | [INFO] [stderr] 32 | fn get_project<'a>(files: &Vec) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^ help: change this to: `&[PathBuf]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/main.rs:227:16 [INFO] [stderr] | [INFO] [stderr] 227 | if !init_res.is_ok() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `init_res.is_err()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/main.rs:215:20 [INFO] [stderr] | [INFO] [stderr] 215 | let gen_book = if book != "" { true } else { false }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can reduce it to: `book != ""` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/main.rs:220:8 [INFO] [stderr] | [INFO] [stderr] 220 | if file_paths.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!file_paths.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] error: aborting due to 7 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `lojidoc`. [INFO] [stderr] warning: build failed, waiting for other jobs to finish... [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/document/mod.rs:39:12 [INFO] [stderr] | [INFO] [stderr] 39 | if !file_dir.is_ok() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `file_dir.is_err()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::nonminimal_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/document/mod.rs:57:59 [INFO] [stderr] | [INFO] [stderr] 57 | let line_vec: Vec<&str> = file_name.split(".").collect::>(); [INFO] [stderr] | ^^^ help: try using a char instead: `'.'` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_char_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/document/mod.rs:86:62 [INFO] [stderr] | [INFO] [stderr] 86 | let line_vec: Vec<&str> = file.split(".").collect::>(); [INFO] [stderr] | ^^^ help: try using a char instead: `'.'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/document/mod.rs:145:12 [INFO] [stderr] | [INFO] [stderr] 145 | if class.interfaces.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!class.interfaces.is_empty()` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::len_zero)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/document/mod.rs:156:12 [INFO] [stderr] | [INFO] [stderr] 156 | if class.exceptions.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!class.exceptions.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/document/mod.rs:269:12 [INFO] [stderr] | [INFO] [stderr] 269 | if enum_ob.interfaces.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!enum_ob.interfaces.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/document/mod.rs:305:12 [INFO] [stderr] | [INFO] [stderr] 305 | if variables.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!variables.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/document/mod.rs:338:20 [INFO] [stderr] | [INFO] [stderr] 338 | if member.modifiers.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!member.modifiers.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/document/mod.rs:364:12 [INFO] [stderr] | [INFO] [stderr] 364 | if methods.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!methods.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: this creates an owned instance just for comparison [INFO] [stderr] --> src/document/mod.rs:374:35 [INFO] [stderr] | [INFO] [stderr] 374 | if member.name != String::from("") { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ help: try: `""` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cmp_owned)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cmp_owned [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/document/mod.rs:393:24 [INFO] [stderr] | [INFO] [stderr] 393 | if member.modifiers.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!member.modifiers.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/document/mod.rs:413:24 [INFO] [stderr] | [INFO] [stderr] 413 | if member.parameters.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!member.parameters.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/document/mod.rs:495:13 [INFO] [stderr] | [INFO] [stderr] 495 | / file.write(doc.as_str().as_bytes()) [INFO] [stderr] 496 | | .expect("Not able to write to file"); [INFO] [stderr] | |____________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::unused_io_amount)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/document/mod.rs:504:17 [INFO] [stderr] | [INFO] [stderr] 504 | / file.write(doc.as_str().as_bytes()) [INFO] [stderr] 505 | | .expect("Not able to write to file"); [INFO] [stderr] | |________________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/document/mod.rs:525:13 [INFO] [stderr] | [INFO] [stderr] 525 | / file.write(doc.as_str().as_bytes()) [INFO] [stderr] 526 | | .expect("Not able to write to file"); [INFO] [stderr] | |____________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/document/mod.rs:556:13 [INFO] [stderr] | [INFO] [stderr] 556 | / file.write(doc.as_str().as_bytes()) [INFO] [stderr] 557 | | .expect("Not able to write to file"); [INFO] [stderr] | |____________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/document/mod.rs:566:9 [INFO] [stderr] | [INFO] [stderr] 566 | / app_file [INFO] [stderr] 567 | | .write(gen_application_doc(app_doc).as_str().as_bytes()) [INFO] [stderr] 568 | | .expect("Not able to write to file"); [INFO] [stderr] | |________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/document/mod.rs:741:46 [INFO] [stderr] | [INFO] [stderr] 741 | let line_vec: Vec<&str> = file.split("/").collect::>(); [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/document/mod.rs:744:9 [INFO] [stderr] | [INFO] [stderr] 744 | / if l_part.contains(".git") || l_part.contains(".hg") { [INFO] [stderr] 745 | | true [INFO] [stderr] 746 | | } else { [INFO] [stderr] 747 | | false [INFO] [stderr] 748 | | } [INFO] [stderr] | |_________^ help: you can reduce it to: `l_part.contains(".git") || l_part.contains(".hg")` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_bool)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/document/mod.rs:757:51 [INFO] [stderr] | [INFO] [stderr] 757 | let line_vec: Vec<&str> = orig_path.split("/").collect::>(); [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: the loop variable `j` is only used to index `line_vec`. [INFO] [stderr] --> src/document/mod.rs:763:22 [INFO] [stderr] | [INFO] [stderr] 763 | for j in 0..i { [INFO] [stderr] | ^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::needless_range_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 763 | for in line_vec.iter().take(i) { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/document/mod.rs:769:13 [INFO] [stderr] | [INFO] [stderr] 769 | / match file_dir { [INFO] [stderr] 770 | | Ok(dir) => { [INFO] [stderr] 771 | | for f in dir { [INFO] [stderr] 772 | | let p = f.unwrap().path(); [INFO] [stderr] ... | [INFO] [stderr] 784 | | Err(_) => (), [INFO] [stderr] 785 | | } [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::single_match)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] help: try this [INFO] [stderr] | [INFO] [stderr] 769 | if let Ok(dir) = file_dir { [INFO] [stderr] 770 | for f in dir { [INFO] [stderr] 771 | let p = f.unwrap().path(); [INFO] [stderr] 772 | [INFO] [stderr] 773 | if p.is_dir() { [INFO] [stderr] 774 | let p_str = p.as_path().to_str().unwrap(); [INFO] [stderr] ... [INFO] [stderr] [INFO] [stderr] warning: you seem to be trying to use match for destructuring a single pattern. Consider using `if let` [INFO] [stderr] --> src/document/mod.rs:812:9 [INFO] [stderr] | [INFO] [stderr] 812 | / match remote_upstream { [INFO] [stderr] 813 | | Some(url) => remote_url = url.clone(), [INFO] [stderr] 814 | | None => (), [INFO] [stderr] 815 | | }; [INFO] [stderr] | |_________^ help: try this: `if let Some(url) = remote_upstream { remote_url = url.clone() }` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_match [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/document/mod.rs:819:24 [INFO] [stderr] | [INFO] [stderr] 819 | .split("@") [INFO] [stderr] | ^^^ help: try using a char instead: `'@'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/document/mod.rs:826:33 [INFO] [stderr] | [INFO] [stderr] 826 | name_part.split(":").collect::>().join("/") [INFO] [stderr] | ^^^ help: try using a char instead: `':'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/document/mod.rs:846:43 [INFO] [stderr] | [INFO] [stderr] 846 | let line_vec: Vec<&str> = p.split("/").collect::>(); [INFO] [stderr] | ^^^ help: try using a char instead: `'/'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] error: handle written amount returned or use `Write::write_all` instead [INFO] [stderr] --> src/document/mod.rs:877:13 [INFO] [stderr] | [INFO] [stderr] 877 | / file.write(doc.as_str().as_bytes()) [INFO] [stderr] 878 | | .expect("Not able to write to file"); [INFO] [stderr] | |____________________________________________________^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unused_io_amount [INFO] [stderr] [INFO] [stderr] warning: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/model/object.rs:64:21 [INFO] [stderr] | [INFO] [stderr] 64 | pub fn to_class(&mut self) -> Class { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::wrong_self_convention)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/model/object.rs:102:25 [INFO] [stderr] | [INFO] [stderr] 102 | pub fn to_interface(&mut self) -> Interface { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: methods called `to_*` usually take self by reference; consider choosing a less ambiguous name [INFO] [stderr] --> src/model/object.rs:127:27 [INFO] [stderr] | [INFO] [stderr] 127 | pub fn to_enumeration(&mut self) -> Enumeration { [INFO] [stderr] | ^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#wrong_self_convention [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/parse/mod.rs:28:24 [INFO] [stderr] | [INFO] [stderr] 28 | fn get_doc(tokens: &Vec) -> Doc { [INFO] [stderr] | ^^^^^^^^^^^^^^^ help: change this to: `&[JdocToken]` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::ptr_arg)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `tokens` [INFO] [stderr] --> src/parse/mod.rs:40:18 [INFO] [stderr] | [INFO] [stderr] 40 | for i in 0..tokens.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 40 | for (i, ) in tokens.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/parse/mod.rs:50:76 [INFO] [stderr] | [INFO] [stderr] 50 | let word_parts: Vec<&str> = new_desc.split(" ").collect(); [INFO] [stderr] | ^^^ help: try using a char instead: `' '` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/parse/mod.rs:72:76 [INFO] [stderr] | [INFO] [stderr] 72 | let word_parts: Vec<&str> = new_desc.split(" ").collect(); [INFO] [stderr] | ^^^ help: try using a char instead: `' '` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/parse/mod.rs:74:36 [INFO] [stderr] | [INFO] [stderr] 74 | if exceptions.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!exceptions.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `gram_parts`. [INFO] [stderr] --> src/parse/mod.rs:209:18 [INFO] [stderr] | [INFO] [stderr] 209 | for i in 0..gram_parts.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 209 | for in &gram_parts { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/parse/mod.rs:215:28 [INFO] [stderr] | [INFO] [stderr] 215 | if java_doc.exceptions.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!java_doc.exceptions.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] warning: The function/method `match_params` doesn't need a mutable reference [INFO] [stderr] --> src/parse/mod.rs:263:26 [INFO] [stderr] | [INFO] [stderr] 263 | match_params(&mut method, &java_doc.params); [INFO] [stderr] | ^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::unnecessary_mut_passed)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#unnecessary_mut_passed [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `gram_parts`. [INFO] [stderr] --> src/parse/mod.rs:279:18 [INFO] [stderr] | [INFO] [stderr] 279 | for i in 0..gram_parts.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 279 | for in &gram_parts { [INFO] [stderr] | ^^^^^^ ^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/parse/mod.rs:293:37 [INFO] [stderr] | [INFO] [stderr] 293 | if key.contains("=") { [INFO] [stderr] | ^^^ help: try using a char instead: `'='` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/parse/mod.rs:294:58 [INFO] [stderr] | [INFO] [stderr] 294 | let parts: Vec<&str> = key.split("=").collect(); [INFO] [stderr] | ^^^ help: try using a char instead: `'='` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is used to index `gram_parts` [INFO] [stderr] --> src/parse/mod.rs:321:18 [INFO] [stderr] | [INFO] [stderr] 321 | for i in 0..gram_parts.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 321 | for (i, ) in gram_parts.iter().enumerate() { [INFO] [stderr] | ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/parse/mod.rs:336:51 [INFO] [stderr] | [INFO] [stderr] 336 | pub fn match_params(method: &Method, jparams: &Vec) -> Vec { [INFO] [stderr] | ^^^^^^^^^^^ help: change this to: `&[Param]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: the loop variable `i` is only used to index `jparams`. [INFO] [stderr] --> src/parse/mod.rs:341:22 [INFO] [stderr] | [INFO] [stderr] 341 | for i in 0..jparams.len() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^ [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_range_loop [INFO] [stderr] help: consider using an iterator [INFO] [stderr] | [INFO] [stderr] 341 | for in &jparams { [INFO] [stderr] | ^^^^^^ ^^^^^^^^ [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/parse/mod.rs:377:31 [INFO] [stderr] | [INFO] [stderr] 377 | fn push_token(curr_token: &String, tokens: &mut Vec, keywords: &Vec<&str>) { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/parse/mod.rs:377:75 [INFO] [stderr] | [INFO] [stderr] 377 | fn push_token(curr_token: &String, tokens: &mut Vec, keywords: &Vec<&str>) { [INFO] [stderr] | ^^^^^^^^^^ help: change this to: `&[&str]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] error: this `if` has identical blocks [INFO] [stderr] --> src/parse/mod.rs:383:62 [INFO] [stderr] | [INFO] [stderr] 383 | } else if is_keyword!(curr_token, jdoc_keywords) { [INFO] [stderr] | ______________________________________________________________^ [INFO] [stderr] 384 | | tokens.push(Token::Keyword(curr_token.to_string())); [INFO] [stderr] 385 | | } else if is_keyword!(curr_token, spring_keywords) { [INFO] [stderr] | |_____________^ [INFO] [stderr] | [INFO] [stderr] = note: #[deny(clippy::if_same_then_else)] on by default [INFO] [stderr] note: same as this [INFO] [stderr] --> src/parse/mod.rs:381:50 [INFO] [stderr] | [INFO] [stderr] 381 | if is_keyword!(curr_token, keywords) { [INFO] [stderr] | __________________________________________________^ [INFO] [stderr] 382 | | tokens.push(Token::Keyword(curr_token.to_string())); [INFO] [stderr] 383 | | } else if is_keyword!(curr_token, jdoc_keywords) { [INFO] [stderr] | |_____________^ [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#if_same_then_else [INFO] [stderr] [INFO] [stderr] warning: writing `&String` instead of `&str` involves a new object where a slice will do. [INFO] [stderr] --> src/parse/mod.rs:393:34 [INFO] [stderr] | [INFO] [stderr] 393 | pub fn lex_contents(content: &String) -> Vec { [INFO] [stderr] | ^^^^^^^ help: change this to: `&str` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: this loop could be written as a `while let` loop [INFO] [stderr] --> src/parse/mod.rs:403:9 [INFO] [stderr] | [INFO] [stderr] 403 | / loop { [INFO] [stderr] 404 | | match blob.next() { [INFO] [stderr] 405 | | Some(ch) => match ch { [INFO] [stderr] 406 | | ' ' | '\t' | '\r' => { [INFO] [stderr] ... | [INFO] [stderr] 471 | | } [INFO] [stderr] 472 | | } [INFO] [stderr] | |_________^ help: try: `while let Some(ch) = blob.next() { .. }` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::while_let_loop)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#while_let_loop [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/parse/mod.rs:417:25 [INFO] [stderr] | [INFO] [stderr] 417 | line_number = line_number + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `line_number += 1` [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::assign_op_pattern)] on by default [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/parse/mod.rs:455:25 [INFO] [stderr] | [INFO] [stderr] 455 | block_depth = block_depth + 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `block_depth += 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: manual implementation of an assign operation [INFO] [stderr] --> src/parse/mod.rs:462:25 [INFO] [stderr] | [INFO] [stderr] 462 | block_depth = block_depth - 1; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: replace it with: `block_depth -= 1` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#assign_op_pattern [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 54 [INFO] [stderr] --> src/parse/mod.rs:507:5 [INFO] [stderr] | [INFO] [stderr] 507 | / pub fn construct_ast(tokens: Vec) -> ObjectType { [INFO] [stderr] 508 | | let mut annotation = false; [INFO] [stderr] 509 | | let mut ignore = false; [INFO] [stderr] 510 | | let mut object = Object::new(); [INFO] [stderr] ... | [INFO] [stderr] 771 | | } [INFO] [stderr] 772 | | } [INFO] [stderr] | |_____^ [INFO] [stderr] | [INFO] [stderr] = note: #[warn(clippy::cyclomatic_complexity)] on by default [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: single-character string constant used as pattern [INFO] [stderr] --> src/parse/mod.rs:629:53 [INFO] [stderr] | [INFO] [stderr] 629 | } else if word.contains("@") && !doc { [INFO] [stderr] | ^^^ help: try using a char instead: `'@'` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#single_char_pattern [INFO] [stderr] [INFO] [stderr] warning: the function has a cyclomatic complexity of 26 [INFO] [stderr] --> src/parse/test/mod.rs:82:1 [INFO] [stderr] | [INFO] [stderr] 82 | / fn test_doc_lex() { [INFO] [stderr] 83 | | let j_inter = "/** [INFO] [stderr] 84 | | * The sample description [INFO] [stderr] 85 | | * [INFO] [stderr] ... | [INFO] [stderr] 123 | | assert_eq!(Token::Symbol(String::from("value")), tokens[24]); [INFO] [stderr] 124 | | } [INFO] [stderr] | |_^ [INFO] [stderr] | [INFO] [stderr] = help: you could split it up into multiple smaller functions [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#cyclomatic_complexity [INFO] [stderr] [INFO] [stderr] warning: writing `&Vec<_>` instead of `&[_]` involves one more reference and cannot be used with non-Vec-based slices. [INFO] [stderr] --> src/main.rs:32:27 [INFO] [stderr] | [INFO] [stderr] 32 | fn get_project<'a>(files: &Vec) -> Result { [INFO] [stderr] | ^^^^^^^^^^^^^ help: change this to: `&[PathBuf]` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg [INFO] [stderr] [INFO] [stderr] warning: this boolean expression can be simplified [INFO] [stderr] --> src/main.rs:227:16 [INFO] [stderr] | [INFO] [stderr] 227 | if !init_res.is_ok() { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^ help: try: `init_res.is_err()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#nonminimal_bool [INFO] [stderr] [INFO] [stderr] warning: this if-then-else expression returns a bool literal [INFO] [stderr] --> src/main.rs:215:20 [INFO] [stderr] | [INFO] [stderr] 215 | let gen_book = if book != "" { true } else { false }; [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: you can reduce it to: `book != ""` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#needless_bool [INFO] [stderr] [INFO] [stderr] warning: length comparison to zero [INFO] [stderr] --> src/main.rs:220:8 [INFO] [stderr] | [INFO] [stderr] 220 | if file_paths.len() > 0 { [INFO] [stderr] | ^^^^^^^^^^^^^^^^^^^^ help: using `is_empty` is clearer and more explicit: `!file_paths.is_empty()` [INFO] [stderr] | [INFO] [stderr] = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#len_zero [INFO] [stderr] [INFO] [stderr] error: aborting due to 7 previous errors [INFO] [stderr] [INFO] [stderr] error: Could not compile `lojidoc`. [INFO] [stderr] [INFO] [stderr] To learn more, run the command again with --verbose. [INFO] running `"docker" "inspect" "52c02b34557423f4d626a712ea1be9629e107cb97b100505ef4b762a008c2a1c"` [INFO] running `"docker" "rm" "-f" "52c02b34557423f4d626a712ea1be9629e107cb97b100505ef4b762a008c2a1c"` [INFO] [stdout] 52c02b34557423f4d626a712ea1be9629e107cb97b100505ef4b762a008c2a1c