mirror of https://github.com/astral-sh/ruff
Fix uppercase and lowercase check (#461)
This commit is contained in:
parent
2c24e2fd28
commit
b75ea94f58
|
|
@ -1,2 +1,3 @@
|
||||||
import mod.SUBMOD as submod
|
import mod.CONST as const
|
||||||
from mod import BAD as bad
|
from mod import CONSTANT as constant
|
||||||
|
from mod import ANOTHER_CONSTANT as another_constant
|
||||||
|
|
|
||||||
|
|
@ -1,2 +1,3 @@
|
||||||
import mod.submod as SubMod
|
import modl.lowercase as Lower
|
||||||
from mod import bad as Bad
|
from mod import lowercase as Lowercase
|
||||||
|
from mod import another_lowercase as AnotherLowercase
|
||||||
|
|
|
||||||
|
|
@ -1,2 +1,3 @@
|
||||||
import mod.SubMod as submod
|
import mod.Camel as camel
|
||||||
from mod import CamelCase as camelcase
|
from mod import CamelCase as camelcase
|
||||||
|
from mod import AnotherCamelCase as another_camelcase
|
||||||
|
|
|
||||||
|
|
@ -1,2 +1,3 @@
|
||||||
import mod.SubMod as SUBMOD
|
import mod.Camel as CAMEL
|
||||||
from mod import CamelCase as CAMELCASE
|
from mod import CamelCase as CAMELCASE
|
||||||
|
from mod import AnotherCamelCase as ANOTHER_CAMELCASE
|
||||||
|
|
|
||||||
|
|
@ -1,2 +1,2 @@
|
||||||
import mod.SubMod as SM
|
import mod.CaMel as CM
|
||||||
from mod import CamelCase as CC
|
from mod import CamelCase as CC
|
||||||
|
|
|
||||||
|
|
@ -114,12 +114,36 @@ pub fn dunder_function_name(func_def: &Stmt, scope: &Scope, name: &str) -> Optio
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn is_lower(s: &str) -> bool {
|
||||||
|
let mut cased = false;
|
||||||
|
for c in s.chars() {
|
||||||
|
if c.is_uppercase() {
|
||||||
|
return false;
|
||||||
|
} else if !cased && c.is_lowercase() {
|
||||||
|
cased = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cased
|
||||||
|
}
|
||||||
|
|
||||||
|
fn is_upper(s: &str) -> bool {
|
||||||
|
let mut cased = false;
|
||||||
|
for c in s.chars() {
|
||||||
|
if c.is_lowercase() {
|
||||||
|
return false;
|
||||||
|
} else if (!cased) && c.is_uppercase() {
|
||||||
|
cased = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
cased
|
||||||
|
}
|
||||||
|
|
||||||
pub fn constant_imported_as_non_constant(
|
pub fn constant_imported_as_non_constant(
|
||||||
import_from: &Stmt,
|
import_from: &Stmt,
|
||||||
name: &str,
|
name: &str,
|
||||||
asname: &str,
|
asname: &str,
|
||||||
) -> Option<Check> {
|
) -> Option<Check> {
|
||||||
if name.chars().all(|c| c.is_uppercase()) && !asname.chars().all(|c| c.is_uppercase()) {
|
if is_upper(name) && !is_upper(asname) {
|
||||||
return Some(Check::new(
|
return Some(Check::new(
|
||||||
CheckKind::ConstantImportedAsNonConstant(name.to_string(), asname.to_string()),
|
CheckKind::ConstantImportedAsNonConstant(name.to_string(), asname.to_string()),
|
||||||
Range::from_located(import_from),
|
Range::from_located(import_from),
|
||||||
|
|
@ -133,7 +157,7 @@ pub fn lowercase_imported_as_non_lowercase(
|
||||||
name: &str,
|
name: &str,
|
||||||
asname: &str,
|
asname: &str,
|
||||||
) -> Option<Check> {
|
) -> Option<Check> {
|
||||||
if name.chars().all(|c| c.is_lowercase()) && asname.to_lowercase() != asname {
|
if is_lower(name) && asname.to_lowercase() != asname {
|
||||||
return Some(Check::new(
|
return Some(Check::new(
|
||||||
CheckKind::LowercaseImportedAsNonLowercase(name.to_string(), asname.to_string()),
|
CheckKind::LowercaseImportedAsNonLowercase(name.to_string(), asname.to_string()),
|
||||||
Range::from_located(import_from),
|
Range::from_located(import_from),
|
||||||
|
|
@ -143,9 +167,8 @@ pub fn lowercase_imported_as_non_lowercase(
|
||||||
}
|
}
|
||||||
|
|
||||||
fn is_camelcase(name: &str) -> bool {
|
fn is_camelcase(name: &str) -> bool {
|
||||||
!name.chars().all(|c| c.is_uppercase()) && !name.chars().all(|c| c.is_lowercase())
|
!is_lower(name) && !is_upper(name) && !name.contains('_')
|
||||||
}
|
}
|
||||||
|
|
||||||
fn is_acronym(name: &str, asname: &str) -> bool {
|
fn is_acronym(name: &str, asname: &str) -> bool {
|
||||||
name.chars().filter(|c| c.is_uppercase()).join("") == asname
|
name.chars().filter(|c| c.is_uppercase()).join("") == asname
|
||||||
}
|
}
|
||||||
|
|
@ -155,7 +178,7 @@ pub fn camelcase_imported_as_lowercase(
|
||||||
name: &str,
|
name: &str,
|
||||||
asname: &str,
|
asname: &str,
|
||||||
) -> Option<Check> {
|
) -> Option<Check> {
|
||||||
if is_camelcase(name) && asname.chars().all(|c| c.is_lowercase()) {
|
if is_camelcase(name) && is_lower(asname) {
|
||||||
return Some(Check::new(
|
return Some(Check::new(
|
||||||
CheckKind::CamelcaseImportedAsLowercase(name.to_string(), asname.to_string()),
|
CheckKind::CamelcaseImportedAsLowercase(name.to_string(), asname.to_string()),
|
||||||
Range::from_located(import_from),
|
Range::from_located(import_from),
|
||||||
|
|
@ -169,7 +192,7 @@ pub fn camelcase_imported_as_constant(
|
||||||
name: &str,
|
name: &str,
|
||||||
asname: &str,
|
asname: &str,
|
||||||
) -> Option<Check> {
|
) -> Option<Check> {
|
||||||
if is_camelcase(name) && asname.chars().all(|c| c.is_uppercase()) && !is_acronym(name, asname) {
|
if is_camelcase(name) && is_upper(asname) && !is_acronym(name, asname) {
|
||||||
return Some(Check::new(
|
return Some(Check::new(
|
||||||
CheckKind::CamelcaseImportedAsConstant(name.to_string(), asname.to_string()),
|
CheckKind::CamelcaseImportedAsConstant(name.to_string(), asname.to_string()),
|
||||||
Range::from_located(import_from),
|
Range::from_located(import_from),
|
||||||
|
|
@ -183,7 +206,7 @@ pub fn camelcase_imported_as_acronym(
|
||||||
name: &str,
|
name: &str,
|
||||||
asname: &str,
|
asname: &str,
|
||||||
) -> Option<Check> {
|
) -> Option<Check> {
|
||||||
if is_camelcase(name) && asname.chars().all(|c| c.is_uppercase()) && is_acronym(name, asname) {
|
if is_camelcase(name) && is_upper(asname) && is_acronym(name, asname) {
|
||||||
return Some(Check::new(
|
return Some(Check::new(
|
||||||
CheckKind::CamelcaseImportedAsAcronym(name.to_string(), asname.to_string()),
|
CheckKind::CamelcaseImportedAsAcronym(name.to_string(), asname.to_string()),
|
||||||
Range::from_located(import_from),
|
Range::from_located(import_from),
|
||||||
|
|
@ -191,3 +214,48 @@ pub fn camelcase_imported_as_acronym(
|
||||||
}
|
}
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod tests {
|
||||||
|
use super::{is_acronym, is_camelcase, is_lower, is_upper};
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_is_lower() -> () {
|
||||||
|
assert!(is_lower("abc"));
|
||||||
|
assert!(is_lower("a_b_c"));
|
||||||
|
assert!(is_lower("a2c"));
|
||||||
|
assert!(!is_lower("aBc"));
|
||||||
|
assert!(!is_lower("ABC"));
|
||||||
|
assert!(!is_lower(""));
|
||||||
|
assert!(!is_lower("_"));
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_is_upper() -> () {
|
||||||
|
assert!(is_upper("ABC"));
|
||||||
|
assert!(is_upper("A_B_C"));
|
||||||
|
assert!(is_upper("A2C"));
|
||||||
|
assert!(!is_upper("aBc"));
|
||||||
|
assert!(!is_upper("abc"));
|
||||||
|
assert!(!is_upper(""));
|
||||||
|
assert!(!is_upper("_"));
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_is_camelcase() -> () {
|
||||||
|
assert!(is_camelcase("Camel"));
|
||||||
|
assert!(is_camelcase("CamelCase"));
|
||||||
|
assert!(!is_camelcase("camel"));
|
||||||
|
assert!(!is_camelcase("camel_case"));
|
||||||
|
assert!(!is_camelcase("CAMEL"));
|
||||||
|
assert!(!is_camelcase("CAMEL_CASE"));
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_is_acronym() -> () {
|
||||||
|
assert!(is_acronym("AB", "AB"));
|
||||||
|
assert!(is_acronym("AbcDef", "AD"));
|
||||||
|
assert!(!is_acronym("AbcDef", "Ad"));
|
||||||
|
assert!(!is_acronym("AbcDef", "AB"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,24 +4,35 @@ expression: checks
|
||||||
---
|
---
|
||||||
- kind:
|
- kind:
|
||||||
ConstantImportedAsNonConstant:
|
ConstantImportedAsNonConstant:
|
||||||
- SUBMOD
|
- CONST
|
||||||
- submod
|
- const
|
||||||
location:
|
location:
|
||||||
row: 1
|
row: 1
|
||||||
column: 1
|
column: 1
|
||||||
end_location:
|
end_location:
|
||||||
row: 1
|
row: 1
|
||||||
column: 28
|
column: 26
|
||||||
fix: ~
|
fix: ~
|
||||||
- kind:
|
- kind:
|
||||||
ConstantImportedAsNonConstant:
|
ConstantImportedAsNonConstant:
|
||||||
- BAD
|
- CONSTANT
|
||||||
- bad
|
- constant
|
||||||
location:
|
location:
|
||||||
row: 2
|
row: 2
|
||||||
column: 1
|
column: 1
|
||||||
end_location:
|
end_location:
|
||||||
row: 2
|
row: 2
|
||||||
column: 27
|
column: 37
|
||||||
|
fix: ~
|
||||||
|
- kind:
|
||||||
|
ConstantImportedAsNonConstant:
|
||||||
|
- ANOTHER_CONSTANT
|
||||||
|
- another_constant
|
||||||
|
location:
|
||||||
|
row: 3
|
||||||
|
column: 1
|
||||||
|
end_location:
|
||||||
|
row: 3
|
||||||
|
column: 53
|
||||||
fix: ~
|
fix: ~
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,24 +4,35 @@ expression: checks
|
||||||
---
|
---
|
||||||
- kind:
|
- kind:
|
||||||
LowercaseImportedAsNonLowercase:
|
LowercaseImportedAsNonLowercase:
|
||||||
- submod
|
- lowercase
|
||||||
- SubMod
|
- Lower
|
||||||
location:
|
location:
|
||||||
row: 1
|
row: 1
|
||||||
column: 1
|
column: 1
|
||||||
end_location:
|
end_location:
|
||||||
row: 1
|
row: 1
|
||||||
column: 28
|
column: 31
|
||||||
fix: ~
|
fix: ~
|
||||||
- kind:
|
- kind:
|
||||||
LowercaseImportedAsNonLowercase:
|
LowercaseImportedAsNonLowercase:
|
||||||
- bad
|
- lowercase
|
||||||
- Bad
|
- Lowercase
|
||||||
location:
|
location:
|
||||||
row: 2
|
row: 2
|
||||||
column: 1
|
column: 1
|
||||||
end_location:
|
end_location:
|
||||||
row: 2
|
row: 2
|
||||||
column: 27
|
column: 39
|
||||||
|
fix: ~
|
||||||
|
- kind:
|
||||||
|
LowercaseImportedAsNonLowercase:
|
||||||
|
- another_lowercase
|
||||||
|
- AnotherLowercase
|
||||||
|
location:
|
||||||
|
row: 3
|
||||||
|
column: 1
|
||||||
|
end_location:
|
||||||
|
row: 3
|
||||||
|
column: 54
|
||||||
fix: ~
|
fix: ~
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,14 +4,14 @@ expression: checks
|
||||||
---
|
---
|
||||||
- kind:
|
- kind:
|
||||||
CamelcaseImportedAsLowercase:
|
CamelcaseImportedAsLowercase:
|
||||||
- SubMod
|
- Camel
|
||||||
- submod
|
- camel
|
||||||
location:
|
location:
|
||||||
row: 1
|
row: 1
|
||||||
column: 1
|
column: 1
|
||||||
end_location:
|
end_location:
|
||||||
row: 1
|
row: 1
|
||||||
column: 28
|
column: 26
|
||||||
fix: ~
|
fix: ~
|
||||||
- kind:
|
- kind:
|
||||||
CamelcaseImportedAsLowercase:
|
CamelcaseImportedAsLowercase:
|
||||||
|
|
@ -24,4 +24,15 @@ expression: checks
|
||||||
row: 2
|
row: 2
|
||||||
column: 39
|
column: 39
|
||||||
fix: ~
|
fix: ~
|
||||||
|
- kind:
|
||||||
|
CamelcaseImportedAsLowercase:
|
||||||
|
- AnotherCamelCase
|
||||||
|
- another_camelcase
|
||||||
|
location:
|
||||||
|
row: 3
|
||||||
|
column: 1
|
||||||
|
end_location:
|
||||||
|
row: 3
|
||||||
|
column: 54
|
||||||
|
fix: ~
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,14 +4,14 @@ expression: checks
|
||||||
---
|
---
|
||||||
- kind:
|
- kind:
|
||||||
CamelcaseImportedAsConstant:
|
CamelcaseImportedAsConstant:
|
||||||
- SubMod
|
- Camel
|
||||||
- SUBMOD
|
- CAMEL
|
||||||
location:
|
location:
|
||||||
row: 1
|
row: 1
|
||||||
column: 1
|
column: 1
|
||||||
end_location:
|
end_location:
|
||||||
row: 1
|
row: 1
|
||||||
column: 28
|
column: 26
|
||||||
fix: ~
|
fix: ~
|
||||||
- kind:
|
- kind:
|
||||||
CamelcaseImportedAsConstant:
|
CamelcaseImportedAsConstant:
|
||||||
|
|
@ -24,4 +24,15 @@ expression: checks
|
||||||
row: 2
|
row: 2
|
||||||
column: 39
|
column: 39
|
||||||
fix: ~
|
fix: ~
|
||||||
|
- kind:
|
||||||
|
CamelcaseImportedAsConstant:
|
||||||
|
- AnotherCamelCase
|
||||||
|
- ANOTHER_CAMELCASE
|
||||||
|
location:
|
||||||
|
row: 3
|
||||||
|
column: 1
|
||||||
|
end_location:
|
||||||
|
row: 3
|
||||||
|
column: 54
|
||||||
|
fix: ~
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,14 +4,14 @@ expression: checks
|
||||||
---
|
---
|
||||||
- kind:
|
- kind:
|
||||||
CamelcaseImportedAsAcronym:
|
CamelcaseImportedAsAcronym:
|
||||||
- SubMod
|
- CaMel
|
||||||
- SM
|
- CM
|
||||||
location:
|
location:
|
||||||
row: 1
|
row: 1
|
||||||
column: 1
|
column: 1
|
||||||
end_location:
|
end_location:
|
||||||
row: 1
|
row: 1
|
||||||
column: 24
|
column: 23
|
||||||
fix: ~
|
fix: ~
|
||||||
- kind:
|
- kind:
|
||||||
CamelcaseImportedAsAcronym:
|
CamelcaseImportedAsAcronym:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue