সংকলন-সময় / স্থির-বিশ্লেষণ-সময় সনাক্তকরণের কিছু তুচ্ছ উদাহরণ:
সাথে একটি RHEL7 হোস্টে cppcheck 1.77 and 1.49
> cat test.cc
#include <memory>
int main(){char* buf = new char[10];delete buf;}
http://cppcheck.sourceforge.net/
> cppcheck -x c++ test.cc
Checking test.cc ...
[test.cc:2]: (error) Mismatching allocation and deallocation: buf
সঙ্গে clang++ 3.7.1
RHEL7 উপর
> clang++ --analyze -x c++ test.cc
test.cc:2:37: warning: Memory allocated by 'new[]' should be deallocated by
'delete[]', not 'delete'
int main(){char* buf = new char[10];delete buf;}
^~~~~~~~~~
1 warning generated.
ক্ল্যাং স্ট্যাটিক বিশ্লেষক কখন std::unique_ptr
পাস না হয় তা সনাক্ত করতে পারে<char[]>
> cat test2.cc
#include <memory>
int main(){std::unique_ptr<char> buf(new char[10]);}
https://clang-analyzer.llvm.org/
> clang++ --analyze -x c++ -std=c++11 test2.cc
In file included from test2.cc:1:
In file included from /opt/rh/devtoolset-4/root/usr/lib/gcc/x86_64-redhat-linux/5.3.1/
../../../../include/c++/5.3.1/memory:81:
/opt/rh/devtoolset-4/root/usr/lib/gcc/x86_64-redhat-linux/5.3.1/
../../../../include/c++/5.3.1/bits/unique_ptr.h:76:2:
warning: Memory allocated by
'new[]' should be deallocated by 'delete[]', not 'delete'
delete __ptr;
^~~~~~~~~~~~
1 warning generated.
এটিকে ঝাঁকুনিতে যুক্ত করা টেস্টগুলি এবং পরীক্ষাগুলি এবং একটি বাগ খুঁজে পেয়েছি এমন কাজের লিঙ্ক সহ নীচে আপডেট করুন।
এই reviews.llvm.org/D4661 সঙ্গে ঝনঝন জোড়া হয়েছে - "mismatching সনাক্ত 'নতুন' এবং 'ডিলিট' ব্যবহার করে" ।
পরীক্ষাগুলি পরীক্ষা / বিশ্লেষণ / মিসমেডডেলোলোকেটার-চেকার-টেস্ট.মিমি থাকে
আমি এই খোলা বাগটি পেয়েছি - bugs.llvm.org/show_bug.cgi?id=24819