gpt4 book ai didi

matlab - 有没有办法一次修复所有 MATLAB mlint 消息?

转载 作者:太空宇宙 更新时间:2023-11-03 19:14:35 24 4
gpt4 key购买 nike

我继承了一些作者厌恶分号的代码。是否可以一次性修复所有 mlint 消息(至少是所有具有自动修复功能的消息),而不必单击每个消息并按 ALT+ENTER?

最佳答案

注意:此答案使用函数 MLINT ,在较新版本的 MATLAB 中不再推荐使用它。较新的功能 CHECKCODE是首选,下面的代码仍然可以工作,只需将对 MLINT 的调用替换为对这个较新函数的调用。


我不知道一般有什么方法可以根据 MLINT 自动修复代码消息。但是,在您的特定情况下,您可以通过一种自动方式将分号添加到抛出 MLINT 的行中警告。

首先,让我们从这个示例脚本 junk.m 开始:

a = 1
b = 2;
c = 'a'
d = [1 2 3]
e = 'hello';

第一、第三和第四行将为您提供 MLINT警告消息“用分号终止语句以抑制输出(在脚本中)。”。使用 MLINT 的函数形式,我们可以在文件中找到出现此警告的行。然后,我们可以从文件中读取所有的代码行,在出现警告的行的末尾添加一个分号,并将这些代码行写回到文件中。这是这样做的代码:

%# Find the lines where a given mlint warning occurs:

fileName = 'junk.m';
mlintID = 'NOPTS'; %# The ID of the warning
mlintData = mlint(fileName,'-id'); %# Run mlint on the file
index = strcmp({mlintData.id},mlintID); %# Find occurrences of the warnings...
lineNumbers = [mlintData(index).line]; %# ... and their line numbers

%# Read the lines of code from the file:

fid = fopen(fileName,'rt');
linesOfCode = textscan(fid,'%s','Delimiter',char(10)); %# Read each line
fclose(fid);

%# Modify the lines of code:

linesOfCode = linesOfCode{1}; %# Remove the outer cell array encapsulation
linesOfCode(lineNumbers) = strcat(linesOfCode(lineNumbers),';'); %# Add ';'

%# Write the lines of code back to the file:

fid = fopen(fileName,'wt');
fprintf(fid,'%s\n',linesOfCode{1:end-1}); %# Write all but the last line
fprintf(fid,'%s',linesOfCode{end}); %# Write the last line
fclose(fid);

现在文件 junk.m 应该在每一行的末尾都有分号。如果需要,您可以将上述代码放在一个函数中,以便您可以轻松地在继承代码的每个文件上运行它。

关于matlab - 有没有办法一次修复所有 MATLAB mlint 消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3248295/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com