arch_test
1.0.0

MayNotAccess , MayOnlyAccess , MyNotBeAccessedBy , MayOnlyBeAccessedBy 와 같은 층 관계 정의화물의 하위 명령 또는 개발자 종속성의 패키지로 설치할 수 있습니다.
# Sub command
cargo install cargo-archtest --force
# Package
[dev-dependencies]
arch_test_core = "*"
화물 루트 경로에서 architecture.json 이라는 파일을 정의하십시오. Specification 구조에 따라 채우십시오. 예:
{
"layer_names" : [ " analyzer " , " parser " , " domain_values " , " entities " , " materials " , " services " , " tests " , " utils " ],
"access_rules" : [
" NoLayerCyclicDependencies " ,
" NoModuleCyclicDependencies " ,
" NoParentAccess " ,
{
"MayNotAccess" : {
"accessor" : " parser " ,
"accessed" : [ " analyzer " ],
"when_same_parent" : true
}
},
{
"MayOnlyBeAccessedBy" : {
"accessors" : [ " services " , " tests " ],
"accessed" : " materials " ,
"when_same_parent" : false
}
},
{
"MayNotBeAccessedBy" : {
"accessors" : [ " materials " , " domain_values " , " entities " , " utils " ],
"accessed" : " services " ,
"when_same_parent" : true
}
}
]
} Architecture 구조를 사용하여 아키텍처를 정의 할 수 있습니다. 그 후에는 실패를 확인합니다.
let architecture = Architecture :: new ( hash_set ! [ "analyzer" . to_owned ( ) , "parser" . to_owned ( ) , ... ] )
. with_access_rule ( NoParentAccess )
. with_access_rule ( NoModuleCyclicDependencies )
. with_access_rule ( NoLayerCyclicDependencies )
...
. with_access_rule ( MayNotAccess :: new (
"materials" . to_owned ( ) ,
hash_set ! [ "tests" . to_owned ( ) ] ,
true ,
) ) ;
let module_tree = ModuleTree :: new ( "src/lib.rs" ) ;
assert ! ( architecture . validate_access_rules ( ) . is_ok ( ) ) ;
assert ! ( architecture . check_access_rules ( & module_tree ) . is_ok ( ) ) ;실패에 관심이 있다면 다음과 같이 인쇄 할 수 있습니다.
architecture . check_access_rules ( & module_tree ) . err ( ) . unwrap ( ) . print ( module_tree . tree ( ) ) ; 두 방법을 사용하여 지속적인 통합에서 사용할 수 있습니다. GitHub에서화물 하위 명령을 사용하기로 결정한 경우 다음 스 니펫을 사용하면 프로젝트를 테스트 할 수 있습니다.
arch_test :
name : ArchTest
runs-on : ubuntu-latest
steps :
- uses : actions/checkout@v2
- uses : actions-rs/[email protected]
with :
crate : cargo-archtest
version : latest
- run : cargo archtest