标签: code-analysis

C语言数据结构可视化

是否有任何C语言静态分析器可以在C代码体中创建数据结构的图形图表?

我正在考虑DDD(数据显示调试器)中的数据显示,但这些工作来自源代码的静态分析.

任何图表符号欢迎(UML等),它可以在任何平台上运行.

谢谢.

c code-analysis static-code-analysis

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

如何让FxCop拥有与Visual Studio Code Analysis相同的规则集?

昨天我在这里发布了一个问题(FxCop和代码分析规则),关于让FxCop运行与Code Analysis相同的规则,我认为它已经解决了.

然而,似乎没有真正的方法让FxCop运行与Visual Studio 2010的代码分析相同的一组规则.例如,一旦我使用我的FxCopCmd设置完成所有工作,它就开始咆哮着像CA2000这样的最小推荐规则规则集中表示的规则.如果我删除规则它不喜欢它运行分析,一切看起来不错...除了它真的没有运行相同的规则集!

这对我来说似乎有点疯狂!反正有没有让FxCop分析Visual Studio Code Analysis可以分析的完全相同的规则集?是否有.dll要添加到要分析的规则以获取CA2000和其他规则?

continuous-integration code-analysis fxcop visual-studio-2010

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

通过注释看似无关的代码可以删除CA2000警告

问题是VS2010代码分析正在为特定功能返回两个CA2000警告.我没有成功用较小的代码块重现警告,所以我已经完整地发布了原始函数.

public int SaveTransaction( Transaction tx, UserAccount account ) {

        if ( tx == null ) {
            throw new ArgumentNullException( "tx" );
        }

        if ( account == null ) {
            throw new ArgumentNullException( "account" );
        }

        bool isRefund = tx.TransactionType == LevelUpTransaction.TransactionTypes.Refund;

        int pnRef = 0;

        using ( SqlConnection conn = new SqlConnection( DatabaseConfiguration.ConnectionString ) ) {

            using ( SqlCommand cmd = new SqlCommand( "dbo.SaveTransaction", conn ) ) {

                cmd.CommandType = CommandType.StoredProcedure;

                cmd.Parameters.Add( "@InvoiceId", SqlDbType.VarChar, 100 ).Value = tx.InvoiceNumber;
                cmd.Parameters.Add( …
Run Code Online (Sandbox Code Playgroud)

.net c# code-analysis idisposable

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

CA2227和ASP.NET模型绑定

最近,我一直在努力在项目中启用更多的Visual Studio代码分析规则。但是,我一直碰到规则CA2227:“集合属性应该是只读的”。

说我有一个像这样的模型类:

public class Foo
{
    public string Name { get; set; }

    public List<string> Values { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我有一个映射很深的视图页面:

@using (Html.BeginForm())
{
    @Html.LabelFor(m => m.Name)
    @Html.EditorFor(m => m.Name)
    for (int i = 0; i < Model.Values.Count; i++)
    {
        <br />
        @Html.LabelFor(m => Model.Values[i]);
        @Html.EditorFor(m => Model.Values[i]);
    }

    <button type="submit">Submit</button>
}
Run Code Online (Sandbox Code Playgroud)

使用ASP.NET MVC,我可以在控制器中编写一个动作,该动作将自动将该输入绑定到type类型的类Foo:

[HttpPost]
public ActionResult ProcessForm(Foo model)
{
    return View(model);
}
Run Code Online (Sandbox Code Playgroud)

这种方法的问题在于,我的List<string>自动属性违反了规则CA2227。如果不进行模型绑定,则可以使该属性为只读,并在其他位置填充该集合。但是,该方法不适用于默认的模型绑定器。目前,我只是在视图模型中添加抑制消息。

有没有一种方法可以在不违反CA2227的情况下绑定模型中的项目集合?还是在这里添加抑制消息是我最好的选择?

c# asp.net asp.net-mvc code-analysis fxcop

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

检测C中未使用的功能

我正在寻找一种方法来检查我的C项目,编译成ELF,是否有未使用的函数,并找到它们.这是声明的函数,但在我的代码中没有被调用.

解决方案可以是以下之一:

  • 一个实用程序,通过我的.c文件,分析它们
  • 一个实用程序,通过我编译的ELF文件,有符号,静态分析它
  • 一种警告gcc中未使用的函数的方法(和-Wunused-functions不对全局函数执行此操作)

解决方案不能是以下之一:

  • 在编译时删除未使用的函数,而不知道删除了哪些函数
  • 在运行时分析ELF文件,因为并非每个函数都会在每次运行中调用gprof(有些函数需要几天才能调用它们,但在代码流中你可以看到它们最终被调用)
  • 一种实用程序,用于发现函数内部的死代码(即函数返回后的代码),而不是未使用的函数

谢谢

c gcc code-analysis utility dead-code

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

为什么FxCop没有报告CA2000这个非处理类实例的琐碎案例?

以下代码为Main的第一行生成CA2000(" 丢失范围之前的Dispose对象 ")违规,但不生成第二行.我真的很喜欢第二行的CA2000违规,因为这是我工作的大型代码库中常见的(显然简化的)模式.

有谁知道为什么第二行没有产生违规?

public static void Main()
{
    new Disposable();
    MakeDisposable();
}

private static Disposable MakeDisposable() { return new Disposable(); }

private sealed class Disposable : IDisposable
{
    public void Dispose()
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

c# code-analysis fxcop

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

FxCop Phoenix分析引擎出错

所以我试图运行一系列在RuleSet中定义的规则.RuleSet文件实际上是使用Sonarqube生成的 - 我已经选择了绝对的所有规则,包括FxCop,ReSharper和StyleCop规则.我正在开这样的FxCop:

C:/FxCop/FxCopCmd.exe /file:C:\TestProject\bin\TestProject.dll /ruleset:=C:\TestProject\testproject.ruleset /out:C:\TestProject\fxcop-report.xml /outxsl:none /forceoutput /searchgac /aspnet
Run Code Online (Sandbox Code Playgroud)

它正确启动,但我收到以下消息:

初始化Introspection引擎...
分析...
初始化Phoenix引擎......
分析...
分析完成.
*1总分析引擎异常.

XML输出包含以下内容:

<Exception Keyword="CA0001" Kind="Engine">
    <Type>Phx.FatalError</Type>
    <ExceptionMessage>Exception of type 'Phx.FatalError' was thrown.</ExceptionMessage>
    <StackTrace>   at Phx.FatalError.Dispatch()
        at Phx.Logging.Diagnostics.DiagnosticMessage.LogMessage(Severity severity, DiagnosticInfo diagnosticInfo, SourceContext sourceContext, String descriptionString)
        at Phx.PE.PEUtilities.UserError(String infoMessage)
        at Phx.Pdb.ReaderImplementation.Open(Boolean loadTypeOnly)
        at Phx.PEModuleUnit.LoadPdb()
        at Phx.PE.ReaderPhase.CheckSymbolicInformation()
        at Phx.PEModuleUnit.LoadGlobalSymbols()
        at Phx.PEModuleUnit.LoadEncodedIRUnitList()
        at Phx.PEModuleUnit.GetEnumerableContributionUnit(ContributionUnitEnumerationKind contributionUnitEnumerationKind)
        at Phx.PEModuleUnit.GetEnumerableContributionUnit()
        at Microsoft.FxCop.Engines.Phoenix.PreScanPass.GetFunctionUnits(PEModuleUnit peModuleUnit)
        at Microsoft.FxCop.Engines.Phoenix.PreScanPass.Execute(ModuleUnit moduleUnit)
        at Phx.Passes.Pass.DoPass(ModuleUnit moduleUnit)
        at Phx.Passes.PassList.DoPassList(ModuleUnit moduleUnit)
        at Microsoft.FxCop.Engines.Phoenix.PhoenixAnalysisEngine.Host.ExecutePasses(PEModuleUnit peModuleUnit)
        at Microsoft.FxCop.Engines.Phoenix.PhoenixAnalysisEngine.AnalyzeInternal()
        at Microsoft.FxCop.Engines.Phoenix.PhoenixAnalysisEngine.Analyze()
        at …
Run Code Online (Sandbox Code Playgroud)

code-analysis fxcop static-code-analysis

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

使用AdHocWorkspace会导致"不支持语言'C#'."

使用VS2015中的Microsoft.CodeAnalysis.CSharp.Workspaces的RC2,此代码抛出异常:

var tree = CSharpSyntaxTree.ParseText(...);
var workspace = new AdhocWorkspace();
var newRoot = Simplifier.Expand(tree.GetRoot(),
    compilation.GetSemanticModel(tree, false),
    workspace,
    n => true,
    true,
    CancellationToken.None);
Run Code Online (Sandbox Code Playgroud)

异常消息是"不支持语言'C#'."

我缺少什么让这项工作?

c# code-analysis roslyn

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

当VS2013非常满意时,为什么VS2015会给我代码分析错误?

我刚刚在VS2015中打开了一个现有项目,虽然它在VS2013中都很开心,但我现在在VS2015中遇到CS3002"返回类型不符合CLS"等错误.

我已经检查了项目属性并且未选中"在构建时启用代码分析",并查看了VS2015中的更改,但我不能在我的生活中看到为什么现在出现这些错误的任何原因.Visual Studio中有什么变化吗?

code-analysis visual-studio-2015

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

有选择地禁用第三方库的C++核心指南检查器

我想尝试在VS2015下的C++ 11/14项目中使用核心指南检查工具.

在我的代码中,我使用了许多来自Boost的库,它们会引发很多警告.我并不担心这些警告,因为Boost正在做很多非常聪明的工作,并且这些图书馆的编写目的不是为了符合准则,而这些准则主要是他们所遵循的.

但是在如此大量的警告中,我无法在我的代码中找到真正的问题(至少根据工具).

有没有办法抑制第三方代码的所有警告?也许在#including boost标题之前和之后有一些属性?

我从Visual C++团队博客阅读了这个页面,但我一直无法找到它.

c++ boost code-analysis visual-studio c++11

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