Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,234 changes: 611 additions & 623 deletions Cargo.lock

Large diffs are not rendered by default.

3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,9 @@ Roadmap
Changelog
---------

### 0.10.0
- Upgraded all dependencies.

### 0.9.1
- __Bugfix__: Avoid counting the same crate multiple times. [#79]
- Upgraded cargo to 0.41. [#85]
Expand Down
24 changes: 12 additions & 12 deletions cargo-geiger/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,32 +1,32 @@
[package]
authors = ["anderejd <[email protected]>"]
categories = ["command-line-utilities", "development-tools", "development-tools::cargo-plugins", "parsing"]
description = "Detects usage of unsafe Rust in your project and its dependencies."
description = "Detects usage of unsafe Rust in a Rust crate and its dependencies."
edition = "2018"
keywords = ["unsafe", "cargo", "plugin"]
license = "Apache-2.0/MIT"
name = "cargo-geiger"
readme = "README.md"
repository = "https://github.com/anderejd/cargo-geiger"
version = "0.9.1"
repository = "https://github.com/rust-secure-code/cargo-geiger"
version = "0.10.0"

[badges]
maintenance = { status = "experimental" }

[dependencies]
cargo = "0.41.0"
cargo-platform = "0.1.0"
colored = "1.9.2"
console = "0.9.1"
cargo = "0.43.1"
cargo-platform = "0.1.1"
colored = "1.9.3"
console = "0.10.0"
env_logger = "0.7.1"
geiger = { path = "../geiger", version = "0.4.3" }
geiger = { path = "../geiger", version = "0.4.4" }
petgraph = "0.5.0"
pico-args = "0.3.1"
walkdir = "2.3.1"

[dev-dependencies]
assert_cmd = "0.12.0"
assert_cmd = "1.0.1"
better-panic = "0.2.0"
insta = "0.13.0"
regex = "1.3.3"
rstest = "0.5.3"
insta = "0.15.0"
regex = "1.3.6"
rstest = "0.6.1"
49 changes: 26 additions & 23 deletions cargo-geiger/src/cli.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,17 +13,17 @@

use crate::format::Pattern;
use crate::Args;
use cargo::core::InternedString;
use cargo::core::Target;
use cargo::core::compiler::CompileMode;
use cargo::core::compiler::Executor;
use cargo::core::compiler::ProfileKind;
use cargo::core::compiler::Unit;
use cargo::core::dependency::Kind;
use cargo::core::dependency::DepKind;
use cargo::core::manifest::TargetKind;
use cargo::core::package::PackageSet;
use cargo::core::registry::PackageRegistry;
use cargo::core::resolver::ResolveOpts;
use cargo::core::shell::Verbosity;
use cargo::core::Target;
use cargo::core::{Package, PackageId, PackageIdSpec, Resolve, Workspace};
use cargo::ops;
use cargo::ops::CleanOptions;
Expand All @@ -40,9 +40,9 @@ use geiger::Count;
use geiger::CounterBlock;
use geiger::IncludeTests;
use geiger::RsFileMetrics;
use petgraph::EdgeDirection;
use petgraph::graph::NodeIndex;
use petgraph::visit::EdgeRef;
use petgraph::EdgeDirection;
use std::collections::hash_map::Entry;
use std::collections::{HashMap, HashSet};
use std::ffi::OsString;
Expand All @@ -55,6 +55,7 @@ use std::sync::Mutex;
use walkdir::DirEntry;
use walkdir::WalkDir;


// ---------- BEGIN: Public items ----------

#[derive(Clone, Copy, PartialEq)]
Expand Down Expand Up @@ -102,7 +103,7 @@ pub struct Node {
}

pub struct Graph {
graph: petgraph::Graph<Node, Kind>,
graph: petgraph::Graph<Node, DepKind>,
nodes: HashMap<PackageId, NodeIndex>,
}

Expand Down Expand Up @@ -575,23 +576,23 @@ fn format_package_name(pack: &Package, pat: &Pattern) -> String {
)
}

fn get_kind_group_name(k: Kind) -> Option<&'static str> {
fn get_kind_group_name(k: DepKind) -> Option<&'static str> {
match k {
Kind::Normal => None,
Kind::Build => Some("[build-dependencies]"),
Kind::Development => Some("[dev-dependencies]"),
DepKind::Normal => None,
DepKind::Build => Some("[build-dependencies]"),
DepKind::Development => Some("[dev-dependencies]"),
}
}

// ---------- END: Public items ----------

impl ExtraDeps {
fn allows(&self, dep: Kind) -> bool {
fn allows(&self, dep: DepKind) -> bool {
match (self, dep) {
(_, Kind::Normal) => true,
(_, DepKind::Normal) => true,
(ExtraDeps::All, _) => true,
(ExtraDeps::Build, Kind::Build) => true,
(ExtraDeps::Dev, Kind::Development) => true,
(ExtraDeps::Build, DepKind::Build) => true,
(ExtraDeps::Dev, DepKind::Development) => true,
_ => false,
}
}
Expand Down Expand Up @@ -943,7 +944,9 @@ fn resolve_rs_file_deps(
spec: vec![],
target: None,
profile_specified: false,
profile_kind: ProfileKind::Dev,
// A temporary hack to get cargo 0.43 to build, TODO: look closer at the updated cargo API
// later.
requested_profile: InternedString::new("dev"),
doc: false,
};
ops::clean(ws, &clean_opt)
Expand Down Expand Up @@ -1153,7 +1156,7 @@ enum TextTreeLine {
Package { id: PackageId, tree_vines: String },
/// There're extra dependencies comming and we should print a group header,
/// eg. "[build-dependencies]".
ExtraDepsGroup { kind: Kind, tree_vines: String },
ExtraDepsGroup { kind: DepKind, tree_vines: String },
}

/// To print the returned TextTreeLines in order are expectged to produce a nice
Expand Down Expand Up @@ -1231,29 +1234,29 @@ fn walk_dependency_node(
EdgeDirection::Outgoing => &graph.graph[edge.target()],
};
match *edge.weight() {
Kind::Normal => normal.push(dep),
Kind::Build => build.push(dep),
Kind::Development => development.push(dep),
DepKind::Normal => normal.push(dep),
DepKind::Build => build.push(dep),
DepKind::Development => development.push(dep),
}
}
let mut normal_out = walk_dependency_kind(
Kind::Normal,
DepKind::Normal,
&mut normal,
graph,
visited_deps,
levels_continue,
pc,
);
let mut build_out = walk_dependency_kind(
Kind::Build,
DepKind::Build,
&mut build,
graph,
visited_deps,
levels_continue,
pc,
);
let mut dev_out = walk_dependency_kind(
Kind::Development,
DepKind::Development,
&mut development,
graph,
visited_deps,
Expand All @@ -1267,7 +1270,7 @@ fn walk_dependency_node(
}

fn walk_dependency_kind(
kind: Kind,
kind: DepKind,
deps: &mut Vec<&Node>,
graph: &Graph,
visited_deps: &mut HashSet<PackageId>,
Expand All @@ -1285,7 +1288,7 @@ fn walk_dependency_kind(
let mut output = Vec::new();
if let Prefix::Indent = pc.prefix {
match kind {
Kind::Normal => (),
DepKind::Normal => (),
_ => {
let mut tree_vines = String::new();
for &continues in &**levels_continue {
Expand Down
3 changes: 2 additions & 1 deletion cargo-geiger/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -193,12 +193,13 @@ fn real_main(args: &Args, config: &mut Config) -> CliResult {
config.configure(
args.verbose,
args.quiet,
&args.color,
args.color.as_ref().map(|s| s.as_str()),
args.frozen,
args.locked,
args.offline,
&target_dir,
&args.unstable_flags,
&[] // Som cargo API change, TODO: Look closer at this later.
)?;
let verbosity = if args.verbose == 0 {
Verbosity::Normal
Expand Down
6 changes: 3 additions & 3 deletions geiger/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[package]
name = "geiger"
description = "Some library parts of cargo-geiger, decoupled from cargo."
version = "0.4.3"
version = "0.4.4"
edition = "2018"
authors = ["anderejd <[email protected]>"]
repository = "https://github.com/anderejd/cargo-geiger"
Expand All @@ -14,5 +14,5 @@ license = "Apache-2.0/MIT"
maintenance = { status = "experimental" }

[dependencies]
syn = { version = "1.0.14", features = ["parsing", "printing", "clone-impls", "full", "extra-traits", "visit"] }
proc-macro2 = "1.0.8"
syn = { version = "1.0.17", features = ["parsing", "printing", "clone-impls", "full", "extra-traits", "visit"] }
proc-macro2 = "1.0.10"
3 changes: 3 additions & 0 deletions geiger/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,9 @@ For more details please see the `README.md` in [cargo-geiger].
Changelog
---------

### 0.4.4
- Updated dependencies, only patch version updates.

### 0.4.3
- Updated dependencies.

Expand Down