标签: code-analysis

命名:价目表与PriceList

哪个更正确,"PriceList"还是"Pricelist"?

FxCop说:CA1702:Microsoft.Naming:类型名称'PriceList'中的复合词'PriceList'作为离散术语存在.如果您的用法是单字,请将其称为"价目表".

编辑:这是一个标题,开始/结束日期等对象.

.net naming code-analysis fxcop naming-conventions

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

您是否建议在Build上启用C/C++的代码分析?

我正在使用Visual Studio 2010,在我的C++/CLI项目中有两个代码分析设置:

  1. 在Build上启用代码分析
  2. 在Build上启用C/C++的代码分析

我的问题是关于第二种情况.

我已经启用了它,它需要很长时间才能运行并且它找不到太多.

您是否建议启用此功能?为什么?

c++ code-analysis c++-cli visual-studio-2010 visual-studio

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

在Visual Studio代码分析中使用CustomDictionary.xml为花哨的标识符

例如,标识符如iPhone.当我运行代码分析时,它给了我这个错误:

CA1709:Microsoft.Naming:通过将其更改为"I"来更正名称空间名称"iPhone.Example"中的"i"的大小写.

我尝试添加一个条目CustomDictionary.xml如下:

<Words>
    <Recognized>
        <Word>iphone</Word>
    </Recognized>
</Words>
Run Code Online (Sandbox Code Playgroud)

然后它仍然给了我同样的错误和一个,如下:

CA1702:Microsoft.Naming:名称空间名称"iPhone.Example"中的复合词"iPhone"作为离散术语存在.如果您的用法是单字,请将其称为"iphone".

然后我添加了一些规则如下:

<Compound>
    <Term CompoundAlternate="IPhone">iphone</Term>
</Compound>
<DiscreteExceptions>
    <Term>iphone</Term>
</DiscreteExceptions>
<Acronyms>
    <CasingExceptions>
        <Acronym>iPhone</Acronym>
    </CasingExceptions>
</Acronyms>
Run Code Online (Sandbox Code Playgroud)

但它没有任何区别.反正有没有添加这种例外?

提前致谢.

.net c# code-analysis fxcop visual-studio-2008

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

c.未使用的功能检测实用程序

我试图测量我的代码覆盖率利用率C项目包括几个库和主程序.

有没有一个实用程序可以帮助我找到我不使用的库和主程序的功能.

我想构建我的主程序未使用的函数列表(公共函数),以便在我的代码覆盖率报告中忽略它们.

c code-analysis

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

安装了SonarQube和Java插件,质量配置文件下没有规则

我已经为它安装了SonarQube 3.7.3和所有相关的Java插件.

在"质量配置文件"选项卡下,我找不到任何已开箱即用的配置规则(Android Lint除外):

在此输入图像描述

我究竟做错了什么?

系统/插件是否应该开箱即用,或者我应该手动导入它们?

我已经阅读了几次文档并没有找到任何正确的答案.

java code-analysis static-analysis sonar-runner sonarqube

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

代码分析 - 不要多次丢弃对象

当我从Visual Studio 2013分析我的代码时,出现了一些警告"不要多次丢弃对象",它还声明对象conn在对象中多次放置,但据我所知,如果我没有多次在对象中使用此对象而不是我不能实现我的目标.亲切地告诉我如何删除此警告?

这是我的代码:

private void GetData()
        {
            DataTable dt = new DataTable();
            _connString = ConfigurationManager.AppSettings["connString"];
            using (SqlConnection conn = new SqlConnection(_connString))
            {
                conn.Open();
                SqlCommand cmd = new SqlCommand("select * from ref_CourseRegistration_Users", conn);
                cmd.CommandType = CommandType.Text;
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                DataSet ds = new DataSet();
                da.Fill(ds);
                conn.Close();
                if (ds.Tables[0].Rows.Count > 0)
                {
                    grdUsers.DataSource = ds;
                    grdUsers.DataBind();
                }
            }
        }
Run Code Online (Sandbox Code Playgroud)

这是我的分析截图: 在此输入图像描述

c# asp.net code-analysis c#-4.0 visual-studio-2013

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

禁用特定项目的代码分析规则

我们有一个包含多个项目的解决方案(一些生产代码项目,一些包含我们的单元测试的测试项目)。

基本上,我们希望对所有项目(包括测试项目)启用相同的代码分析规则,以使它们保持一致。尽管如此,我只是想为我们的测试项目禁用代码分析的两个规则(CA1707和CA1702)。我可以创建一个新的.ruleset文件,其中包含与我的主规则集相同的规则,但是我不想重复这些设置。假设,我们决定将来在主规则集中启用一个规则,我希望在我的testproject-ruleset中自动启用它。

这是定义我的主规则集,包含所有解决方案范围的通用规则(因此将不包括 CA 1707和CA 1702 )并为我的生产代码设置合并规则集的正确方法,使用主规则集作为基础,并另外包含其他规则集二?

还是有一种方法可以定义我的主规则集以包含所有规则,然后从规则集中显式排除它们?

code-analysis visual-studio visual-studio-2012

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

如何满足CA2202(不要多次丢弃对象)

这个问题在您看来可能与CA2202重复,如何解决这个具有公认答案的案例.但是你可能会意识到,接受的答案有5个基于质量差的投票.此外,任何其他投票的答案实际上并不能解决问题.他们中的大多数人都解释了如何压制规则或辩论这条规则是多么错误以及为什么我们应该忽略它.由于那个规则存在,应该有一种方法来满足它,我正在寻找社区支持来解决这个问题.

我试图弄清楚如何在以下代码中满足CA2202.我理解这里的问题是,using语句还配置了encryptedStream对象.但是如果我删除了finally部分,它就会开始抛出CA2000

那么,编写它以符合CA2202和CA2000的正确方法是什么

byte[] result;

MemoryStream encryptedStream = null;
try
{
    encryptedStream = new MemoryStream();
    using (var cryptStream = new CryptoStream(encryptedStream, cryptoTransform, CryptoStreamMode.Write))
    {
        cryptStream.Write(inputInBytes, 0, inputInBytes.Length);
        cryptStream.FlushFinalBlock();
        result = encryptedStream.ToArray();
    }
}
finally
{
    encryptedStream?.Dispose();
}
string output = Convert.ToBase64String(result);
Run Code Online (Sandbox Code Playgroud)

c# code-analysis

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

使用Roslyn检测lambda表达式的长度

我想知道在使用Roslyn编译器分析代码时,怎么可能检测到长度(行数).目前,我正在制定一项禁止使用超过10行的lambdas的法律.

看下面的例子,我怎么知道简单的lambda表达式语法只有一行?

        // Data source. 
        int[] scores = { 90, 71, 82, 93, 75, 82 };

        // The call to Count forces iteration of the source 
        int highScoreCount = scores.Where(n => n > 80).Count();
Run Code Online (Sandbox Code Playgroud)

编辑 我想知道的是,我们可以在第一个示例和下面的一个示例中看到我们在lambda表达式中可以看到的行数的差异:

   1: private IEnumerable<Book> BooksPublishedBetween1991and1997()
   2: {
   3:     return Books.FindAll(Book => {
   4:  
   5:         return Book.Published >= new DateTime(1991, 01, 01) &&
   6:         Book.Published <= new DateTime(1997, 12, 31);
   7:     
   8:     });
   9: } //Link to sample :  http://www.rvenables.com/2009/03/practical-introduction-to-lambda-expressions/
Run Code Online (Sandbox Code Playgroud)

UPDATE

它在评论中指出我的问题太宽泛了.我会尽可能地尝试简单.在使用Roslyn验证用户在开发客户端软件时应具有的某些开发用途之前,我已经完成了代码分析.我有一个通用的方法来通过使用SyntaxNodeAnalysisContext对象来遍历树代码的节点(不确定它是否真的被称为).我想知道的是,当我在寻找SimpleLambdaExpressionSyntax和ParenthesisedLambdaExpressionSyntax时,是查看lambda表达式内容并确切知道代码编写行数的方法.

c# lambda code-analysis roslyn

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

如何在Roslyn中没有源代码的情况下浏览程序集的内容

Roslyn允许您CSharpCompilation从源代码中获取:

// Getting the AST node
 var tree = (CSharpSyntaxTree)CSharpSyntaxTree.ParseText("my code");

// Loading the semantic model
CSharpCompilation compilation = CSharpCompilation.Create("Compilation", new[] { tree });
Run Code Online (Sandbox Code Playgroud)

然后我得到SemanticModel:

var sm = compilation.GetSemanticModel(tree);
Run Code Online (Sandbox Code Playgroud)

我通常会尝试这样的符号:

sm.GetSymbolInfo(node);
Run Code Online (Sandbox Code Playgroud)

没有源代码

如果我没有源代码怎么办?

  • 如何在CSharpCompilation没有源代码但只有DLL的情况下获得?
  • 如何枚举DLL中的所有符号并检索有关这些类型的所有信息?

罗斯林能胜任吗?

.net c# code-analysis roslyn

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