#lint #condition #branch #match #duplicates #duplicated #content

nightly copypasteck

A plugin lint for detecting if and match branches with duplicated conditions or contents

5 releases

Uses old Rust 2015

0.1.4 Jan 24, 2015
0.1.3 Jan 2, 2015
0.1.2 Dec 30, 2014
0.1.1 Nov 20, 2014
0.1.0 Nov 14, 2014

#2049 in Rust patterns

MIT/Apache

25KB
440 lines

copypasteck

Build Status

A basic rustc lint plugin for checking for copy-paste duplication. This will warn about if and match branches with duplicated conditions or contents.

Example

# Cargo.toml
[package]
name = "example"
version = "0.1.0"
authors = ["You <youremail@example.com>"]

[dependencies.copypasteck]
git = "https://github.com/huonw/copypasteck"
// src/main.rs
#![feature(phase)]

#[phase(plugin)] extern crate copypasteck;

fn main() {
    let a = 10i;
    if a > 5 {
        println!("hi");
    } else if a > 5 {
        println!("bye");
    }
}
$ cargo build
    Updating git repository `https://github.com/huonw/copypasteck`
   Compiling copypasteck v0.1.0 (https://github.com/huonw/copypasteck)
   Compiling example v0.1.0 (file:...)
.../src/main.rs:9:15: 9:20 warning: contents of `if` condition identical to previous condition; was there a copy-paste error?, #[warn(copy_paste)] on by default
.../src/main.rs:9     } else if a > 5 {
                                ^~~~~
.../src/main.rs:7:8: 7:13 note: previous condition here
.../src/main.rs:7     if a > 5 {
                         ^~~~~

License

This is distributed under the same terms as Rust itself, dual MIT and Apache. See LICENSE-*.

No runtime deps