how to count uncommented ligns in matlab file?
4 ビュー (過去 30 日間)
古いコメントを表示
Hi,
I would like to count the number of ligns of code I produced for a project.
But I don't want to count commented ligns in the file. Otherwise I know I can use the function suggested (here).
Moreover sometimes the first character is not the (%) and there are some blank spaces before
Does anyone have an idea?
Thanks a lot.
0 件のコメント
採用された回答
Ive J
2023 年 4 月 2 日
編集済み: Ive J
2023 年 4 月 4 日
% doc readlines
% lines = readlines("myfunc.m");
lines = [" % comment 1"
"dummy = 1 + 3;"
" "
"%{"
"this is "
"an example "
"%}"
"print(dummy)"
""
""
"%{"
" yet another"
"block"
"%}"
"myvar = rand(10, 1);"
"%{ "
"comment"
"comment"];
lines = strtrim(lines);
% check comments blocks
idx_s = lines == "%{";
idx_e = lines == "%}";
if any(idx_s)
if sum(idx_s) > sum(idx_e), idx_e(end) = true; end
idx = arrayfun(@(x,y)(x:y), find(idx_s), find(idx_e), uni=false);
idx = horzcat(idx{:});
lines(idx) = [];
end
lines(lines == "" | lines.startsWith("%")) = [];
fprintf("%d lines were found!\n", numel(lines))
7 件のコメント
Ive J
2023 年 4 月 4 日
編集済み: Ive J
2023 年 4 月 4 日
@Adam Danz a little bit of tweaking would take care of that as well. Check it out now 😊.
その他の回答 (1 件)
Image Analyst
2023 年 4 月 2 日
You can use my comment counter program, attached.
3 件のコメント
DGM
2023 年 4 月 3 日
編集済み: DGM
2023 年 4 月 3 日
There's still this thing that I built off comment_counter.m to add support for legacy versions and some other features.
This all comes from a conversation here:
thispath = fullfile(matlabroot,'toolbox/images/colorspaces/');
checkcomments('path',thispath,'direction','ascend','countblank','recursive')
Rik gets credit for the core code that actually finds the comments. If all one needs to do is isolate comments from non-comments, then that's really what they need. See checkcommProcessor() and Rik's minify code on the FEX.
参考
カテゴリ
Help Center および File Exchange で Startup and Shutdown についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!