Merge branch 'main' into redsun82/mad

This commit is contained in:
Paolo Tranquilli
2025-06-10 13:39:10 +02:00
36 changed files with 15081 additions and 4494 deletions

View File

@@ -0,0 +1,9 @@
class BuiltinType extends @builtintype {
string toString() { none() }
}
from BuiltinType id, string name, int kind, int new_kind, int size, int sign, int alignment
where
builtintypes(id, name, kind, size, sign, alignment) and
if kind = 62 then new_kind = 1 else new_kind = kind
select id, name, new_kind, size, sign, alignment

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,3 @@
description: Support __mfp8 type
compatibility: backwards
builtintypes.rel: run builtintypes.qlo

View File

@@ -839,6 +839,9 @@ private predicate floatingPointTypeMapping(
or
// _Complex _Float128
kind = 61 and base = 2 and domain = TComplexDomain() and realKind = 49 and extended = false
or
// __mfp8
kind = 62 and base = 2 and domain = TRealDomain() and realKind = 62 and extended = false
}
/**

View File

@@ -691,6 +691,7 @@ case @builtintype.kind of
| 59 = @complex_std_float64 // _Complex _Float64
| 60 = @complex_float64x // _Complex _Float64x
| 61 = @complex_std_float128 // _Complex _Float128
| 62 = @mfp8 // __mfp8
;
builtintypes(

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,2 @@
description: Support __mfp8 type
compatibility: full

View File

@@ -25,6 +25,7 @@
| file://:0:0:0:0 | __float128 |
| file://:0:0:0:0 | __fp16 |
| file://:0:0:0:0 | __int128 |
| file://:0:0:0:0 | __mfp8 |
| file://:0:0:0:0 | __va_list_tag |
| file://:0:0:0:0 | __va_list_tag & |
| file://:0:0:0:0 | __va_list_tag && |

View File

@@ -46,6 +46,7 @@
| file://:0:0:0:0 | __float128 | 16 |
| file://:0:0:0:0 | __fp16 | 2 |
| file://:0:0:0:0 | __int128 | 16 |
| file://:0:0:0:0 | __mfp8 | 1 |
| file://:0:0:0:0 | __va_list_tag | 24 |
| file://:0:0:0:0 | __va_list_tag & | 8 |
| file://:0:0:0:0 | __va_list_tag && | 8 |

View File

@@ -27,6 +27,7 @@
| file://:0:0:0:0 | __float128 | __float128 |
| file://:0:0:0:0 | __fp16 | __fp16 |
| file://:0:0:0:0 | __int128 | __int128 |
| file://:0:0:0:0 | __mfp8 | __mfp8 |
| file://:0:0:0:0 | __va_list_tag & | __va_list_tag & |
| file://:0:0:0:0 | __va_list_tag && | __va_list_tag && |
| file://:0:0:0:0 | auto | auto |

View File

@@ -26,6 +26,7 @@
| __float128 | Float128Type | | | | |
| __fp16 | BinaryFloatingPointType, RealNumberType | | | | |
| __int128 | Int128Type | | | | |
| __mfp8 | BinaryFloatingPointType, RealNumberType | | | | |
| __va_list_tag | DirectAccessHolder, MetricClass, Struct, StructLikeClass | | | | |
| __va_list_tag & | LValueReferenceType, PointerOrArrayOrReferenceType, PointerOrArrayOrReferenceTypeIndirection | | __va_list_tag | | |
| __va_list_tag && | PointerOrArrayOrReferenceType, PointerOrArrayOrReferenceTypeIndirection, RValueReferenceType | | __va_list_tag | | |

View File

@@ -11,6 +11,7 @@ ql/csharp/ql/src/Likely Bugs/EqualityCheckOnFloats.ql
ql/csharp/ql/src/Likely Bugs/ReferenceEqualsOnValueTypes.ql
ql/csharp/ql/src/Likely Bugs/SelfAssignment.ql
ql/csharp/ql/src/Likely Bugs/UncheckedCastInEquals.ql
ql/csharp/ql/src/Performance/StringConcatenationInLoop.ql
ql/csharp/ql/src/Performance/UseTryGetValue.ql
ql/csharp/ql/src/Useless code/DefaultToString.ql
ql/csharp/ql/src/Useless code/IntGetHashCode.ql

View File

@@ -7,6 +7,7 @@
* @id cs/string-concatenation-in-loop
* @tags efficiency
* maintainability
* quality
*/
import csharp

View File

@@ -127,12 +127,25 @@ abstract class ItemNode extends Locatable {
or
crateDependencyEdge(this, name, result)
or
externCrateEdge(this, name, result)
or
// items made available through `use` are available to nodes that contain the `use`
exists(UseItemNode use |
use = this.getASuccessorRec(_) and
result = use.(ItemNode).getASuccessorRec(name)
)
or
exists(ExternCrateItemNode ec | result = ec.(ItemNode).getASuccessorRec(name) |
ec = this.getASuccessorRec(_)
or
// if the extern crate appears in the crate root, then the crate name is also added
// to the 'extern prelude', see https://doc.rust-lang.org/reference/items/extern-crates.html
exists(Crate c |
ec = c.getSourceFile().(ItemNode).getASuccessorRec(_) and
this = c.getASourceFile()
)
)
or
// items made available through macro calls are available to nodes that contain the macro call
exists(MacroCallItemNode call |
call = this.getASuccessorRec(_) and
@@ -353,16 +366,30 @@ class CrateItemNode extends ItemNode instanceof Crate {
override predicate providesCanonicalPathPrefixFor(Crate c, ItemNode child) {
this.hasCanonicalPath(c) and
exists(ModuleLikeNode m |
child.getImmediateParent() = m and
not m = child.(SourceFileItemNode).getSuper() and
m = super.getSourceFile()
exists(SourceFileItemNode file |
child.getImmediateParent() = file and
not file = child.(SourceFileItemNode).getSuper() and
file = super.getSourceFile()
)
}
override string getCanonicalPath(Crate c) { c = this and result = Crate.super.getName() }
}
class ExternCrateItemNode extends ItemNode instanceof ExternCrate {
override string getName() { result = super.getRename().getName().getText() }
override Namespace getNamespace() { none() }
override Visibility getVisibility() { none() }
override TypeParam getTypeParam(int i) { none() }
override predicate hasCanonicalPath(Crate c) { none() }
override string getCanonicalPath(Crate c) { none() }
}
/** An item that can occur in a trait or an `impl` block. */
abstract private class AssocItemNode extends ItemNode, AssocItem {
/** Holds if this associated item has an implementation. */
@@ -793,6 +820,10 @@ class TypeAliasItemNode extends AssocItemNode instanceof TypeAlias {
override Visibility getVisibility() { result = TypeAlias.super.getVisibility() }
override TypeParam getTypeParam(int i) { result = super.getGenericParamList().getTypeParam(i) }
override predicate hasCanonicalPath(Crate c) { none() }
override string getCanonicalPath(Crate c) { none() }
}
private class UnionItemNode extends ItemNode instanceof Union {
@@ -1063,12 +1094,12 @@ private predicate crateDefEdge(CrateItemNode c, string name, ItemNode i) {
}
/**
* Holds if `m` depends on crate `dep` named `name`.
* Holds if `file` depends on crate `dep` named `name`.
*/
private predicate crateDependencyEdge(ModuleLikeNode m, string name, CrateItemNode dep) {
private predicate crateDependencyEdge(SourceFileItemNode file, string name, CrateItemNode dep) {
exists(CrateItemNode c |
dep = c.(Crate).getDependency(name) and
m = c.getASourceFile()
file = c.getASourceFile()
)
}
@@ -1404,6 +1435,22 @@ private predicate useImportEdge(Use use, string name, ItemNode item) {
)
}
/** Holds if `ec` imports `crate` as `name`. */
pragma[nomagic]
private predicate externCrateEdge(ExternCrateItemNode ec, string name, CrateItemNode crate) {
name = ec.getName() and
exists(SourceFile f, string s |
ec.getFile() = f.getFile() and
s = ec.(ExternCrate).getIdentifier().getText()
|
crateDependencyEdge(f, s, crate)
or
// `extern crate` is used to import the current crate
s = "self" and
ec.getFile() = crate.getASourceFile().getFile()
)
}
/**
* Holds if `i` is available inside `f` because it is reexported in
* [the `core` prelude][1] or [the `std` prelude][2].

View File

@@ -0,0 +1 @@
!/Cargo.lock

View File

@@ -0,0 +1,84 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 4
[[package]]
name = "block-buffer"
version = "0.10.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
dependencies = [
"generic-array",
]
[[package]]
name = "cfg-if"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268"
[[package]]
name = "crypto-common"
version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
dependencies = [
"generic-array",
"typenum",
]
[[package]]
name = "digest"
version = "0.10.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
dependencies = [
"block-buffer",
"crypto-common",
]
[[package]]
name = "generic-array"
version = "0.14.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
dependencies = [
"typenum",
"version_check",
]
[[package]]
name = "md-5"
version = "0.10.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf"
dependencies = [
"cfg-if",
"digest",
]
[[package]]
name = "md5"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "490cc448043f947bae3cbee9c203358d62dbee0db12107a74be5c30ccfd09771"
[[package]]
name = "test"
version = "0.0.1"
dependencies = [
"md-5",
"md5",
]
[[package]]
name = "typenum"
version = "1.18.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f"
[[package]]
name = "version_check"
version = "0.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"

View File

@@ -18,7 +18,7 @@
#-----| core -> Crate(core@0.0.0)
#-----| compiler_builtins -> Crate(compiler_builtins@0.1.140)
#-----| Crate(cfg_if@1.0.0)
#-----| Crate(cfg_if@1.0.1)
#-----| proc_macro -> Crate(proc_macro@0.0.0)
#-----| alloc -> Crate(alloc@0.0.0)
#-----| core -> Crate(core@0.0.0)
@@ -89,7 +89,7 @@ main.rs:
#-----| core -> Crate(core@0.0.0)
#-----| std -> Crate(std@0.0.0)
#-----| test -> Crate(test@0.0.0)
#-----| cfg_if -> Crate(cfg_if@1.0.0)
#-----| cfg_if -> Crate(cfg_if@1.0.1)
#-----| digest -> Crate(digest@0.10.7)
#-----| Crate(md5@0.7.0)

View File

@@ -1,3 +1,64 @@
multiplePathResolutions
| test.rs:112:62:112:73 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:112:62:112:73 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:112:62:112:73 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:112:62:112:73 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:112:62:112:73 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:112:62:112:73 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:112:62:112:73 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:112:62:112:73 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:112:62:112:73 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:112:62:112:73 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:112:62:112:73 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:112:62:112:73 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:112:62:112:73 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:112:62:112:73 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:112:62:112:73 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:119:58:119:69 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:119:58:119:69 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:119:58:119:69 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:119:58:119:69 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:119:58:119:69 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:119:58:119:69 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:119:58:119:69 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:119:58:119:69 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:119:58:119:69 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:119:58:119:69 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:119:58:119:69 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:119:58:119:69 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:119:58:119:69 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:119:58:119:69 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:119:58:119:69 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:775:50:775:61 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:775:50:775:61 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:775:50:775:61 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:775:50:775:61 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:775:50:775:61 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:775:50:775:61 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:775:50:775:61 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:775:50:775:61 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:775:50:775:61 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:775:50:775:61 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:775:50:775:61 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:775:50:775:61 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:775:50:775:61 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:775:50:775:61 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:775:50:775:61 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:775:50:775:61 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:775:50:775:61 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:775:50:775:61 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:775:50:775:61 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:775:50:775:61 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:775:50:775:61 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:775:50:775:61 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:775:50:775:61 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:775:50:775:61 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:775:50:775:61 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:775:50:775:61 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:775:50:775:61 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:775:50:775:61 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:775:50:775:61 | ...::from | file://:0:0:0:0 | fn from |
| test.rs:775:50:775:61 | ...::from | file://:0:0:0:0 | fn from |
multipleCanonicalPaths
| file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | <typenum::Equal as core::cmp::Ord>::to_ordering |
| file://:0:0:0:0 | fn to_ordering | file://:0:0:0:0 | Crate(typenum@1.18.0) | <typenum::Equal as typenum::marker_traits::Ord>::to_ordering |

View File

@@ -0,0 +1,7 @@
multiplePathResolutions
| main.rs:52:11:52:22 | ...::from | file://:0:0:0:0 | fn from |
| main.rs:52:11:52:22 | ...::from | file://:0:0:0:0 | fn from |
| main.rs:52:11:52:22 | ...::from | file://:0:0:0:0 | fn from |
| main.rs:52:11:52:22 | ...::from | file://:0:0:0:0 | fn from |
| main.rs:52:11:52:22 | ...::from | file://:0:0:0:0 | fn from |
| main.rs:52:11:52:22 | ...::from | file://:0:0:0:0 | fn from |

View File

@@ -22,8 +22,10 @@ edges
| main.rs:57:11:57:26 | source_slice(...) | main.rs:57:6:57:7 | s1 | provenance | |
| main.rs:58:6:58:7 | s2 | main.rs:59:7:59:8 | s2 | provenance | |
| main.rs:58:11:58:24 | s1.to_string() | main.rs:58:6:58:7 | s2 | provenance | |
| main.rs:63:9:63:9 | s | main.rs:64:16:64:16 | s | provenance | |
| main.rs:63:9:63:9 | s | main.rs:64:16:64:25 | s.as_str() | provenance | MaD:3 |
| main.rs:63:13:63:22 | source(...) | main.rs:63:9:63:9 | s | provenance | |
| main.rs:64:16:64:16 | s | main.rs:64:16:64:25 | s.as_str() | provenance | MaD:3 |
| main.rs:68:9:68:9 | s | main.rs:70:34:70:61 | MacroExpr | provenance | |
| main.rs:68:9:68:9 | s | main.rs:73:34:73:59 | MacroExpr | provenance | |
| main.rs:68:13:68:22 | source(...) | main.rs:68:9:68:9 | s | provenance | |
@@ -75,6 +77,7 @@ nodes
| main.rs:59:7:59:8 | s2 | semmle.label | s2 |
| main.rs:63:9:63:9 | s | semmle.label | s |
| main.rs:63:13:63:22 | source(...) | semmle.label | source(...) |
| main.rs:64:16:64:16 | s | semmle.label | s |
| main.rs:64:16:64:25 | s.as_str() | semmle.label | s.as_str() |
| main.rs:68:9:68:9 | s | semmle.label | s |
| main.rs:68:13:68:22 | source(...) | semmle.label | source(...) |

View File

@@ -285,7 +285,7 @@ mod m13 {
pub struct f {} // I72
mod m14 {
use crate::m13::f; // $ item=I71 item=I72
use zelf::m13::f; // $ item=I71 item=I72
#[rustfmt::skip]
fn g(x: f) { // $ item=I72
@@ -621,6 +621,8 @@ mod m24 {
} // I121
}
extern crate self as zelf;
fn main() {
my::nested::nested1::nested2::f(); // $ item=I4
my::f(); // $ item=I38
@@ -650,4 +652,5 @@ fn main() {
m18::m19::m20::g(); // $ item=I103
m23::f(); // $ item=I108
m24::f(); // $ item=I121
zelf::h(); // $ item=I25
}

View File

@@ -21,7 +21,7 @@ type Result<
T, // T
> = ::std::result::Result<
T, // $ item=T
String,> // $ item=Result
String,> // $ item=Result $ item=String
; // my::Result
fn int_div(

View File

@@ -61,7 +61,7 @@ resolvePath
| main.rs:30:17:30:21 | super | main.rs:18:5:36:5 | mod m2 |
| main.rs:30:17:30:24 | ...::f | main.rs:19:9:21:9 | fn f |
| main.rs:33:17:33:17 | f | main.rs:19:9:21:9 | fn f |
| main.rs:40:9:40:13 | super | main.rs:1:1:653:2 | SourceFile |
| main.rs:40:9:40:13 | super | main.rs:1:1:656:2 | SourceFile |
| main.rs:40:9:40:17 | ...::m1 | main.rs:13:1:37:1 | mod m1 |
| main.rs:40:9:40:21 | ...::m2 | main.rs:18:5:36:5 | mod m2 |
| main.rs:40:9:40:24 | ...::g | main.rs:23:9:27:9 | fn g |
@@ -73,7 +73,7 @@ resolvePath
| main.rs:61:17:61:19 | Foo | main.rs:59:9:59:21 | struct Foo |
| main.rs:64:13:64:15 | Foo | main.rs:53:5:53:17 | struct Foo |
| main.rs:66:5:66:5 | f | main.rs:55:5:62:5 | fn f |
| main.rs:68:5:68:8 | self | main.rs:1:1:653:2 | SourceFile |
| main.rs:68:5:68:8 | self | main.rs:1:1:656:2 | SourceFile |
| main.rs:68:5:68:11 | ...::i | main.rs:71:1:83:1 | fn i |
| main.rs:74:13:74:15 | Foo | main.rs:48:1:48:13 | struct Foo |
| main.rs:78:16:78:18 | i32 | {EXTERNAL LOCATION} | struct i32 |
@@ -88,7 +88,7 @@ resolvePath
| main.rs:87:57:87:66 | ...::g | my2/nested2.rs:7:9:9:9 | fn g |
| main.rs:87:80:87:86 | nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 |
| main.rs:100:5:100:22 | f_defined_in_macro | main.rs:99:18:99:42 | fn f_defined_in_macro |
| main.rs:117:13:117:17 | super | main.rs:1:1:653:2 | SourceFile |
| main.rs:117:13:117:17 | super | main.rs:1:1:656:2 | SourceFile |
| main.rs:117:13:117:21 | ...::m5 | main.rs:103:1:107:1 | mod m5 |
| main.rs:118:9:118:9 | f | main.rs:104:5:106:5 | fn f |
| main.rs:118:9:118:9 | f | main.rs:110:5:112:5 | fn f |
@@ -145,10 +145,10 @@ resolvePath
| main.rs:278:16:278:16 | T | main.rs:272:7:272:7 | T |
| main.rs:279:14:279:17 | Self | main.rs:270:5:280:5 | trait MyParamTrait |
| main.rs:279:14:279:33 | ...::AssociatedType | main.rs:274:9:274:28 | type AssociatedType |
| main.rs:288:13:288:17 | crate | main.rs:0:0:0:0 | Crate(main@0.0.1) |
| main.rs:288:13:288:22 | ...::m13 | main.rs:283:1:296:1 | mod m13 |
| main.rs:288:13:288:25 | ...::f | main.rs:284:5:284:17 | fn f |
| main.rs:288:13:288:25 | ...::f | main.rs:284:19:285:19 | struct f |
| main.rs:288:13:288:16 | zelf | main.rs:0:0:0:0 | Crate(main@0.0.1) |
| main.rs:288:13:288:21 | ...::m13 | main.rs:283:1:296:1 | mod m13 |
| main.rs:288:13:288:24 | ...::f | main.rs:284:5:284:17 | fn f |
| main.rs:288:13:288:24 | ...::f | main.rs:284:19:285:19 | struct f |
| main.rs:291:17:291:17 | f | main.rs:284:19:285:19 | struct f |
| main.rs:292:21:292:21 | f | main.rs:284:19:285:19 | struct f |
| main.rs:293:13:293:13 | f | main.rs:284:5:284:17 | fn f |
@@ -266,65 +266,67 @@ resolvePath
| main.rs:620:9:620:36 | GenericStruct::<...> | main.rs:563:5:566:5 | struct GenericStruct |
| main.rs:620:9:620:47 | ...::call_both | main.rs:586:9:589:9 | fn call_both |
| main.rs:620:25:620:35 | Implementor | main.rs:592:5:592:23 | struct Implementor |
| main.rs:625:5:625:6 | my | main.rs:1:1:1:7 | mod my |
| main.rs:625:5:625:14 | ...::nested | my.rs:1:1:1:15 | mod nested |
| main.rs:625:5:625:23 | ...::nested1 | my/nested.rs:1:1:17:1 | mod nested1 |
| main.rs:625:5:625:32 | ...::nested2 | my/nested.rs:2:5:11:5 | mod nested2 |
| main.rs:625:5:625:35 | ...::f | my/nested.rs:3:9:5:9 | fn f |
| main.rs:626:5:626:6 | my | main.rs:1:1:1:7 | mod my |
| main.rs:626:5:626:9 | ...::f | my.rs:5:1:7:1 | fn f |
| main.rs:627:5:627:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 |
| main.rs:627:5:627:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 |
| main.rs:627:5:627:29 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 |
| main.rs:627:5:627:32 | ...::f | my2/nested2.rs:3:9:5:9 | fn f |
| main.rs:628:5:628:5 | f | my2/nested2.rs:3:9:5:9 | fn f |
| main.rs:629:5:629:5 | g | my2/nested2.rs:7:9:9:9 | fn g |
| main.rs:630:5:630:9 | crate | main.rs:0:0:0:0 | Crate(main@0.0.1) |
| main.rs:630:5:630:12 | ...::h | main.rs:50:1:69:1 | fn h |
| main.rs:631:5:631:6 | m1 | main.rs:13:1:37:1 | mod m1 |
| main.rs:631:5:631:10 | ...::m2 | main.rs:18:5:36:5 | mod m2 |
| main.rs:631:5:631:13 | ...::g | main.rs:23:9:27:9 | fn g |
| main.rs:632:5:632:6 | m1 | main.rs:13:1:37:1 | mod m1 |
| main.rs:632:5:632:10 | ...::m2 | main.rs:18:5:36:5 | mod m2 |
| main.rs:632:5:632:14 | ...::m3 | main.rs:29:9:35:9 | mod m3 |
| main.rs:632:5:632:17 | ...::h | main.rs:30:27:34:13 | fn h |
| main.rs:633:5:633:6 | m4 | main.rs:39:1:46:1 | mod m4 |
| main.rs:633:5:633:9 | ...::i | main.rs:42:5:45:5 | fn i |
| main.rs:634:5:634:5 | h | main.rs:50:1:69:1 | fn h |
| main.rs:635:5:635:11 | f_alias | my2/nested2.rs:3:9:5:9 | fn f |
| main.rs:636:5:636:11 | g_alias | my2/nested2.rs:7:9:9:9 | fn g |
| main.rs:637:5:637:5 | j | main.rs:97:1:101:1 | fn j |
| main.rs:638:5:638:6 | m6 | main.rs:109:1:120:1 | mod m6 |
| main.rs:638:5:638:9 | ...::g | main.rs:114:5:119:5 | fn g |
| main.rs:639:5:639:6 | m7 | main.rs:122:1:141:1 | mod m7 |
| main.rs:639:5:639:9 | ...::f | main.rs:133:5:140:5 | fn f |
| main.rs:640:5:640:6 | m8 | main.rs:143:1:197:1 | mod m8 |
| main.rs:640:5:640:9 | ...::g | main.rs:181:5:196:5 | fn g |
| main.rs:641:5:641:6 | m9 | main.rs:199:1:207:1 | mod m9 |
| main.rs:641:5:641:9 | ...::f | main.rs:202:5:206:5 | fn f |
| main.rs:642:5:642:7 | m11 | main.rs:230:1:267:1 | mod m11 |
| main.rs:642:5:642:10 | ...::f | main.rs:235:5:238:5 | fn f |
| main.rs:643:5:643:7 | m15 | main.rs:298:1:352:1 | mod m15 |
| main.rs:643:5:643:10 | ...::f | main.rs:339:5:351:5 | fn f |
| main.rs:644:5:644:7 | m16 | main.rs:354:1:446:1 | mod m16 |
| main.rs:644:5:644:10 | ...::f | main.rs:421:5:445:5 | fn f |
| main.rs:645:5:645:7 | m17 | main.rs:448:1:478:1 | mod m17 |
| main.rs:645:5:645:10 | ...::f | main.rs:472:5:477:5 | fn f |
| main.rs:646:5:646:11 | nested6 | my2/nested2.rs:14:5:18:5 | mod nested6 |
| main.rs:646:5:646:14 | ...::f | my2/nested2.rs:15:9:17:9 | fn f |
| main.rs:647:5:647:11 | nested8 | my2/nested2.rs:22:5:26:5 | mod nested8 |
| main.rs:647:5:647:14 | ...::f | my2/nested2.rs:23:9:25:9 | fn f |
| main.rs:648:5:648:7 | my3 | my2/mod.rs:12:1:12:12 | mod my3 |
| main.rs:648:5:648:10 | ...::f | my2/my3/mod.rs:1:1:5:1 | fn f |
| main.rs:649:5:649:12 | nested_f | my/my4/my5/mod.rs:1:1:3:1 | fn f |
| main.rs:650:5:650:7 | m18 | main.rs:480:1:498:1 | mod m18 |
| main.rs:650:5:650:12 | ...::m19 | main.rs:485:5:497:5 | mod m19 |
| main.rs:650:5:650:17 | ...::m20 | main.rs:490:9:496:9 | mod m20 |
| main.rs:650:5:650:20 | ...::g | main.rs:491:13:495:13 | fn g |
| main.rs:651:5:651:7 | m23 | main.rs:527:1:552:1 | mod m23 |
| main.rs:651:5:651:10 | ...::f | main.rs:547:5:551:5 | fn f |
| main.rs:652:5:652:7 | m24 | main.rs:554:1:622:1 | mod m24 |
| main.rs:652:5:652:10 | ...::f | main.rs:608:5:621:5 | fn f |
| main.rs:627:5:627:6 | my | main.rs:1:1:1:7 | mod my |
| main.rs:627:5:627:14 | ...::nested | my.rs:1:1:1:15 | mod nested |
| main.rs:627:5:627:23 | ...::nested1 | my/nested.rs:1:1:17:1 | mod nested1 |
| main.rs:627:5:627:32 | ...::nested2 | my/nested.rs:2:5:11:5 | mod nested2 |
| main.rs:627:5:627:35 | ...::f | my/nested.rs:3:9:5:9 | fn f |
| main.rs:628:5:628:6 | my | main.rs:1:1:1:7 | mod my |
| main.rs:628:5:628:9 | ...::f | my.rs:5:1:7:1 | fn f |
| main.rs:629:5:629:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 |
| main.rs:629:5:629:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 |
| main.rs:629:5:629:29 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 |
| main.rs:629:5:629:32 | ...::f | my2/nested2.rs:3:9:5:9 | fn f |
| main.rs:630:5:630:5 | f | my2/nested2.rs:3:9:5:9 | fn f |
| main.rs:631:5:631:5 | g | my2/nested2.rs:7:9:9:9 | fn g |
| main.rs:632:5:632:9 | crate | main.rs:0:0:0:0 | Crate(main@0.0.1) |
| main.rs:632:5:632:12 | ...::h | main.rs:50:1:69:1 | fn h |
| main.rs:633:5:633:6 | m1 | main.rs:13:1:37:1 | mod m1 |
| main.rs:633:5:633:10 | ...::m2 | main.rs:18:5:36:5 | mod m2 |
| main.rs:633:5:633:13 | ...::g | main.rs:23:9:27:9 | fn g |
| main.rs:634:5:634:6 | m1 | main.rs:13:1:37:1 | mod m1 |
| main.rs:634:5:634:10 | ...::m2 | main.rs:18:5:36:5 | mod m2 |
| main.rs:634:5:634:14 | ...::m3 | main.rs:29:9:35:9 | mod m3 |
| main.rs:634:5:634:17 | ...::h | main.rs:30:27:34:13 | fn h |
| main.rs:635:5:635:6 | m4 | main.rs:39:1:46:1 | mod m4 |
| main.rs:635:5:635:9 | ...::i | main.rs:42:5:45:5 | fn i |
| main.rs:636:5:636:5 | h | main.rs:50:1:69:1 | fn h |
| main.rs:637:5:637:11 | f_alias | my2/nested2.rs:3:9:5:9 | fn f |
| main.rs:638:5:638:11 | g_alias | my2/nested2.rs:7:9:9:9 | fn g |
| main.rs:639:5:639:5 | j | main.rs:97:1:101:1 | fn j |
| main.rs:640:5:640:6 | m6 | main.rs:109:1:120:1 | mod m6 |
| main.rs:640:5:640:9 | ...::g | main.rs:114:5:119:5 | fn g |
| main.rs:641:5:641:6 | m7 | main.rs:122:1:141:1 | mod m7 |
| main.rs:641:5:641:9 | ...::f | main.rs:133:5:140:5 | fn f |
| main.rs:642:5:642:6 | m8 | main.rs:143:1:197:1 | mod m8 |
| main.rs:642:5:642:9 | ...::g | main.rs:181:5:196:5 | fn g |
| main.rs:643:5:643:6 | m9 | main.rs:199:1:207:1 | mod m9 |
| main.rs:643:5:643:9 | ...::f | main.rs:202:5:206:5 | fn f |
| main.rs:644:5:644:7 | m11 | main.rs:230:1:267:1 | mod m11 |
| main.rs:644:5:644:10 | ...::f | main.rs:235:5:238:5 | fn f |
| main.rs:645:5:645:7 | m15 | main.rs:298:1:352:1 | mod m15 |
| main.rs:645:5:645:10 | ...::f | main.rs:339:5:351:5 | fn f |
| main.rs:646:5:646:7 | m16 | main.rs:354:1:446:1 | mod m16 |
| main.rs:646:5:646:10 | ...::f | main.rs:421:5:445:5 | fn f |
| main.rs:647:5:647:7 | m17 | main.rs:448:1:478:1 | mod m17 |
| main.rs:647:5:647:10 | ...::f | main.rs:472:5:477:5 | fn f |
| main.rs:648:5:648:11 | nested6 | my2/nested2.rs:14:5:18:5 | mod nested6 |
| main.rs:648:5:648:14 | ...::f | my2/nested2.rs:15:9:17:9 | fn f |
| main.rs:649:5:649:11 | nested8 | my2/nested2.rs:22:5:26:5 | mod nested8 |
| main.rs:649:5:649:14 | ...::f | my2/nested2.rs:23:9:25:9 | fn f |
| main.rs:650:5:650:7 | my3 | my2/mod.rs:12:1:12:12 | mod my3 |
| main.rs:650:5:650:10 | ...::f | my2/my3/mod.rs:1:1:5:1 | fn f |
| main.rs:651:5:651:12 | nested_f | my/my4/my5/mod.rs:1:1:3:1 | fn f |
| main.rs:652:5:652:7 | m18 | main.rs:480:1:498:1 | mod m18 |
| main.rs:652:5:652:12 | ...::m19 | main.rs:485:5:497:5 | mod m19 |
| main.rs:652:5:652:17 | ...::m20 | main.rs:490:9:496:9 | mod m20 |
| main.rs:652:5:652:20 | ...::g | main.rs:491:13:495:13 | fn g |
| main.rs:653:5:653:7 | m23 | main.rs:527:1:552:1 | mod m23 |
| main.rs:653:5:653:10 | ...::f | main.rs:547:5:551:5 | fn f |
| main.rs:654:5:654:7 | m24 | main.rs:554:1:622:1 | mod m24 |
| main.rs:654:5:654:10 | ...::f | main.rs:608:5:621:5 | fn f |
| main.rs:655:5:655:8 | zelf | main.rs:0:0:0:0 | Crate(main@0.0.1) |
| main.rs:655:5:655:11 | ...::h | main.rs:50:1:69:1 | fn h |
| my2/mod.rs:5:5:5:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 |
| my2/mod.rs:5:5:5:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 |
| my2/mod.rs:5:5:5:29 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 |
@@ -340,7 +342,7 @@ resolvePath
| my2/my3/mod.rs:3:5:3:5 | g | my2/mod.rs:3:1:6:1 | fn g |
| my2/my3/mod.rs:4:5:4:5 | h | main.rs:50:1:69:1 | fn h |
| my2/my3/mod.rs:7:5:7:9 | super | my2/mod.rs:1:1:17:30 | SourceFile |
| my2/my3/mod.rs:7:5:7:16 | ...::super | main.rs:1:1:653:2 | SourceFile |
| my2/my3/mod.rs:7:5:7:16 | ...::super | main.rs:1:1:656:2 | SourceFile |
| my2/my3/mod.rs:7:5:7:19 | ...::h | main.rs:50:1:69:1 | fn h |
| my2/my3/mod.rs:8:5:8:9 | super | my2/mod.rs:1:1:17:30 | SourceFile |
| my2/my3/mod.rs:8:5:8:12 | ...::g | my2/mod.rs:3:1:6:1 | fn g |
@@ -354,6 +356,7 @@ resolvePath
| my.rs:22:5:22:17 | ...::result | {EXTERNAL LOCATION} | mod result |
| my.rs:22:5:24:12 | ...::Result::<...> | {EXTERNAL LOCATION} | enum Result |
| my.rs:23:5:23:5 | T | my.rs:21:5:21:5 | T |
| my.rs:24:5:24:10 | String | {EXTERNAL LOCATION} | struct String |
| my.rs:28:8:28:10 | i32 | {EXTERNAL LOCATION} | struct i32 |
| my.rs:29:8:29:10 | i32 | {EXTERNAL LOCATION} | struct i32 |
| my.rs:30:6:30:16 | Result::<...> | my.rs:18:34:25:1 | type Result<...> |

View File

@@ -7,3 +7,16 @@ multipleMethodCallTargets
| main.rs:459:9:459:23 | z.add_assign(...) | file://:0:0:0:0 | fn add_assign |
| main.rs:459:9:459:23 | z.add_assign(...) | file://:0:0:0:0 | fn add_assign |
| main.rs:459:9:459:23 | z.add_assign(...) | file://:0:0:0:0 | fn add_assign |
multiplePathResolutions
| main.rs:85:19:85:30 | ...::from | file://:0:0:0:0 | fn from |
| main.rs:85:19:85:30 | ...::from | file://:0:0:0:0 | fn from |
| main.rs:85:19:85:30 | ...::from | file://:0:0:0:0 | fn from |
| main.rs:85:19:85:30 | ...::from | file://:0:0:0:0 | fn from |
| main.rs:85:19:85:30 | ...::from | file://:0:0:0:0 | fn from |
| main.rs:85:19:85:30 | ...::from | file://:0:0:0:0 | fn from |
| main.rs:102:19:102:30 | ...::from | file://:0:0:0:0 | fn from |
| main.rs:102:19:102:30 | ...::from | file://:0:0:0:0 | fn from |
| main.rs:102:19:102:30 | ...::from | file://:0:0:0:0 | fn from |
| main.rs:102:19:102:30 | ...::from | file://:0:0:0:0 | fn from |
| main.rs:102:19:102:30 | ...::from | file://:0:0:0:0 | fn from |
| main.rs:102:19:102:30 | ...::from | file://:0:0:0:0 | fn from |

View File

@@ -0,0 +1,7 @@
multiplePathResolutions
| my_struct.rs:25:19:25:30 | ...::from | file://:0:0:0:0 | fn from |
| my_struct.rs:25:19:25:30 | ...::from | file://:0:0:0:0 | fn from |
| my_struct.rs:25:19:25:30 | ...::from | file://:0:0:0:0 | fn from |
| my_struct.rs:25:19:25:30 | ...::from | file://:0:0:0:0 | fn from |
| my_struct.rs:25:19:25:30 | ...::from | file://:0:0:0:0 | fn from |
| my_struct.rs:25:19:25:30 | ...::from | file://:0:0:0:0 | fn from |

View File

@@ -6,7 +6,7 @@
| Files extracted - without errors % | 57 |
| Inconsistencies - AST | 0 |
| Inconsistencies - CFG | 0 |
| Inconsistencies - Path resolution | 0 |
| Inconsistencies - Path resolution | 1 |
| Inconsistencies - SSA | 0 |
| Inconsistencies - data flow | 0 |
| Lines of code extracted | 60 |

View File

@@ -1,3 +1,274 @@
multiplePathResolutions
| sqlx.rs:46:24:46:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:46:24:46:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:46:24:46:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:46:24:46:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:46:24:46:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:46:24:46:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:46:24:46:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:46:24:46:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:46:24:46:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:46:24:46:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:46:24:46:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:46:24:46:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:46:24:46:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:46:24:46:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:46:24:46:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:47:56:47:67 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:47:56:47:67 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:47:56:47:67 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:47:56:47:67 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:47:56:47:67 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:47:56:47:67 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:47:56:47:67 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:47:56:47:67 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:47:56:47:67 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:47:56:47:67 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:47:56:47:67 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:47:56:47:67 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:47:56:47:67 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:47:56:47:67 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:47:56:47:67 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:48:97:48:108 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:48:97:48:108 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:48:97:48:108 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:48:97:48:108 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:48:97:48:108 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:48:97:48:108 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:48:97:48:108 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:48:97:48:108 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:48:97:48:108 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:48:97:48:108 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:48:97:48:108 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:48:97:48:108 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:48:97:48:108 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:48:97:48:108 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:48:97:48:108 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:50:24:50:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:50:24:50:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:50:24:50:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:50:24:50:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:50:24:50:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:50:24:50:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:50:24:50:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:50:24:50:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:50:24:50:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:50:24:50:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:50:24:50:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:50:24:50:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:50:24:50:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:50:24:50:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:50:24:50:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:51:24:51:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:51:24:51:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:51:24:51:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:51:24:51:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:51:24:51:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:51:24:51:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:51:24:51:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:51:24:51:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:51:24:51:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:51:24:51:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:51:24:51:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:51:24:51:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:51:24:51:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:51:24:51:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:51:24:51:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:55:26:55:37 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:55:26:55:37 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:55:26:55:37 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:55:26:55:37 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:55:26:55:37 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:55:26:55:37 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:55:26:55:37 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:55:26:55:37 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:55:26:55:37 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:55:26:55:37 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:55:26:55:37 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:55:26:55:37 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:55:26:55:37 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:55:26:55:37 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:55:26:55:37 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:61:28:61:39 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:61:28:61:39 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:61:28:61:39 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:61:28:61:39 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:61:28:61:39 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:61:28:61:39 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:61:28:61:39 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:61:28:61:39 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:61:28:61:39 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:61:28:61:39 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:61:28:61:39 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:61:28:61:39 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:61:28:61:39 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:61:28:61:39 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:61:28:61:39 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:99:24:99:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:99:24:99:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:99:24:99:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:99:24:99:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:99:24:99:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:99:24:99:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:99:24:99:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:99:24:99:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:99:24:99:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:99:24:99:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:99:24:99:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:99:24:99:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:99:24:99:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:99:24:99:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:99:24:99:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:100:97:100:108 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:100:97:100:108 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:100:97:100:108 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:100:97:100:108 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:100:97:100:108 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:100:97:100:108 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:100:97:100:108 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:100:97:100:108 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:100:97:100:108 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:100:97:100:108 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:100:97:100:108 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:100:97:100:108 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:100:97:100:108 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:100:97:100:108 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:100:97:100:108 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:101:24:101:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:101:24:101:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:101:24:101:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:101:24:101:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:101:24:101:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:101:24:101:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:101:24:101:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:101:24:101:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:101:24:101:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:101:24:101:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:101:24:101:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:101:24:101:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:101:24:101:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:101:24:101:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:101:24:101:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:102:26:102:37 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:102:26:102:37 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:102:26:102:37 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:102:26:102:37 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:102:26:102:37 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:102:26:102:37 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:102:26:102:37 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:102:26:102:37 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:102:26:102:37 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:102:26:102:37 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:102:26:102:37 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:102:26:102:37 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:102:26:102:37 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:102:26:102:37 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:102:26:102:37 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:103:28:103:39 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:103:28:103:39 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:103:28:103:39 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:103:28:103:39 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:103:28:103:39 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:103:28:103:39 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:103:28:103:39 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:103:28:103:39 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:103:28:103:39 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:103:28:103:39 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:103:28:103:39 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:103:28:103:39 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:103:28:103:39 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:103:28:103:39 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:103:28:103:39 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:172:24:172:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:172:24:172:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:172:24:172:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:172:24:172:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:172:24:172:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:172:24:172:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:172:24:172:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:172:24:172:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:172:24:172:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:172:24:172:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:172:24:172:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:172:24:172:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:172:24:172:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:172:24:172:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:172:24:172:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:173:97:173:108 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:173:97:173:108 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:173:97:173:108 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:173:97:173:108 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:173:97:173:108 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:173:97:173:108 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:173:97:173:108 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:173:97:173:108 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:173:97:173:108 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:173:97:173:108 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:173:97:173:108 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:173:97:173:108 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:173:97:173:108 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:173:97:173:108 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:173:97:173:108 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:174:24:174:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:174:24:174:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:174:24:174:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:174:24:174:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:174:24:174:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:174:24:174:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:174:24:174:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:174:24:174:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:174:24:174:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:174:24:174:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:174:24:174:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:174:24:174:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:174:24:174:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:174:24:174:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:174:24:174:35 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:175:26:175:37 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:175:26:175:37 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:175:26:175:37 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:175:26:175:37 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:175:26:175:37 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:175:26:175:37 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:175:26:175:37 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:175:26:175:37 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:175:26:175:37 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:175:26:175:37 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:175:26:175:37 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:175:26:175:37 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:175:26:175:37 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:175:26:175:37 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:175:26:175:37 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:176:28:176:39 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:176:28:176:39 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:176:28:176:39 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:176:28:176:39 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:176:28:176:39 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:176:28:176:39 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:176:28:176:39 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:176:28:176:39 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:176:28:176:39 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:176:28:176:39 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:176:28:176:39 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:176:28:176:39 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:176:28:176:39 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:176:28:176:39 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:176:28:176:39 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:202:57:202:68 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:202:57:202:68 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:202:57:202:68 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:202:57:202:68 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:202:57:202:68 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:202:57:202:68 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:202:57:202:68 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:202:57:202:68 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:202:57:202:68 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:202:57:202:68 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:202:57:202:68 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:202:57:202:68 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:202:57:202:68 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:202:57:202:68 | ...::from | file://:0:0:0:0 | fn from |
| sqlx.rs:202:57:202:68 | ...::from | file://:0:0:0:0 | fn from |
multipleCanonicalPaths
| file://:0:0:0:0 | fn encode | file://:0:0:0:0 | Crate(core@0.0.0) | <core::option::Option as der::encode::Encode>::encode |
| file://:0:0:0:0 | fn encode | file://:0:0:0:0 | Crate(core@0.0.0) | <core::option::Option as sqlx_core::encode::Encode>::encode |

View File

@@ -1,3 +0,0 @@
illFormedTypeMention
| sqlx.rs:158:13:158:81 | ...::BoxDynError |
| sqlx.rs:160:17:160:86 | ...::BoxDynError |

View File

@@ -1,8 +1,7 @@
use log::{debug, error, info, trace, warn, log, Level};
use std::io::Write as _;
use std::fmt::Write as _;
use log::{debug, error, info, log, trace, warn, Level};
use log_err::{LogErrOption, LogErrResult};
use std::fmt::Write as _;
use std::io::Write as _;
// --- tests ---
@@ -134,14 +133,20 @@ fn test_log(harmless: String, password: String, encrypted_password: String) {
trace!("message = {:#?}", t1); // $ MISSING: Alert[rust/cleartext-logging]=t1
// logging from a struct
let s1 = MyStruct1 { harmless: "foo".to_string(), password: "123456".to_string() }; // $ MISSING: Source=s1
let s1 = MyStruct1 {
harmless: "foo".to_string(),
password: "123456".to_string(), // $ MISSING: Source=s1
};
warn!("message = {}", s1.harmless);
warn!("message = {}", s1.password); // $ Alert[rust/cleartext-logging]
warn!("message = {}", s1); // $ MISSING: Alert[rust/cleartext-logging]=s1
warn!("message = {:?}", s1); // $ MISSING: Alert[rust/cleartext-logging]=s1
warn!("message = {:#?}", s1); // $ MISSING: Alert[rust/cleartext-logging]=s1
let s2 = MyStruct2 { harmless: "foo".to_string(), password: "123456".to_string() }; // $ MISSING: Source=s2
let s2 = MyStruct2 {
harmless: "foo".to_string(),
password: "123456".to_string(), // $ MISSING: Source=s2
};
warn!("message = {}", s2.harmless);
warn!("message = {}", s2.password); // $ Alert[rust/cleartext-logging]
warn!("message = {}", s2); // (this implementation does not output the password field)
@@ -175,8 +180,8 @@ fn test_log(harmless: String, password: String, encrypted_password: String) {
let _ = err_result.log_expect(&format!("Failed with password: {}", password2)); // $ Alert[rust/cleartext-logging]
// test `log_expect` with sensitive `Result.Err`
let err_result2: Result<String, String> = Err(password2.clone());
let _ = err_result2.log_expect(""); // $ MISSING: Alert[rust/cleartext-logging]
let err_result2: Result<String, String> = Err(password2.clone()); // $ Source=s3
let _ = err_result2.log_expect(""); // $ Alert[rust/cleartext-logging]=s3
// test `log_unwrap` with sensitive `Result.Err`
let err_result3: Result<String, String> = Err(password2); // $ Source=err_result3
@@ -190,24 +195,54 @@ fn test_std(password: String, i: i32, opt_i: Option<i32>) {
eprintln!("message = {}", password); // $ Alert[rust/cleartext-logging]
match i {
1 => { panic!("message = {}", password); } // $ Alert[rust/cleartext-logging]
2 => { todo!("message = {}", password); } // $ Alert[rust/cleartext-logging]
3 => { unimplemented!("message = {}", password); } // $ Alert[rust/cleartext-logging]
4 => { unreachable!("message = {}", password); } // $ Alert[rust/cleartext-logging]
5 => { assert!(false, "message = {}", password); } // $ Alert[rust/cleartext-logging]
6 => { assert_eq!(1, 2, "message = {}", password); } // $ Alert[rust/cleartext-logging]
7 => { assert_ne!(1, 1, "message = {}", password); } // $ Alert[rust/cleartext-logging]
8 => { debug_assert!(false, "message = {}", password); } // $ Alert[rust/cleartext-logging]
9 => { debug_assert_eq!(1, 2, "message = {}", password); } // $ Alert[rust/cleartext-logging]
10 => { debug_assert_ne!(1, 1, "message = {}", password); } // $ Alert[rust/cleartext-logging]
11 => { _ = opt_i.expect(format!("message = {}", password).as_str()); } // $ Alert[rust/cleartext-logging]
1 => {
panic!("message = {}", password); // $ Alert[rust/cleartext-logging]
}
2 => {
todo!("message = {}", password); // $ Alert[rust/cleartext-logging]
}
3 => {
unimplemented!("message = {}", password); // $ Alert[rust/cleartext-logging]
}
4 => {
unreachable!("message = {}", password); // $ Alert[rust/cleartext-logging]
}
5 => {
assert!(false, "message = {}", password); // $ Alert[rust/cleartext-logging]
}
6 => {
assert_eq!(1, 2, "message = {}", password); // $ Alert[rust/cleartext-logging]
}
7 => {
assert_ne!(1, 1, "message = {}", password); // $ Alert[rust/cleartext-logging]
}
8 => {
debug_assert!(false, "message = {}", password); // $ Alert[rust/cleartext-logging]
}
9 => {
debug_assert_eq!(1, 2, "message = {}", password); // $ Alert[rust/cleartext-logging]
}
10 => {
debug_assert_ne!(1, 1, "message = {}", password); // $ Alert[rust/cleartext-logging]
}
11 => {
_ = opt_i.expect(format!("message = {}", password).as_str()); // $ Alert[rust/cleartext-logging]
}
_ => {}
}
std::io::stdout().lock().write_fmt(format_args!("message = {}\n", password)); // $ MISSING: Alert[rust/cleartext-logging]
std::io::stderr().lock().write_fmt(format_args!("message = {}\n", password)); // $ MISSING: Alert[rust/cleartext-logging]
std::io::stdout().lock().write(format!("message = {}\n", password).as_bytes()); // $ Alert[rust/cleartext-logging]
std::io::stdout().lock().write_all(format!("message = {}\n", password).as_bytes()); // $ Alert[rust/cleartext-logging]
std::io::stdout()
.lock()
.write_fmt(format_args!("message = {}\n", password)); // $ MISSING: Alert[rust/cleartext-logging]
std::io::stderr()
.lock()
.write_fmt(format_args!("message = {}\n", password)); // $ MISSING: Alert[rust/cleartext-logging]
std::io::stdout()
.lock()
.write(format!("message = {}\n", password).as_bytes()); // $ Alert[rust/cleartext-logging]
std::io::stdout()
.lock()
.write_all(format!("message = {}\n", password).as_bytes()); // $ Alert[rust/cleartext-logging]
let mut out = std::io::stdout().lock();
out.write(format!("message = {}\n", password).as_bytes()); // $ Alert[rust/cleartext-logging]
@@ -219,6 +254,10 @@ fn test_std(password: String, i: i32, opt_i: Option<i32>) {
fn main() {
simple_logger::SimpleLogger::new().init().unwrap();
test_log("harmless".to_string(), "123456".to_string(), "[encrypted]".to_string());
test_log(
"harmless".to_string(),
"123456".to_string(),
"[encrypted]".to_string(),
);
test_std("123456".to_string(), 0, None);
}

View File

@@ -13,3 +13,7 @@ multiplePathResolutions
| main.rs:223:13:223:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) |
| main.rs:224:13:224:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) |
| main.rs:224:13:224:16 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) |
| main.rs:229:13:229:37 | ...::with_capacity | file://:0:0:0:0 | fn with_capacity |
| main.rs:229:13:229:37 | ...::with_capacity | file://:0:0:0:0 | fn with_capacity |
| main.rs:233:18:233:42 | ...::with_capacity | file://:0:0:0:0 | fn with_capacity |
| main.rs:233:18:233:42 | ...::with_capacity | file://:0:0:0:0 | fn with_capacity |

View File

@@ -9,3 +9,17 @@ multiplePathResolutions
| deallocation.rs:112:3:112:12 | ...::free | file://:0:0:0:0 | fn free |
| deallocation.rs:112:29:112:32 | libc | file://:0:0:0:0 | Crate(libc@0.2.171) |
| deallocation.rs:112:29:112:32 | libc | file://:0:0:0:0 | Crate(libc@0.2.172) |
| deallocation.rs:260:11:260:22 | ...::from | file://:0:0:0:0 | fn from |
| deallocation.rs:260:11:260:22 | ...::from | file://:0:0:0:0 | fn from |
| deallocation.rs:260:11:260:22 | ...::from | file://:0:0:0:0 | fn from |
| deallocation.rs:260:11:260:22 | ...::from | file://:0:0:0:0 | fn from |
| deallocation.rs:260:11:260:22 | ...::from | file://:0:0:0:0 | fn from |
| deallocation.rs:260:11:260:22 | ...::from | file://:0:0:0:0 | fn from |
| deallocation.rs:261:11:261:22 | ...::from | file://:0:0:0:0 | fn from |
| deallocation.rs:261:11:261:22 | ...::from | file://:0:0:0:0 | fn from |
| deallocation.rs:261:11:261:22 | ...::from | file://:0:0:0:0 | fn from |
| deallocation.rs:261:11:261:22 | ...::from | file://:0:0:0:0 | fn from |
| deallocation.rs:261:11:261:22 | ...::from | file://:0:0:0:0 | fn from |
| deallocation.rs:261:11:261:22 | ...::from | file://:0:0:0:0 | fn from |
| lifetime.rs:415:32:415:49 | ...::clone | file://:0:0:0:0 | fn clone |
| lifetime.rs:415:32:415:49 | ...::clone | file://:0:0:0:0 | fn clone |

View File

@@ -0,0 +1,31 @@
multiplePathResolutions
| main.rs:13:13:13:24 | ...::from | file://:0:0:0:0 | fn from |
| main.rs:13:13:13:24 | ...::from | file://:0:0:0:0 | fn from |
| main.rs:13:13:13:24 | ...::from | file://:0:0:0:0 | fn from |
| main.rs:13:13:13:24 | ...::from | file://:0:0:0:0 | fn from |
| main.rs:13:13:13:24 | ...::from | file://:0:0:0:0 | fn from |
| main.rs:13:13:13:24 | ...::from | file://:0:0:0:0 | fn from |
| main.rs:14:13:14:24 | ...::from | file://:0:0:0:0 | fn from |
| main.rs:14:13:14:24 | ...::from | file://:0:0:0:0 | fn from |
| main.rs:14:13:14:24 | ...::from | file://:0:0:0:0 | fn from |
| main.rs:14:13:14:24 | ...::from | file://:0:0:0:0 | fn from |
| main.rs:14:13:14:24 | ...::from | file://:0:0:0:0 | fn from |
| main.rs:14:13:14:24 | ...::from | file://:0:0:0:0 | fn from |
| unreachable.rs:165:20:165:31 | ...::from | file://:0:0:0:0 | fn from |
| unreachable.rs:165:20:165:31 | ...::from | file://:0:0:0:0 | fn from |
| unreachable.rs:165:20:165:31 | ...::from | file://:0:0:0:0 | fn from |
| unreachable.rs:165:20:165:31 | ...::from | file://:0:0:0:0 | fn from |
| unreachable.rs:165:20:165:31 | ...::from | file://:0:0:0:0 | fn from |
| unreachable.rs:165:20:165:31 | ...::from | file://:0:0:0:0 | fn from |
| unreachable.rs:171:9:171:17 | ...::from | file://:0:0:0:0 | fn from |
| unreachable.rs:171:9:171:17 | ...::from | file://:0:0:0:0 | fn from |
| unreachable.rs:171:9:171:17 | ...::from | file://:0:0:0:0 | fn from |
| unreachable.rs:171:9:171:17 | ...::from | file://:0:0:0:0 | fn from |
| unreachable.rs:171:9:171:17 | ...::from | file://:0:0:0:0 | fn from |
| unreachable.rs:171:9:171:17 | ...::from | file://:0:0:0:0 | fn from |
| unreachable.rs:177:9:177:26 | ...::from | file://:0:0:0:0 | fn from |
| unreachable.rs:177:9:177:26 | ...::from | file://:0:0:0:0 | fn from |
| unreachable.rs:177:9:177:26 | ...::from | file://:0:0:0:0 | fn from |
| unreachable.rs:177:9:177:26 | ...::from | file://:0:0:0:0 | fn from |
| unreachable.rs:177:9:177:26 | ...::from | file://:0:0:0:0 | fn from |
| unreachable.rs:177:9:177:26 | ...::from | file://:0:0:0:0 | fn from |