ncc
1.0.0
C/C++ 명명 규칙 검사기(ncc)
ncc는 프로그래머가 일부 명명 규칙을 준수하는 C/C++ 코드를 작성하는 데 도움이 되는 개발 도구입니다. 이 지루한(그러나 중요한) 작업에서 사람을 보호하기 위해 C/C++ 코드 검사 프로세스를 자동화합니다. 이는 코딩 표준을 시행하려는 프로젝트에 이상적입니다.
다음 패키지는 ncc 도구의 사전 요구 사항입니다. Python 'clang'은 libclang Python 바인딩을 제공합니다. clang 버전은 시스템의 libclang.so 버전과 일치해야 합니다.
pip install clang
pip install pyyaml
Microsoft Windows 설치에서는 32비트 버전의 LLVM 컴파일러 도구 체인을 설치합니다.
ncc . py [ - - help ] [ - - recurse ] [ - - style STYLE_FILE ] [ - - cdbdir CDBDIR ] [ - - dump ]
[ - - output OUTPUT ] [ - - filetype FILETYPE ] [ - - exclude EXCLUDE [ EXCLUDE ...]]
[ - - path PATH [ PATH ...]] [ - - include INCLUDE [ INCLUDE ...]]
[ - - definition DEFINITION [ DEFINITION ...]] [ - - clang - lib CLANG_LIB ]
모든 옵션에 대한 자세한 설명:
ncc . py - - help
모든 규칙을 인쇄하려면:
ncc . py - - dump
c/C++ 구문의 스타일은 정규식으로 정의됩니다. 예를 들어 아래 규칙에 따르면 구조체는 어떤 문자라도 가질 수 있고, 클래스 이름은 'C'로 시작해야 하며, 클래스 멤버 변수는 m_로 시작해야 하며, 함수 이름은 대문자 알파벳으로 시작해야 합니다.
ClassName : ' C.* '
CppMethod : ' [A-Z].* '
VariableName :
ScopePrefix :
Global : ' g_ '
Static : ' s_ '
ClassMember : ' m_ '
DataTypePrefix :
String : ' str '
Pointer : ' p '
Integer : ' n '
Bool : ' b '
Pattern : ' ^.*$ '
./ncc.py --style examples/ncc.style --path examples/test.cpp
examples/test.cpp:16:7: " B " does not match " ^C.*$ " associated with ClassName
examples/test.cpp:28:9: " b " does not match " ^m_.*$ " associated with ClassMemberVariable
examples/test.cpp:31:5: " main(int, const char **) " does not match " ^[A-Z].*$ " associated with FunctionName
Total number of errors = 3
./ncc.py --style examples/ncc.style --recurse --exclude * .cpp * .h --path examples
examples/test.hpp:4:7: " Test " does not match " ^C.*$ " associated with ClassName
examples/test.hpp:12:9: " t " does not match " ^m_.*$ " associated with ClassMemberVariable
examples/test.hpp:19:9: " _aaa " does not match " ^[a-z].*$ " associated with StructMemberVariable
examples/test.c:8:9: " _b " does not match " ^[a-z].*$ " associated with StructMemberVariable
examples/test.c:9:9: " _c " does not match " ^[a-z].*$ " associated with StructMemberVariable
examples/tmp/test.hpp:4:7: " Test " does not match " ^C.*$ " associated with ClassName
examples/tmp/test.hpp:12:9: " t " does not match " ^m_.*$ " associated with ClassMemberVariable
examples/tmp/test.hpp:19:9: " _aaa " does not match " ^[a-z].*$ " associated with StructMemberVariable
Total number of errors = 8
저작권 © 2018 Nithin Nellikunnu
MIT 라이선스(MIT)에 따라 배포됩니다.
다니엘 J. 호프만