标签: code-analysis

C++函数调用路由解析器

我正在寻找一种工具来告诉/解决每个函数的所有调用路径(称之为"路由").

例如:

void deeper(int *pNumber)
{
 *pNumber++;
}
void gateA(int *pNumber)
{
 deeper(pNumber);
}
void gateB(int *pNumber)
{
 gateA(pNumber);
}

void main()
{
 int x = 123;
 gateA(&x);
 gateB(&x);
}
Run Code Online (Sandbox Code Playgroud)

看到?我需要一个工具来告诉我更深层次的所有路线(),如果可能的话还有更多.

通过说"更多"我的意思是它会告诉我指针是否与提供给调用函数的指针相同.

这将大大节省我的时间.谢谢!

c++ windows code-analysis

5
推荐指数
2
解决办法
229
查看次数

什么文章讨论"查看10000英尺的代码"?

几年前,我读了一篇关于分析大型代码库的简洁方法的文章.

我们的想法是缩小到目前为止压痕和块长度的模式都是真正可见的.

作者写了关于使用非常小的字体打印代码并查看10英尺后面的结果的文章.我相信作者还有一些工具可以重新格式化代码并为这种技术生成图像,从而可以避免使用纸张.

我无法找到合适的搜索查询来实现这一目标.有人有主意吗?

refactoring code-analysis

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

在类构造函数C#中设置默认值

我需要一个默认值集和许多不同的页面访问和更新..最初我可以像这样在类构造函数中设置默认值吗?在C#.NET中执行此操作的正确方法是什么?

public class ProfitVals
{

    private static double _hiprofit;

    public static Double HiProfit
    {
        get { return _hiprofit; }

        set { _hiprofit = value; }
    }

    // assign default value

    HiProfit = 0.09;

}
Run Code Online (Sandbox Code Playgroud)

.net c# code-analysis static-variables variable-assignment

5
推荐指数
2
解决办法
7290
查看次数

FindBugs - 冗余比较为null

我有以下代码的findbugs错误,

if( obj instanceof CustomerData )
{
    CustomerData customerData = (CustomerData)obj;

    if (customerData == null) 
    {
        errors.reject("Error", "Null data received");
    }
}
Run Code Online (Sandbox Code Playgroud)

错误说明:

obj的冗余nullcheck,已知为非null(包名和方法名称,我因安全违规而删除)

此方法包含对常量null的已知非空值的冗余检查.

请告诉我这里的错误是什么.

java code-analysis findbugs

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

尽管在C#中使用了未使用的本地字符串变量,代码分析仍未显示CA1804警告(VS2010 Premium)

我从代码分析(VS2010 Premium)获得了以下不产生CA1804警告的代码(从未使用过声明的变量):

...
if( boolVariable )
{
    string errorText = "Bla Bla Bla"; // Never used
    ErrorProvider.SetError( SomeControl, "Some Warning" );
}
else
{
    string errorText = "Acme Acme Acme"; // Used below
    ErrorProvider.SetError( SomeControl, errorText );
}
...
Run Code Online (Sandbox Code Playgroud)

当我删除ErrorProvider.SetError(...)行时,会显示CA1804警告,但为什么上面的代码示例中不是这种情况?

(顺便说一句:代码本身并不太好,只是为了说明我的问题.)

可能导致这种行为的任何想法?我想这可能是因为IL代码的优化方式是将声明置于if之外,这反过来意味着警告确实不会出现在上面的例子中,但是我我不确定这是否属实.

提前致谢

G.

c# code-analysis visual-studio-2010

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

C#代码分析CA2000

我有一个功能,我认为我已经修复了代码分析中的CA2000警告,但它不会消失.警告在SqlCommand上.这是功能:

protected internal void LogUserSession(int? managerID)
{
    using (var sqlCommand = new SqlCommand())
    {
        sqlCommand.SetCommand("usp_UserActivity_Create");

        SqlParameter prmSessionID = new SqlParameter();
        prmSessionID.ParameterName = "@sessionID";
        prmSessionID.Direction = ParameterDirection.Input;
        prmSessionID.SqlDbType = SqlDbType.VarChar;
        prmSessionID.Size = 32;
        prmSessionID.SetValue(SessionID);

        SqlParameter prmUsername = new SqlParameter();
        prmUsername.ParameterName = "@username";
        prmUsername.Direction = ParameterDirection.Input;
        prmUsername.SqlDbType = SqlDbType.VarChar;
        prmUsername.Size = 32;
        prmUsername.SetValue(Username);

        SqlParameter prmLoginID = new SqlParameter();
        prmLoginID.ParameterName = "@loginID";
        prmLoginID.Direction = ParameterDirection.Output;
        prmLoginID.SqlDbType = SqlDbType.Int;

        sqlCommand.Parameters.Add(prmSessionID);
        sqlCommand.Parameters.Add(prmUsername);
        sqlCommand.Parameters.Add(prmLoginID);

        using (sqlCommand.Connection = new SqlConnection(ConnectionStrings.MainApp))
        {
            sqlCommand.Connection.Open();
            sqlCommand.ExecuteNonQueryTryCatch();

            if (prmLoginID.Value != DBNull.Value) …
Run Code Online (Sandbox Code Playgroud)

c# code-analysis ca2000

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

PHP代码分析器确定使用的类/扩展

问题

我有一个遗留代码库,我需要分析和确定依赖项.特别是对类(内部/外部)和扩展(Memcache,PDO等)的依赖.

我试过的

我已经回顾了在PHP文件中是否有静态代码分析器中列出的工具?.不幸的是,这篇文章已经过时了,像phpCallGraph这样的大多数有前途的工具都不再适用.

我的想法是用词法分析代码并寻找类令牌.查看这些列表至少可以让我直观地确定依赖关系.但是,在以下代码中查找OtherClass可能很复杂:

$classname = 'OtherClass';
echo $classname::doubleColon();
Run Code Online (Sandbox Code Playgroud)

最后,我怀疑我是第一个需要这个的人.我确信存在一种工具或工具组合来提供我需要的东西.所以我在自己写这篇文章之前就问SO社区.

更新

理想情况下,此工具将分析具有完整代码覆盖率的多个文件 因此,像Xdebug这样的工具虽然很棒,但并不能解决这个问题.

php code-analysis lexical-analysis

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

Resharper忽略使用分析的单元测试

Resharper最有用的代码分析工具之一是,如果在解决方案中找不到用法,则将符号标记为未使用.

不幸的是,单元测试所涵盖的任何符号都被视为已使用.

=> 我正在寻找一种忽略此用法分析的单元测试的方法.

通过Resharper选项扫描,我找到了一个标有"编辑要跳过的项目"的按钮.它有一个很长的描述文本,除其他外,"...如果解决方案中的某个符号仅用于您跳过的文件中,则此符号将突出显示为从未使用过."

这听起来就像我想要的那样.但是通过将单元测试项目放在跳过列表上不仅可以显示任何有效的未使用符号,它只会禁用测试项目的整个代码分析.当然我仍然希望编写好的单元测试代码,从而利用Resharper的所有代码分析功能.我只是不想计算测试项目之外的符号用法.

有任何想法吗?

c# resharper nunit code-analysis resharper-7.1

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

检索Haskell项目中所有导入的列表

因此,我的最终目标是通过确保项目导入的所有实体都存在于其声称使用的版本中来评估cabal文件中依赖项的准确性.

一个好的开始是找到单个源文件使用的所有导入实体的列表,可选地提供有关它们来自何处的信息.

我现在愿意忽略类实例的情况,因为检测它们的使用并不是那么简单.

理想的答案是指向一个完全如此的工具,但我也会接受一个答案,指出我需要自己编写一个资源(GHC收集这些信息吗?它会把它转移到哪里吗?可以吗?被说服这样做?)

haskell code-analysis

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

您是否听说过CA2151 - 具有关键类型的字段应该是安全关键的吗?

我试图编译.NET项目并出现此CA,但是我在MSDN上找不到任何关于它的信息,你知道如何解决它吗?

code-analysis fxcop visual-studio

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