返回首页

您好,
我只是想知道。
找出一个函数名的长度是有可能吗?
例如,我有一个要求,该项目中的所有函数名应不超过32个字符的长度。我所能。使用strlen()一旦我知道函数的名称。
但如何识别在项目文件的功能?

回答

评论会员:西奥采购 时间:2012/02/07
我觉得他要优化的源代码文件。这可以用一个正则表达式搜索和替换做:奥尔伟业
评论会员:游客 时间:2012/02/07
不知道什么你想达到的,但为什么不写一个脚本,通过A类项目的头文件和搜索任何行"("和公正的分析方式(简单的字符串搜索和装饰)。脚本应该提供更方便的方式来搜索文件,并期待通过字符串,因此建议。如果你想这样做℃(而不是脚本),使用类似imgsrc=]寻找特殊字符('('),从该位置,向后移动到找到的第一个空白。如果你需要更多的帮助,发布更清晰/简洁/具体的问题。这是一点点广泛
保罗・瓦特
评论会员:游客 时间:2012/02/07
使用VisualStudio宏(脚本)编辑:我建议你​​看看VS宏工具,写一个小的宏脚本解析通过为您的文件。你会感兴趣的主要对象是一个名为Microsoft.VisualStudio.VCCodeModel。这将允许您使用VisualStudioIDE中解析的代码,发现所有的函数名,然后测试他们的VSIDE的一个简单的宏:我不能说这是100%正确的,但它将让你关闭你所需要的:当你做,你可以映射宏TestFunctionNameLength,键盘命令,或通过宏资源管理器在VisualStudio中运行宏。codeprelang="vb"spanclass="code-keyword"Imports/spanSystemspanclass="code-keyword"Imports/spanEnvDTEspanclass="code-keyword"Imports/spanEnvDTE80spanclass="code-keyword"Imports/spanEnvDTE90spanclass="code-keyword"Imports/spanVSLangProj2spanclass="code-keyword"Imports/spanVSLangProj90spanclass="code-keyword"Imports/spanSystem.Diagnosticsspanclass="code-keyword"Imports/spanSystem.Collections.Genericspanclass="code-keyword"Imports/spanMicrosoft.VisualStudio.VCCodeModelspanclass="code-keyword"Imports/spanSystem.Text spanclass="code-comment"'/spanspanclass="code-comment"*************************************************************************/spanspanclass="code-comment"'/spanspanclass="code-comment"DESCRIPTION:Testsallofthefunctionsinthecurrentfileforproperlen./spanspanclass="code-comment"'/spanspanclass="code-comment"/spanspanclass="code-keyword"Sub/spanTestFunctionNameLength()spanclass="code-comment"'/spanspanclass="code-comment"Walkalloftheelementsforthefileandtestwiththehelperdelegate./spanWalkFileCodeElements(spanclass="code-keyword"AddressOf/spanTestFnNameLenCallBack_) spanclass="code-keyword"End/spanspanclass="code-keyword"Sub/spanspanclass="code-comment"'/spanspanclass="code-comment"*************************************************************************/spanspanclass="code-comment"'/spanspanclass="code-comment"DESCRIPTION:Aworkerfunctiontotestthelengthofafunctionname./spanspanclass="code-comment"'/spanspanclass="code-comment"/spanspanclass="code-keyword"Sub/spanTestFnNameLenCallBack_(spanclass="code-keyword"ByRef/spaneltspanclass="code-keyword"As/spanVCCodeElement)spanclass="code-comment"'/spanspanclass="code-comment"Onlyprocessiftheinputelementisafunction./spanspanclass="code-keyword"If/span(elt.Kind()=vsCMElement.vsCMElementFunction)spanclass="code-keyword"Then/spanspanclass="code-keyword"If/span(elt.Name.Length>spanclass="code-digit"32/span)spanclass="code-keyword"Then/spanspanclass="code-comment"'/spanspanclass="code-comment"/spanspanclass="code-comment"'/spanspanclass="code-comment"ADDSCOLDINGOFTHEDEVELOPEROFTHISFUNCTIONHERE!/spanspanclass="code-comment"'/spanspanclass="code-comment"/spanspanclass="code-keyword"End/spanspanclass="code-keyword"If/spanspanclass="code-keyword"End/spanspanclass="code-keyword"If/spanspanclass="code-keyword"End/spanspanclass="code-keyword"Sub/span spanclass="code-comment"'/spanspanclass="code-comment"*************************************************************************/spanspanclass="code-keyword"Public/spanspanclass="code-keyword"Delegate/spanspanclass="code-keyword"Sub/spanCodeElementDelegateCallBack(spanclass="code-keyword"ByRef/spaneltspanclass="code-keyword"As/spanVCCodeElement) spanclass="code-comment"'/spanspanclass="code-comment"*************************************************************************/spanspanclass="code-comment"'/spanspanclass="code-comment"DESCRIPTION:Walksallofthecodeelementsinthespecifiedcollection/spanspanclass="code-comment"'/spanspanclass="code-comment"anduseseachelementinacalltothecallbackdelegate/spanspanclass="code-comment"'/spanspanclass="code-comment"passedintothefunction./spanspanclass="code-comment"'/spanspanclass="code-comment"/spanspanclass="code-keyword"Sub/spanWalkElementCodeElements(spanclass="code-keyword"ByVal/spaneltsspanclass="code-keyword"As/spanVCCodeElements,_spanclass="code-keyword"ByVal/spancallbackspanclass="code-keyword"As/spanCodeElementDelegateCallBack)spanclass="code-keyword"For/spanspanclass="code-keyword"Each/spaneltspanclass="code-keyword"As/spanVCCodeElementspanclass="code-keyword"In/spaneltscallback(elt)spanclass="code-keyword"Next/span spanclass="code-keyword"End/spanspanclass="code-keyword"Sub/span spanclass="code-comment"'/spanspanclass="code-comment"*************************************************************************/spanspanclass="code-keyword"Sub/spanWalkFileCodeElements(spanclass="code-keyword"ByVal/spancallbackspanclass="code-keyword"As/spanCodeElementDelegateCallBack)spanclass="code-comment"'/spanspanclass="code-comment"Firsttrytogetthecodemodelforthecurrentfile./spanspanclass="code-keyword"Dim/spanvcCmspanclass="code-keyword"As/spanVCCodeModelspanclass="code-keyword"Try/spanvcCm=DTE.ActiveDocument.ProjectItem.FileCodeModelspanclass="code-keyword"Catch/spanexspanclass="code-keyword"As/spanException spanclass="code-keyword"End/spanspanclass="code-keyword"Try/span spanclass="code-comment"'/spanspanclass="code-comment"Thatdidnotwork.Thefileisprobablynotpartoftheproject./spanspanclass="code-comment"'/spanspanclass="code-comment"Attempttousetheactiveprojectscodemodel./spanspanclass="code-keyword"If/span(vcCmspanclass="code-keyword"Is/spanspanclass="code-keyword"Nothing/span)spanclass="code-keyword"Then/spanspanclass="code-keyword"Dim/spandte2spanclass="code-keyword"As/spanEnvDTE80.DTE2=DTEspanclass="code-keyword"Dim/spanespanclass="code-keyword"As/spanEnvDTE.Properties=dte2.Solution.Properties spanclass="code-keyword"Dim/spanprojectspanclass="code-keyword"As/spanProject=dte2.Solution.Projects.Item(spanclass="code-digit"1/span) vcCm=project.CodeModel spanclass="code-comment"'/spanspanclass="code-comment"Validatetheseresults.Iftheyfailed,dropout./spanspanclass="code-keyword"If/span(vcCmspanclass="code-keyword"Is/spanspanclass="code-keyword"Nothing/span)spanclass="code-keyword"Then/spanspanclass="code-keyword"Return/spanspanclass="code-keyword"End/spanspanclass="code-keyword"If/spanspanclass="code-keyword"End/spanspanclass="code-keyword"If/span WalkElementCodeElements(vcCm.CodeElements,callback)spanclass="code-keyword"End/spanspanclass="code-keyword"Sub/span /pre/code[编辑:改变从的小组RemoveFunctionComments()函数调用的名称,到TestFunctionNameLength()。这个范例是从宏观的快速适应,我写信给剥夺的意见,从函数的定义]