标签: code-analysis

转让所有权后如何摆脱CA2000警告?

以下代码生成两个CA2000警告(除此之外,但这不是重点).

public sealed class Item: IDisposable
{
    public void Dispose() {}
}

public sealed class ItemContainer
{
    public void Add(Item item)
    {
    }
}

public sealed class Test: IDisposable
{
    private ICollection<Item> itemCollection;
    private ItemContainer itemContainer;

    private void Add(Item item)
    {
        itemCollection.Add(item);
    }

    public void Initialize()
    {
        var item1 = new Item(); // no warning
        itemCollection.Add(item1);

        var item2 = new Item(); // CA2000: call Dispose on object item2
        Add(item2);

        var item3 = new Item(); // CA2000: call Dispose on object …
Run Code Online (Sandbox Code Playgroud)

c# code-analysis visual-studio-2010

15
推荐指数
3
解决办法
1万
查看次数

适用于Android的代码分析工具

有没有适用于Android的静态代码分析工具,可以通过尝试访问可能为null的对象来获取NullPointerExceptions等简单的东西(不先检查它)...

像C#项目上的resharper这样的工具做得很好,所以我假设Android的Java有类似的工具......

static android code-analysis static-analysis

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

分析效率代码?

您使用哪些工具来确定代码的效率?您是否使用运行统计上大量测试的本土应用程序或某些商业产品?您是否使用自己的知识来测试代码的某些区域,或者使用某种工具来分析代码中的弱点?

performance profiling code-analysis

14
推荐指数
2
解决办法
3759
查看次数

如何确保我的所有Python代码"编译"?

我的背景是C和C++.我非常喜欢Python,但是当你习惯于编译语言时,它的一个方面(以及我猜的其他解释语言)真的很难用.

当我用Python编写一些内容并且可以运行它时,仍然无法保证不会出现特定于语言的错误.对我而言,这意味着我不能完全依赖我的运行时防御(严格测试输入,断言等)以避免崩溃,因为在6个月内,当一些其他好的代码最终运行时,它可能会因为一些愚蠢的错误而破解.

显然,系统应该经过足够的测试,以确保所有代码都已运行,但大部分时间我都使用Python作为内部脚本和小工具,这些内容永远不会得到他们所需的QA关注.此外,一些代码非常简单(如果您的背景是C/C++),您知道只要编译它就会正常工作(例如,类中的getter-methods,通常是成员变量的简单返回).

所以,我的问题是显而易见的 - 有什么方法(使用特殊工具或其他东西)我可以确保我的Python脚本中的所有代码都将"编译"并运行?

python parsing code-analysis

14
推荐指数
1
解决办法
921
查看次数

从matlab src代码生成调用图

我正在尝试为大约500个matlab src文件创建一个函数调用图.我无法找到任何可以帮助我对多个src文件执行相同操作的工具.

有人熟悉任何工具或插件吗?

如果没有任何此类工具,欢迎任何有关阅读6000行matlab代码而无需文档的建议.

matlab dependencies code-analysis call-graph

14
推荐指数
3
解决办法
6787
查看次数

从方法返回一次性对象时的CA2000

我有一个工厂方法来构建实现的对象IDisposable.最终,调用者可以管理创建对象的生命周期.这种设计引发了一堆CA2000错误.在我的设计中是否存在根本不正确的东西,是否需要重构,还是仅仅对静态代码分析警告过于兴奋?

工厂方法

public static DisposableType BuildTheDisposableType(string param1, int param2)
{
    var theDisposable = new DisposableType();

    // Do some work to setup theDisposable

    return theDisposable
}
Run Code Online (Sandbox Code Playgroud)

来电者

using(var dt = FactoryClass.BuildTheDisposableType("data", 4))
{
   // use dt
}    
Run Code Online (Sandbox Code Playgroud)

c# code-analysis idisposable ca2000

14
推荐指数
2
解决办法
2764
查看次数

检测源是否为CSS/HTML/JavaScript

我想在某些源上使用js美化但是没有办法检测它是什么类型的源.有没有办法,粗略与否,检测源是css,html,javascript还是没有?

看看他们的网站,他们看起来好像它会弄清楚它是否是html:

function looks_like_html(source) {
    // <foo> - looks like html
    // <!--\nalert('foo!');\n--> - doesn't look like html
    var trimmed = source.replace(/^[ \t\n\r]+/, '');
    var comment_mark = '<' + '!-' + '-';
    return (trimmed && (trimmed.substring(0, 1) === '<' && trimmed.substring(0, 4) !== comment_mark));
}
Run Code Online (Sandbox Code Playgroud)

只需要看看它是css,javascript还是两者都没有.这是在node.js中运行的

所以这段代码需要告诉我它的JavaScript:

var foo = {
    bar : 'baz'
};
Run Code Online (Sandbox Code Playgroud)

这段代码需要告诉我它的CSS:

.foo {
    background : red;
}
Run Code Online (Sandbox Code Playgroud)

所以测试它的函数会返回类型:

function getSourceType(source) {
    if (isJs) {
        return 'js';
    }
    if (isHtml) {
        return …
Run Code Online (Sandbox Code Playgroud)

html javascript css code-analysis node.js

14
推荐指数
1
解决办法
2061
查看次数

如何抑制所有类型成员的代码分析消息?

假设我列举了所有货币:

public enum CurrencyType
{
    /// <summary>
    /// United Arab Emirates dirham
    /// </summary>
    [EnumMember]
    AED = 784,

    /// <summary>
    /// Afghan afghani
    /// </summary>
    [EnumMember]
    AFN = 971,

    /// <summary>
    /// Albanian lek
    /// </summary>
    [EnumMember]
    ALL = 008,

    ...
}
Run Code Online (Sandbox Code Playgroud)

VS 2015代码分析一直抱怨每个成员有100个违反CA1709的行为.

这本身就是一个有用的规则,我不想禁用它; 然而,在这个特定的情况下它并没有多大帮助,因为它CurrencyType是公共的,并且在很多其他项目中使用.

我可以压制这个消息; 然而,VS只允许我为每个成员压制它 - 这意味着我将拥有100 [SuppressMessage(...)]行,这将使代码混乱.

有没有办法抑制所有CurrencyType成员的所有CA1709 ,而不是为这个项目中的所有其他代码抑制它,而不必写100 [SuppressMessage(...)]?

有一个Scope参数SuppressMessageAttribute,但文档不清楚.我试过放两个

[SuppressMessage("Microsoft.Naming", "CA1709:IdentifiersShouldBeCasedCorrectly", Scope = "type", Justification = "Currency codes are defined in ISO …
Run Code Online (Sandbox Code Playgroud)

.net c# code-analysis fxcop roslyn

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

任何检查重复的VB.NET代码的工具?

我希望能够快速了解​​我们有多少"复制和粘贴"编码,有很多工具可供C#/ Java检查这类事情.有没有这样的工具可以很好地与VB.NET一起使用?

(我已经看到了很多重复的代码,但希望得到一些数字来帮助我做出整理的情况)


进展更新.

我刚试过西安.

Clone Doctor不支持VB.NET(仅限C#和VB 6以及其他许多)
2010年10月:VB.net添加到CloneDR支持的语言

Visual Studio的Clone Detective仅支持C#

SolidSDD - 源代码复制检测器仅支持C,C++,C#和Java

DuplicateFinder是开源的,但看起来非常像Simian,例如它只适用于文本行

ConQAT - 持续质量评估工具包 似乎有一个适用于VB.NET的克隆检测器(尚未尝试过)

Gendarme有点像FXCop并且有一个AvoidCodeDuplicatedInSameClassRule规则,这看起来非常有前景,因为它避免了在文本级别工作的问题. 刚尝试过,它是迄今为止最好的解决方案,遗憾的是它不会搜索范围更广.


在声称这个问题是重复之前,请检查另一个问题是否适用于VB.NET,因为许多适用于C#的工具对VB.NET来说效果不佳.(但如果这个问题真的重复,我不会感到惊讶)

vb.net code-analysis static-analysis code-duplication

13
推荐指数
1
解决办法
3851
查看次数

处置或不处理(CA2000)

我正在开启旧项目的代码分析.大多数评论结果我都能理解,但 CA2000:在丢失范围之前处理对象很难做到.

例如,来自ASP.Net页面的此代码:

private void BuildTable()
{
    HtmlTableRow tr = new HtmlTableRow();
    HtmlTableCell td = new HtmlTableCell();

    tr.Cells.Add(td);
    // add some controls to 'td'

    theTable.Rows.Insert(0, tr);
    // 'theTable' is an HtmlTable control on the page
}
Run Code Online (Sandbox Code Playgroud)

提供CA消息:

CA2000:Microsoft.Reliability:在方法'BuildTable()'中,在对所有引用超出范围之前,在对象'tr'上调用System.IDisposable.Dispose.

CA2000:Microsoft.Reliability:在方法'BuildTable()'中,对象'td'未沿所有异常路径放置.在对对象'td'的所有引用都超出范围之前调用System.IDisposable.Dispose.(以及关于添加到'td'的控件的类似消息.)

我可以解决第二个问题:

private void BuildTable()
{
    HtmlTableRow tr = new HtmlTableRow();
    HtmlTableCell td = new HtmlTableCell();

    try
    {
        tr.Cells.Add(td);
        // add some controls to 'td'

        td = null; // this line is only reached when there were no exceptions
    }
    finally …
Run Code Online (Sandbox Code Playgroud)

.net dispose code-analysis

13
推荐指数
1
解决办法
8627
查看次数