[备忘]Source Insight检查函数-变量是否被使用

macro IsUsed(symbol)
{
    var search_buf;
    var search_count;

    var link_recrod;
    var link_buf;

    var ref_sym;

    var is_used;
    
    var i;

    is_used = False;
    if (symbol == Nil) {
        return is_used;
    }

    search_buf = NewBuf("Search");
    if (search_buf == hNil) {
        Msg("new buf failed.");
        stop;
    }

    SearchForRefs(search_buf, symbol, False);
    search_count = GetBufLineCount(search_buf);

    i = 0;
    while (i < search_count) {
        link_recrod = GetSourceLink(search_buf, i);
        i = i + 1;

        if (link_recrod == Nil) {
            continue;
        }
        link_buf = OpenBuf(link_recrod.File);
        ref_sym = GetSymbolLocationFromLn(link_buf, link_recrod.ln);
        // CloseBuf(link_buf);

        if (ref_sym == Nil) {
            continue;
        }
        // Msg(ref_sym.Symbol # " " # ref_sym.File # " " # ref_sym.lnFirst);
        if (ref_sym.Symbol != symbol) {
            is_used = True;
            break;
        }
    }
    CloseBuf(search_buf);

    return is_used;
}


macro CheckIsUsed()
{
    var data_file_name;
    var data_file_buf;
    var data_file_count;
    var data_file_line;

    var used_record_buf;
    var used_record_name;

    var i;
    var is_used;
   

    data_file_name = "Data.txt";

    used_record_name = "used_record.txt";

    used_record_buf = NewBuf(used_record_name);
    SetCurrentBuf(used_record_buf);

    data_file_buf = OpenBuf(data_file_name);
    data_file_count = GetBufLineCount(data_file_buf);
    i = 0;
    while (i < data_file_count) {
        data_file_line = GetBufLine(data_file_buf, i);
        i = i + 1;

        is_used = IsUsed(data_file_line);
        AppendBufLine(used_record_buf, data_file_line # "," # is_used);
    }
}

 

posted @ 2019-06-15 20:27  YBHello  阅读(441)  评论(0编辑  收藏  举报