标签: code-analysis

如何在没有(或没有足够)文档的情况下分析开源代码?

我有一个开源代码,大约15 MB.我想了解那里使用的主要算法.我开始分析该代码的每个部分,但我认为这将花费很多时间.有没有办法让过程更容易?我之前没有这样做,所以这是我的第一次体验.

这一个,可能有人知道:https://launchpad.net/cuneiform-linux

open-source code-analysis

12
推荐指数
2
解决办法
4036
查看次数

列出C/C++函数(Unix中的代码分析)

无论我们是维护不熟悉的代码还是检查Apache模块的实现细节,如果我们能够快速遍历代码并构建我们正在查看的内容的概述,它将会有所帮助.Grep服务于我的大部分日常需求,但有些情况下它不会做.

以下是它可以提供帮助的常见示例.要找到我感兴趣的PHP函数的定义,我可以在命令行输入:

grep -r "function myfunc" .
Run Code Online (Sandbox Code Playgroud)

如果我们知道返回类型,这可以很快适应C或C++,但是如果我要列出我的类提供的每个方法,事情会变得更复杂:

grep "function " ./src/mine.class.php
Run Code Online (Sandbox Code Playgroud)

由于没有单个关键字表示C++中的函数或方法,并且因为它通常是更复杂的语法,我认为我需要某种静态代码分析工具,智能使用C预处理器或盲目信任编码器遵循严格的代码指南(空白的数量,curites的位置等)以获得这些结果.

你会推荐什么?

c c++ grep code-analysis

12
推荐指数
4
解决办法
4984
查看次数

如何在Python中解析C++源代码?

我们想要解析我们庞大的C++源代码树,以获取足够的信息来提供给另一个工具来制作类和对象关系图,识别事物的整体组织等.

到目前为止,我最好的尝试是扫描所有.cpp和.h文件的Python脚本,运行正则表达式搜索以尝试检测类声明,方法等.我们不需要一个完整的分析器来捕获每个细节,或者一些重型UML图生成器 - 我们想要忽略很多细节,我们正在发明新类型的图.该脚本八九不离十工作,但由天哪它是真实的:C++ 是难以解析!

所以我想知道从我们的资源中提取我们想要的信息的工具是什么?我不是语言专家,也不想要有陡峭学习曲线的东西.我们低眉蓝领程序员咕噜声可以使用的东西:P

Python是首选的标准语言之一,但它并不重要.

c++ python parsing code-analysis

12
推荐指数
2
解决办法
4954
查看次数

任何人都可以在控制器动作上解释CA1822的目的和解决方案吗?

错误CA1822:Microsoft.Performance:从不使用'SomeController.AnAction(string,string)'中的'this'参数(或Visual Basic中的'Me').将成员标记为静态(或在Visual Basic中为Shared)或在方法体中使用"this"/"Me"或至少使用一个属性访问器(如果适用).

当通过URL请求时,静态操作产生404未找到.该操作正在按预期工作,代码分析已关闭.这有什么意义,什么是适当的补救措施?

请注意,操作的返回类型是PartialViewResult,如果返回类型为ActionResult,则代码分析似乎不会抱怨此情况.

    [HttpPost]
    public PartialViewResult BlankEditorRow(string formId, Common.Entities.Common.ObjTypeEnum objType)
    {
        if (objType == Common.Entities.Common.ObjTypeEnum.Regular)
            return new AjaxPartialViewResult("_RowEditor", new ProcedureEntryEntity()) { UpdateValidationForFormId = formId };
        else
            return new AjaxPartialViewResult("_TemplateRowEditor", new ProcedureEntryEntity()) { UpdateValidationForFormId = formId };
    } 
Run Code Online (Sandbox Code Playgroud)

更新:看起来将返回类型更改为ActionResult可以解决错误,而PartialViewResult是ActionResult,因此它应该可以正常工作.

code-analysis asp.net-mvc-3

12
推荐指数
2
解决办法
2716
查看次数

用于自动简化正则表达式的工具

我试图在开源项目中压制警告,并且

/[\.\,\;\:\(\)\[\]\{\}\<\>\"\'\`\~\/\|\?\!\&\@\#\s\x00-\x1f\x7f]+/
Run Code Online (Sandbox Code Playgroud)

给了我

(irb):1: warning: character class has duplicated range
Run Code Online (Sandbox Code Playgroud)

是否有任何工具可以自动指出正则表达式的哪些部分导致重叠?

ruby regex code-analysis

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

CA2104警告:有没有办法将类标记为"不可变"来抑制它?

请考虑以下代码,这些代码会引发 CA2104: Do not declare read only mutable reference types.

public class Test
{
    // This provokes CA2104: "Do not declare read only mutable reference types".
    protected readonly ImmutableClass ImmutableMember;
}

public class ImmutableClass
{
}
Run Code Online (Sandbox Code Playgroud)

有没有人知道一种方法将一个类标记为不可变的方式会抑制警告CA2104?

我试着装饰MutableClass而[ImmutableObject(true)]没有成功的希望(因为表格编辑器使用的属性非常清楚),而且确实它不起作用.

我假设Code Analysis在确定是否发出CA2104时使用已知的不可变类型列表,因此我们不能使用相同的方法.

我想即使你可以将一个类标记为不可变,编译器也无法实际检查它是否为真,但至少它可能是一个有用的指标.

无论如何,我有什么属性可以忽略吗?如果没有,则必须进行抑制.

目前似乎没有替代方法可以做到这一点.

我找到了一个有趣的博客,来自Joe Duffy("Windows上的并发编程"一书的作者)关于这种事情.

他从"想象我们有一个ImmutableAttribute"开始....... :)

这很有意思 - 他遇到了编写一些新的FxCop规则来分析属于不可变的类型的麻烦.

c# code-analysis immutability

12
推荐指数
1
解决办法
2464
查看次数

未找到类型或命名空间"是否缺少程序集引用",而所有引用都是正确的

我正在尝试使用MSBuildWorkspace类.我的项目中有所有程序集引用.当我在对象浏览器中打开引用时,我看到了命名空间和我尝试使用的类.但在我的以下使用声明中,

using Microsoft.CodeAnalysis.MSBuild

我得到了一个

The type or namespace name 'MSBuild' does not exist in the namespace 'Microsoft.CodeAnalysis' (are you missing an assembly reference?)
Run Code Online (Sandbox Code Playgroud)

但有趣的是,Syntax荧光笔识别出类型名称,它的编译器抱怨

在此输入图像描述

这是构建日志

   1>c:\windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1605,5): warning MSB3258: The primary reference "Microsoft.CodeAnalysis.Workspaces" could not be resolved because it has an indirect dependency on the .NET Framework assembly "Microsoft.Build, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" which has a higher version "12.0.0.0" than the version "4.0.0.0" in the current target framework.
    1>c:\windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1605,5): warning MSB3258: The primary reference "Microsoft.CodeAnalysis.VisualBasic.Workspaces" could not be resolved because …
Run Code Online (Sandbox Code Playgroud)

.net c# code-analysis roslyn

12
推荐指数
2
解决办法
1万
查看次数

在Roslyn分析器中检查表达式类型的正确方法?

我正在编写一个带有Roslyn的代码分析器,我需要检查它是否ExpressionSyntax是类型Task或Task<T>.

到目前为止我有这个:

private static bool IsTask(ExpressionSyntax expression, SyntaxNodeAnalysisContext context)
{
    var type = context.SemanticModel.GetTypeInfo(expression).Type;
    if (type == null)
        return false;
    if (type.Equals(context.SemanticModel.Compilation.GetTypeByMetadataName("System.Threading.Tasks.Task")))
        return true;
    if (type.Equals(context.SemanticModel.Compilation.GetTypeByMetadataName("System.Threading.Tasks.Task`1")))
        return true;
    return false;
}
Run Code Online (Sandbox Code Playgroud)

它的工作原理为Task,但不适合Task<int>或Task<string>...我可以核对姓名和命名空间,但它是不切实际的,因为我要检查每个命名空间的"级别".

有推荐的方法吗?

.net c# code-analysis roslyn

12
推荐指数
1
解决办法
1266
查看次数

有没有办法在Flex Builder中找到未引用的代码?

我们有几个Flex项目,其中一个刚被重构.我想知道是否有一种简单的方法来判断哪些类和功能(如果有的话)不再被使用了?

我发现我们肯定有一些未使用的代码,因为在整个项目中运行ASDoc会报告一些编译错误,这些错误不会被Flex Builder报告(暗示这些类不再被使用).我希望找到一个更强大和完整的方法,最好也可以在功能级别工作.

apache-flex code-analysis

11
推荐指数
1
解决办法
2516
查看次数

Visual Studio代码分析错误CA 1006

代码分析抛出错误CA1006:每当我们在接口契约中定义自定义定义时,不要将泛型类型嵌套在成员签名中.处理这个所谓的设计问题的最佳方法是什么.对此有任何深刻的想法.

感谢您花费宝贵的时间来完成这项工作.

例:-

 Task<IList<Employee>> LoadAllEmployeeAsync();
Run Code Online (Sandbox Code Playgroud)

c# code-analysis fxcop visual-studio static-code-analysis

11
推荐指数
1
解决办法
2674
查看次数