如何在以下内容中忽略特定的VS代码分析规则(例如CA1305:Microsoft.Globalization):
(假设这些选项都是可能的.)
我正在编写JVMTI代码来编写Java程序,这主要是使用函数AsyncGetCallTrace以固定的时间间隔从随机线程获取堆栈跟踪.因此,我能够获得CallTrace结构,每个结构都包含一个CallFrame结构数组,其中包含有关堆栈跟踪中各个帧的数据.具体来说,这些数据包括:jmethodID method_id(框架所在的java方法的ID),以及:jint lineno(.class文件中方法的BCI,据我所知文档).我似乎找不到使用JVMTI框架将这个"lineno"转换为相应的源代码行号的方法(参见文件jvmti.h,位于/ usr/lib/jvm/java-6-sun/include,至少在Linux上).实际上,即使在JVMTI框架之外,http://jakarta.apache.org/bcel/apidocs/org/apache/bcel/classfile/LineNumberTable.html,但即使这可能不是我想要的,并需要额外的安装,并要求我处理数据,这是由C++ JMVTI代码生成的,使用单独的Java程序.
如果有人知道如何从JVMTI内部(甚至以任何方式)将BCI转换为源代码行号,请帮忙!
[如果有人非常了解这个领域,请告诉我,因为我还有一些问题要问这个过程.]
当我在代码中添加以下行时
[DllImport("user32.dll")]
static extern void keybd_event(byte key, byte scan, int flags, int extraInfo);
Run Code Online (Sandbox Code Playgroud)
并针对Microsoft Basic Correctness Rules运行代码分析,我收到CA1901警告.基本上,它抱怨第4个参数int extraInfo在32位平台上工作正常,但在64位平台上预计会有64位整数类型.
当我将代码修改为long extraInfo时,满足64位平台要求,但32位平台需要32位整数.
如何在不压制警告的情况下解决这一难题?
我正在努力确保我的编码遵循正确的对象处理方式,因此我将这些规则强制执行为错误.但我在使用这段代码时遇到了麻烦
using System;
using System.IO;
using System.Runtime.Serialization;
using System.Xml;
class MyClass
{
public String ToXml()
{
var objSerializer =
new DataContractSerializer(GetType());
var objStream = new MemoryStream();
StreamReader objReader;
String strResult;
try
{
// Serialize the object
objSerializer.WriteObject(objStream, this);
// Move to start of stream to read out contents
objStream.Seek(0, SeekOrigin.Begin);
objReader = new StreamReader(objStream);
try
{
// Read Contents into a string
strResult = objReader.ReadToEnd();
}
finally
{
objReader.Dispose();
}
}
finally
{
if (objStream != null)
{
// objStream.Dispose(); …Run Code Online (Sandbox Code Playgroud) 我们的winform应用程序引用的Crystal库会导致代码分析出错:
警告1 CA0060:找不到间接引用的程序集"BusinessObjects.Licensing.KeycodeDecoder,Version = 13.0.2000.0,Culture = neutral,PublicKeyToken = 692fbea5521e1304".分析不需要此装配,但分析结果可能不完整.此程序集由以下引用引用:C:\ Program Files\SAP BusinessObjects\Crystal Reports for .NET Framework 4.0\Common\SAP BusinessObjects Enterprise XI 4.0\win32_x86\dotnet\CrystalDecisions.CrystalReports.Engine.dll.
在一些不同的主题中,SAP" 支持 "承认这是他们的问题(http://scn.sap.com/thread/2153539),尽管他们很快指出它不会影响他们的产品直接,所以修复它是低优先级的.它被分配了参考号ADAPT01629826,但它们似乎仍然在空中直到他们真正解决问题的时候.
这是代码分析应用程序警告(http://msdn.microsoft.com/en-us/library/ms245349.aspx),而不是正常的代码分析警告.
因此,Visual Studio不提供通常的"Suppress Message(s)"上下文菜单.我希望有一种方法可以使用GlobalSuppressions或类似的东西,但可以使用一些帮助......
即使SAP对坏装配参考没有对其产品产生功能影响是正确的,它仍然困扰着我.与原始海报一样,我不希望代码分析出现任何错误/警告.
我相信其他人已经碰到了这个 - 或者至少是类似的东西.你是怎么处理的呢?有没有办法从代码分析中排除这个特定的警告,所以它不再显示?
虽然我不喜欢硬编码排除,但它似乎比等待SAP实际推出修复更可靠的解决方案.
我正在使用一个相当简单的DI模式将我的数据存储库注入到我的控制器类中,并且我在每个模式下都获得了CA2000代码分析警告(在丢失范围之前Dispose对象).我知道为什么警告正在发生,并且通常可以弄清楚如何解决它,但在这种情况下我无法弄清楚
try/finally块来摆脱错误.在我放弃并抑制所有地方的警告信息之前,有没有更好的方法来实现同样的效果,而不会导致潜在的不受干扰的对象?
public class AccountController : Controller
{
public AccountController ()
: this(new SqlDataRepository())
{
}
public AccountController ( IDataRepository db )
{
this.db = db ?? new SqlDataRepository();
// Lots of other initialization code here that I'd really like
// to avoid duplicating in the other constructor.
}
protected override void Dispose(bool disposing)
{
if (disposing && (this.db != null))
{
IDisposable temp = this.db as IDisposable;
if (temp != null)
{
temp.Dispose();
}
} …Run Code Online (Sandbox Code Playgroud) 在生产(发布)版本中启用静态代码分析时是否存在任何性能成本?
我们的CI服务器在C#项目的调试版本上运行代码分析,而发布版本禁用静态代码分析(即未定义CODE_ANALYSIS).如果没有理由在生产版本上禁用代码分析,那么我就是在浪费时间进行调试构建.
反射器向我显示,SuppressMessage如果禁用代码分析,则排除属性,但我不希望额外属性影响运行时性能.这是启用静态代码分析的唯一效果(在Visual Studio 2013中)吗?
我正在尝试用Sonar 4.2分析我的JEE项目.这是一个使用Java和JS的多语言JEE项目.
我添加到Sonar 4.2的插件是:Java 2.1和JavaScript 1.6.
近日,声纳增加了多语言的分析,下面的文档,我已经去除了sonar.language从sonar-project.properties.但它仍然只分析Java.
我在Jenkins 1.555中使用Sonnar Runner 2.3.它在每次构建后分析项目.
我错过了什么吗?
编辑:sonar-project.properties:
# Required metadata
sonar.projectKey=myProjectKey
sonar.projectName=MyProject
sonar.projectVersion=1.0
# Path to the parent source code directory.
# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows.
# Since SonarQube 4.2, this property is optional. …Run Code Online (Sandbox Code Playgroud) 自上周五(2016年1月4日)以来,我们在公司使用sonarqube.不知何故,我们项目的一个问题全部关闭(实际上没有修复).现在该项目没有得到任何问题.我们甚至在sonarqube中删除了项目并重新开始分析,这也没有给出任何问题.
我们尝试了很多不同的东西来解决问题(甚至故意制造错误,但这也不会在sonarqube中产生任何问题)
我们正在运行最新版本的sonarqube(版本5.4),我们从TFS 2015开始我们的分析(使用sonarqube开始和结束构建步骤)
知道为什么sonarqube没有重新解决这个项目中的任何问题吗?而其他项目工作正常吗?
更新:
在我们为此版本启用代码覆盖后,会发生这种情况.但禁用代码覆盖率不会导致问题回复(甚至在删除sonarqube项目后也没有)
更新2:
开始记录
2016-04-01T13:52:46.3608006Z Executing the powershell script: D:\TFS\Agents\tasks\SonarQubePreBuild\1.0.34\SonarQubePreBuild.ps1
2016-04-01T13:52:48.8767055Z ##[debug]
2016-04-01T13:52:49.1486023Z SonarQube Scanner for MSBuild 1.1
2016-04-01T13:52:49.2491975Z Default properties file was not found at D:\TFS\Agents\tasks\SonarQubePreBuild\1.0.34\MSBuild.SonarQube.Runner-1.1\SonarQube.Analysis.xml
2016-04-01T13:52:49.2491975Z Pre-processing started.
2016-04-01T13:52:49.2501934Z Preparing working directories...
2016-04-01T13:52:49.2501934Z Checking for updates...
2016-04-01T13:52:49.4643435Z SonarQube Scanner for MSBuild Begin Step 2.0
2016-04-01T13:52:49.4653311Z 15:52:49.298 Default properties file was not found at D:\TFS\Agents\_work\2\.sonarqube\bin\SonarQube.Analysis.xml
2016-04-01T13:52:49.4812668Z 15:52:49.318 Updating build integration targets...
2016-04-01T13:52:49.5728988Z 15:52:49.34 Fetching analysis configuration settings...
2016-04-01T13:52:50.6017668Z 15:52:50.48 Generating rulesets...
2016-04-01T13:52:52.4025329Z 15:52:52.298 Provisioning …Run Code Online (Sandbox Code Playgroud) 关于如何纠正错误和低效率的matlab代码分析器有很多很好的建议,但我有时会遇到我想被分析器捕获的情况.具体来说,我正在考虑如下代码:
if numel(list > x)
...
end
Run Code Online (Sandbox Code Playgroud)
我无法想到我需要使用上述代码的任何情况,而以下代码:
if numel(list) > x
...
end
Run Code Online (Sandbox Code Playgroud)
经常使用.
我查看了代码分析器可能警告我的可能事项列表,但我没有发现这种可能性.
所以我的问题是:是否可以将自己的警告添加到代码分析器中,如果可以,如何添加?
我意识到,如果可能这可能是一项艰巨的任务,那么对于特定问题的任何替代方案或解决方案建议也将受到赞赏!
code-analysis ×10
c# ×3
.net ×2
sonarqube ×2
fxcop ×1
java ×1
javascript ×1
jvmti ×1
line-numbers ×1
matlab ×1
multilingual ×1
pinvoke ×1
sap ×1
stylecop ×1