小编Ira*_*ter的帖子

C#'dynamic'关键字......它真的是一个RESERVED关键字,还是只是一个标识符,当用作类型时意味着什么特殊?

我有一个C#4.0解析器.它接受'dynamic'作为关键字作为类型.我的解析器会跳过以下形式的C#3.0程序中发现的语句:

dynamic = <exp> ;
Run Code Online (Sandbox Code Playgroud)

那么,它真的是动态关键字吗?或者它仍然可以用作任意标识符名称?(如果是这样,为什么'int'不是以同样的方式对待)?

是否有某个参考规范说明dynamic是否是关键字?最新的ECMA C#4规范甚至没有提到"动态",我在MS网站上找到的最好的是"初步规范",它说它是一个关键字,但我怀疑这只是草率的写作.

c# keyword language-specifications c#-4.0

6
推荐指数
2
解决办法
900
查看次数

.net - 如何分析方法中有多少不同的代码路径

是否有(首选免费)工具可以分析方法中可能有多少种不同的组合?我目前正在重构一个有很多if/switch语句的方法,我很好奇这个方法有多少可能的不同执行方式.

假设我有一个简单的方法:

public void DoSomething(bool flag1, int value)
{

    if (flag1)
    {
        if (value > 0)
        {
            Console.WriteLine("Flag1 & value > 0");
            return;
        }
        else
        {
            Console.WriteLine("Flag1 & value <= 0");
            return;
        }
    }
    elseif (value > 0 and value < 10)
    {
        Console.WriteLine("Flag1 is false and value between 0 & 10");
        return;
    }

    if (value < 0)
    {
        Console.WriteLine("Flag1 = false & value <= 0");
        return;
    }
    elseif(value = 0)
    {
        Console.WriteLine("Flag1 = false & value >= 10");
        return; …
Run Code Online (Sandbox Code Playgroud)

.net c# code-analysis code-coverage

6
推荐指数
1
解决办法
1404
查看次数

iPhone - 为什么静态分析仪没有选择它?

@property(nonatomic, retain) NSMutableArray* playerList;
Run Code Online (Sandbox Code Playgroud)

...

team.playerList = [[NSMutableArray alloc] initWithArray:self.playerList];
Run Code Online (Sandbox Code Playgroud)

这是内存泄漏吗?

那么为什么静态分析仪不能选择这个呢?

iphone static-analysis memory-management objective-c ios

6
推荐指数
1
解决办法
110
查看次数

如何从 BNF 生成随机程序

我知道我的问题听起来有点模糊,但我在网上找不到任何教程。我不是在寻求答案,而是在寻求更多解释。\nBNF 的示例:

\n\n
<prog> ::= \xe2\x80\x9cint main() { <stat_list> return 0; }\xe2\x80\x9d\n<stat_list>  ::= <stat>\n         | <stat_list> <stat>\n<stat>       ::= <cmpd_stat>\n         | <if_stat>\n         | <iter_stat>\n         | <assgn_stat>\n         | <decl_stat>\n<cmpd_stat>  ::= { <stat_list> }\n<if_stat>    ::= if ( <exp> ) <stat>\n         | if ( <exp> ) <cmpd_stat>\n         | if ( <exp> ) <stat> else <stat>\n         | if ( <exp> ) <cmpd_stat> else <stat>\n         | if ( <exp> ) <stat> else <cmpd_stat>\n         | if ( <exp> ) <cmpd_stat> else <cmpd_stat>\n
Run Code Online (Sandbox Code Playgroud)\n\n

将其转换为 python 以使我的程序使用上述条件创建随机程序的最简单方法是什么?任何有用网站链接的帮助将不胜感激。

\n

python parsing code-generation bnf

6
推荐指数
2
解决办法
1832
查看次数

是否有可以自动化ollydbg的Perl模块?

是否有CPAN模块可以自动化着名的ollydbg调试器?如果是,有人可以提供这样的模块和一些教程/文档/示例吗?

debugging perl ollydbg

5
推荐指数
1
解决办法
310
查看次数

Windows SuspendThread 没有?(GetThreadContext 失败)

我们有一个 Windows32 应用程序,其中一个线程可以通过执行 SuspendThread/GetThreadContext/ResumeThread 来停止另一个线程以检查其状态 [PC 等]。

if (SuspendThread((HANDLE)hComputeThread[threadId])<0)  // freeze thread
   ThreadOperationFault("SuspendThread","InterruptGranule");
CONTEXT Context, *pContext;
Context.ContextFlags = (CONTEXT_INTEGER | CONTEXT_CONTROL);
if (!GetThreadContext((HANDLE)hComputeThread[threadId],&Context))
   ThreadOperationFault("GetThreadContext","InterruptGranule");
Run Code Online (Sandbox Code Playgroud)

极少数情况下,在多核系统上,GetThreadContext 返回错误代码 5(Windows 系统错误代码“拒绝访问”)。

SuspendThread 文档似乎清楚地表明目标线程已挂起,如果没有返回错误。我们正在检查 SuspendThread 和 ResumeThread 的返回状态;他们从来没有抱怨过。

怎么可能我可以挂起一个线程,但不能访问它的上下文?

这个博客 http://www.dcl.hpi.uni-potsdam.de/research/WRK/2009/01/what-does-suspendthread-really-do/

表明 SuspendThread 在返回时可能已开始暂停另一个线程,但该线程尚未暂停。在这种情况下,我可以看出 GetThreadContext 会有什么问题,但这似乎是定义 SuspendThread 的愚蠢方法。(SuspendThread 的调用如何知道目标线程何时真正挂起?)

编辑:我撒谎了。我说这是针对 Windows 的。

好吧,奇怪的事实是,我在 Windows XP 64 下没有看到这种行为(至少在上周没有,我真的不知道在那之前发生了什么)……但我们一直在测试这个 Windows 应用程序Ubuntu 10.x 上的 Wine。当由于某种原因尝试获取线程状态失败时,GetThreadContextWine 源在第 819 行包含拒绝访问的返回响应。我在猜测,但似乎 Wine GetThreadStatus 认为线程可能无法重复访问。为什么在 SuspendThead 超出我的范围之后这会是真的,但有代码。想法?

EDIT2:我又撒谎了。我说我们只看到了 Wine 上的行为。不......我们现在发现了一个 Vista …

windows winapi multithreading suspend

5
推荐指数
1
解决办法
8265
查看次数

如何获得可用的语言(不是全部,只是我的应用程序上可用的语言)

我知道已经存在一个Locale.getAvailableLocales()函数和一些其他同类函数,它们会返回所有可用的语言(无论它们是否可用于您的手机或没有)

我正在寻找一种方法来返回我翻译的语言(即:如果我有3个文件夹值-en,values-es,values-pt;我希望得到答案:[en,es,pt] ,或[英语,西班牙语,葡萄牙语]

android localization

5
推荐指数
1
解决办法
925
查看次数

可视化多线程C++应用程序调用图,多线程代码覆盖的工具?

我想知道是否有工具可以

  • 帮助可视化大型多线程应用程序的调用图.
  • 具体来说,我想看看多个线程如何在一个核心上交错/在多个核心上同时执行.
  • 该工具可以理想地识别可能的等待/死锁/竞争条件.
  • 最终,我希望根据线程在运行时(多线程代码覆盖工具)之间如何相互交互来进行代码覆盖,以便找到潜在的多线程错误.

    如果我没有清楚地解释我的问题,我很抱歉,我很乐意提供任何细节.

testing multithreading deadlock code-coverage call-graph

5
推荐指数
1
解决办法
1536
查看次数

解析 C 文件而不进行预处理

我想对 C 文件运行简单分析(例如,如果您使用参数调用fooINT_TYPE,然后将响应转换为int*),我不想预处理该文件,我只想解析它(这样,例如,我将有正确的行号)。

即,我想从

#include <a.h>

#define FOO(f)

int f() {FOO(1);}
Run Code Online (Sandbox Code Playgroud)

令牌列表,例如

<include_directive value="a.h"/>
<macro name="FOO"><param name="f"/><result/></macro>
<function name="f">
    <return>int</return>
    <body>
        <macro_call name="FOO"><param>1</param></macro_call>
    </body>
</function>
Run Code Online (Sandbox Code Playgroud)

无需设置包含路径等。

是否有任何预先存在的解析器可以做到这一点?我所知道的所有解析器都假设 C 是经过预处理的。我想访问宏和实际的包含指令。

c parsing

5
推荐指数
1
解决办法
959
查看次数

一长串if/else/execute代码分支的最佳设计模式/方法

我有一个"遗留"代码,我想重构.
代码基本上是对服务器的远程调用并获得回复.然后根据回复执行相应的.
代码骨架示例:

public Object processResponse(String responseType, Object response) {
    if(responseType.equals(CLIENT_REGISTERED)) {  
       //code  
       //code ...
    }  
    else if (responseType.equals(CLIENT_ABORTED)) {
       //code  
       //code....
    }    
    else if (responseType.equals(DATA_SPLIT)) {
      //code
      //code... 
   }  
   etc  
Run Code Online (Sandbox Code Playgroud)

问题是有许多if/else分支,并且每个内部的代码都不是微不足道的.
因此很难维护.
我想知道这个最好的模式是什么?
我有一个想法是创建一个方法名称与responseType相同的单个对象,然后在processResponse内部使用反射调用与responseType同名的方法.
这将清理processResponse,但它会将代码移动到具有许多/多种方法的单个对象,我认为反射会导致性能问题.
是否有一个很好的设计方法/模式来清理它?

java oop refactoring design-patterns

5
推荐指数
1
解决办法
282
查看次数