Pemeriksa konvensi penamaan C/C++ (ncc)
ncc adalah alat pengembangan untuk membantu pemrogram menulis kode C/C++ yang mematuhi beberapa konvensi penamaan. Ini mengotomatiskan proses pemeriksaan kode C/C++ untuk menghindarkan manusia dari tugas yang membosankan (namun penting) ini. Hal ini membuatnya ideal untuk proyek yang ingin menerapkan standar pengkodean.
Paket berikut adalah prasyarat untuk alat ncc. Perhatikan bahwa, python 'clang' menyediakan binding libclang python. Versi clang harus cocok dengan versi libclang.so di sistem Anda
pip install clang
pip install pyyaml
Di Microsoft Windows, instal rantai alat kompiler LLVM versi 32 bit.
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 ]
Untuk penjelasan rinci tentang semua opsi:
ncc . py - - help
Untuk mencetak semua aturan:
ncc . py - - dump
Gaya untuk konstruksi c/c++ ditentukan oleh ekspresi reguler. Misalnya aturan di bawah mengatakan bahwa sebuah struct dapat memiliki karakter apa pun, nama kelas harus dimulai dengan 'C', dan variabel anggota kelas harus dimulai dengan m_, dan nama fungsi harus dimulai dengan huruf besar.
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
Hak Cipta © 2018 Nithin Nellikunnu
Didistribusikan di bawah Lisensi MIT (MIT).
Daniel J.Hofmann