哪个更正确,"PriceList"还是"Pricelist"?
FxCop说:CA1702:Microsoft.Naming:类型名称'PriceList'中的复合词'PriceList'作为离散术语存在.如果您的用法是单字,请将其称为"价目表".
编辑:这是一个标题,开始/结束日期等对象.
我正在使用Visual Studio 2010,在我的C++/CLI项目中有两个代码分析设置:
我的问题是关于第二种情况.
我已经启用了它,它需要很长时间才能运行并且它找不到太多.
您是否建议启用此功能?为什么?
例如,标识符如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)
但它没有任何区别.反正有没有添加这种例外?
提前致谢.
我试图测量我的代码覆盖率利用率C项目包括几个库和主程序.
有没有一个实用程序可以帮助我找到我不使用的库和主程序的功能.
我想构建我的主程序未使用的函数列表(公共函数),以便在我的代码覆盖率报告中忽略它们.
我已经为它安装了SonarQube 3.7.3和所有相关的Java插件.
在"质量配置文件"选项卡下,我找不到任何已开箱即用的配置规则(Android Lint除外):

我究竟做错了什么?
系统/插件是否应该开箱即用,或者我应该手动导入它们?
我已经阅读了几次文档并没有找到任何正确的答案.
当我从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)
这是我的分析截图:

我们有一个包含多个项目的解决方案(一些生产代码项目,一些包含我们的单元测试的测试项目)。
基本上,我们希望对所有项目(包括测试项目)启用相同的代码分析规则,以使它们保持一致。尽管如此,我只是想为我们的测试项目禁用代码分析的两个规则(CA1707和CA1702)。我可以创建一个新的.ruleset文件,其中包含与我的主规则集相同的规则,但是我不想重复这些设置。假设,我们决定将来在主规则集中启用一个规则,我希望在我的testproject-ruleset中自动启用它。
这是定义我的主规则集,包含所有解决方案范围的通用规则(因此将不包括 CA 1707和CA 1702 )并为我的生产代码设置合并规则集的正确方法,使用主规则集作为基础,并另外包含其他规则集二?
还是有一种方法可以定义我的主规则集以包含所有规则,然后从规则集中显式排除它们?
这个问题在您看来可能与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) 我想知道在使用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表达式内容并确切知道代码编写行数的方法.
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的情况下获得?罗斯林能胜任吗?