मुझे विश्वास नहीं है कि MATLAB Code Analyzer के लिए नए कोड पैटर्न जोड़ने के लिए कोई तरीका है। आप बस इतना कर सकते हैं कि मौजूदा चेतावनियां प्रदर्शित या दबा दी गई हैं।
मुझे यकीन नहीं है कि कोड विश्लेषण के लिए तीसरे पक्ष के उपकरण किस तरह के हो सकते हैं, और एक सामान्य उद्देश्य विश्लेषक बनाना स्वयं बहुत कठिन होगा। हालांकि, यदि कुछ बहुत ही विशिष्ट, अच्छी तरह से परिभाषित पैटर्न थे जो आप अपने कोड में कोशिश करना और हाइलाइट करना चाहते थे, तो आप regular expressions (क्यू डरावनी संगीत और चीखने) के साथ इसे पार्स करने का प्रयास कर सकते हैं।
यह अक्सर मुश्किल हो सकता है, लेकिन करने योग्य। उदाहरण के तौर पर, मैंने कोड का यह टुकड़ा लिखा है जो ऊपर वर्णित पैटर्न की तलाश में है। बातें अक्सर जब कुछ इस तरह कर रही enclosing कोष्ठकों के सेट के लिए लेखांकन है प्रबंधित किया जा नहीं है, जो मैं पहले कोष्ठकों के गैर दिलचस्प जोड़े और उनकी सामग्री को हटाने के द्वारा संभाल में से एक:
function check_code(filePath)
% Read lines from the file:
fid = fopen(filePath, 'r');
codeLines = textscan(fid, '%s', 'Delimiter', '\n');
fclose(fid);
codeLines = codeLines{1};
% Remove sets of parentheses that do not encapsulate a logical statement:
tempCode = codeLines;
modCode = regexprep(tempCode, '\([^\(\)<>=~\|\&]*\)', '');
while ~isequal(modCode, tempCode)
tempCode = modCode;
modCode = regexprep(tempCode, '\([^\(\)<>=~\|\&]*\)', '');
end
% Match patterns using regexp:
matchIndex = regexp(modCode, 'numel\([^\(\)]+[<>=~\|\&]+[^\(\)]+\)');
% Format return information:
nMatches = cellfun(@numel, matchIndex);
index = find(nMatches);
lineNumbers = repelem(index, nMatches(index));
fprintf('Line %d: Potential incorrect use of NUMEL in logical statement.\n', ...
lineNumbers);
end
% Test cases:
% if numel(list < x)
% if numel(list) < x
% if numel(list(:,1)) < x
% if numel(list(:,1) < x)
% if (numel(list(:,1)) < x)
% if numel(list < x) & numel(list < y)
% if (numel(list) < x) & (numel(list) < y)
सूचना मैं कुछ जोड़ा फ़ाइल के नीचे टिप्पणियों में परीक्षण मामलों। जब मैं अपने आप पर इस कोड को चलाने के लिए, मैं इस मिल:
>> check_code('check_code.m')
Line 28: Potential incorrect use of NUMEL in logical statement.
Line 31: Potential incorrect use of NUMEL in logical statement.
Line 33: Potential incorrect use of NUMEL in logical statement.
Line 33: Potential incorrect use of NUMEL in logical statement.
सूचना है कि एक संदेश पहले, चौथे और छठे परीक्षण मामलों है कि छठे टेस्ट केस के लिए दो बार अपने गलत कोड से मेल खाते हैं (के लिए सूचीबद्ध किया गया है, वहाँ के बाद से उस रेखा पर दो त्रुटियां हैं)।
क्या यह सभी संभावित स्थितियों के लिए काम करेगा? मैं नहीं मानूंगा। अतिरिक्त परिस्थितियों को संभालने के लिए आपको रेगेक्स पैटर्न की जटिलता में वृद्धि करना होगा। लेकिन कम से कम यह कोड को पार्स करते समय आपको जिन चीजों पर विचार करना है, उनके उदाहरण के रूप में कार्य कर सकते हैं।
आपको इस [लेख] (http://undocumentedmatlab.com/blog/parsing-mlint-code-analyzer-output) पर एक नज़र रखना चाहिए – obchardon