待办事项列表附加组件






4.69/5 (6投票s)
一个Visual Studio插件,帮助导航到TODO:、TASK:等注释,并在调试模式下显示STL容器,例如std::string、std::list等。
插件查找对话框

To-do缓存插件旨在简化开发人员的任务,例如调试和代码管理。我的工作成果是一个Visual Studio插件组件。它使某些事情更容易。
调试功能
调试的主要功能是展开STL容器。此插件支持调试以下STL容器:
std::vector
std::list
std::map
std::multimap
std::set
std::multiset
此外,还添加了特殊的调试功能,它们为Visual C++调试器添加了对超长字符串的支持。插件修复了Visual C++调试器对字符串输出的限制。(Visual C++调试器只能显示字符串的242个字符)。此插件可以展开超长字符串(超过65536个字符)
CString (MFC类)
std::string
BSTR 和 WCHAR*
bstr_t (COM支持 类)
char *
CComBSTR (ATL类)
插件还可以显示格式化/缩进友好的XML长字符串。它还支持通过简单的字符串或正则表达式 (RegExp) 快速查找。在查找对话框中,任何部分字符串都可以复制到系统剪贴板,供开发人员将来使用。
代码管理功能
插件具有可用于管理Visual C++项目源代码的特殊功能。简单来说,它就像这样:
开发人员添加带有特殊签名的注释,例如: // TODO:
在此关键字之后可以编写任务描述。插件可以支持开发人员想要的任意多个关键字。此Visual C++插件的主要优点是它解析注释。插件解析源代码中的所有注释,检查注释的字符串中是否存在所需的关键字,并显示结果。插件能够区分两种类型的注释 // - 单行注释和 /* - 多行注释。插件中使用的每个关键字必须以 '//' 或 '/*' 符号开头 - 如果你只想解析注释,以及任何其他符号,如果你想解析完整的源代码。
所有解析结果都缓存在开发人员保存对文件的更改时更新。这就是为什么插件名为 To-Do Cached。其工作结果将打印到输出窗口的宏选项卡中。在输出窗口中查找所需的字符串,并双击它以转到源代码中的该字符串。插件还理解写成单行注释列表的多行注释,例如:
// TODO: -- start -- write code which do something special and with context and
// and continue work -- end --
插件会将此注释解释为一个长注释,并将其显示为一行。工作结果可以排序和过滤。
工具栏外观如下:

![]() |
显示结果 | 这是工具栏中的第一个按钮(从左到右)。按下此按钮可在输出窗口的宏选项卡中显示关键字搜索的结果。很遗憾,我仍然不知道如何在按下按钮时设置活动的宏选项卡。因此,按下后必须手动将选项卡更改为宏。 |
![]() |
重新解析工作区 | 按下此按钮可释放插件的缓存。仅当工作区中文件过多时才需要。之后不要打开“选项”对话框——根据插件逻辑,它将不得不再次解析工作区才能显示统计信息。 |
![]() |
选项对话框 | 可以使用“选项”对话框配置插件的某些功能。 |
![]() |
将所有文件制表化 | 按下后,插件将自动打开活动项目中的所有文件,并将文件中的所有空格更改为制表符。 |
![]() |
取消所有文件的制表化 | “制表化”操作的反向过程。插件将打开活动项目的所有文件,并将所有制表符更改为空格。 |
![]() |
STL 调试对话框 | 打开插件的STL调试对话框。按下按钮后,插件将尝试通过选择或光标位置在当前打开的源文件中找到变量。 |
使用STL和C++类数据类型测试的应用程序示例。
#pragma warning( disable : 4786 ) #include <string> #include <vector> #include <map> #include <list> #include <set> #include <queue> #include <deque> #include <stack> #include <comutil.h> #include <atlbase.h> typedef std::string string; // map types typedef std::map<long, string> TLongStr; typedef std::map<string, string > TStrStr; typedef std::map<long, long> TLongLong; // multimap types typedef std::multimap<long, string> TMLongStr; typedef std::multimap<long, long> TMLongLong; typedef std::multimap<string, string> TMStrStr; // vector types typedef std::vector<string> TVStr; typedef std::vector<long> TVLong; // list types typedef std::list<string> TLStr; typedef std::list<long> TLLong; // set typedef std::set<long> TSLong; typedef std::set<string> TSStr; typedef std::multiset<long> TMsLong; typedef std::multiset<string> TMsStr; #define DEF_TEST_STRING "ABCDEFGHIJKLMNOPQRSTUVWXYZ\r\n\t\v\b" #define STR_DEF_TEST string( DEF_TEST_STRING ) int main( int argc, char* argv[] ) { char buffer[ 8192 ]; // maps TLongLong mapLL; TLongStr mapLS; TStrStr mapSS; TMLongLong mmapLL; TMLongStr mmapLS; TMStrStr mmapSS; // list, vector TLLong listL; TLStr listS; TVStr vecS; TVLong vecL; // set, multiset TSLong setL; TSStr setS; TMsLong msetL; TMsStr msetS; string strValue = DEF_TEST_STRING; for( int j=0; j<10; j++ ) strValue += strValue; const char * czBuffTestLongVariableNamesWithSomething = strValue.c_str( ); CString cstrClass = czBuffTestLongVariableNamesWithSomething; CComBSTR combstr = cstrClass; BSTR bstr = combstr; bstr_t TBstr = bstr; for( long i = 0; i<4000; i++ ) { sprintf( buffer, "%04d - ABCDEFGHIJKLMNOPQRSTUVWXYZ" , i ); string temp = buffer; mapLL.insert( TLongLong::value_type( i, i+1 ) ); mapLS.insert( TLongStr::value_type( i, temp ) ); mapSS.insert( TStrStr::value_type( temp, temp ) ); mmapLL.insert( TMLongLong::value_type( i, i+1 ) ); mmapLL.insert( TMLongLong::value_type( i, i ) ); mmapLS.insert( TMLongStr::value_type( i, temp ) ); mmapLS.insert( TMLongStr::value_type( i, temp ) ); mmapSS.insert( TMStrStr::value_type( temp, temp ) ); mmapSS.insert( TMStrStr::value_type( temp, temp ) ); listL.push_back( i ); listS.push_back( temp ); vecL.push_back( i ); vecS.push_back( temp ); setL.insert( i ); setS.insert( temp ); msetL.insert( i ); msetL.insert( i ); msetS.insert( temp ); msetS.insert( temp ); } return 0; }
历史
发布日期:2001年8月17日
第一篇文章发布到 CodeProject
从那时起,许多事情都发生了变化,并添加了新功能。
更新:2001年9月7日
大量更改。
更新:2002年1月20日
更多更改。
更新:2002年4月21日
更新下载包