我要求制作大量符合MISRA标准的代码.
第一个问题:有人可以根据经验对嵌入式系统编写良好的代码进行估算.我理解"写得好"的定义很差,含糊不清,所以我要求进行原始估算.
第二个问题:任何可以自定义的工具建议(即允许抑制特定警告)并在自动构建环境中使用(即命令行界面)
任何其他有用的建议可以帮助完成此任务.
谢谢伊利亚.
有时我需要改变函数的行为.有没有一种简单的方法来查找使用该函数的函数(在matlab路径上)?
如何抑制整个类型的FxCop警告?
namespace ConsoleApplication1
{
public static class Serializer<T>
{
public static string Serialize(T obj)
{
return string.Empty;
}
public static T Deserialize(string str)
{
return default(T);
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试过这个,但它对我不起作用:
[assembly: SuppressMessage("Microsoft.Design",
"CA1000:DoNotDeclareStaticMembersOnGenericTypes", Scope = "Type",
Target = "ConsoleApplication1.Serializer'1")]
Run Code Online (Sandbox Code Playgroud) 我在本周末遇到了一个问题,其中方法1调用方法2,调用方法3捕获异常,并在异常处理方法1中再次调用...
M1 - > M2 - > M3 - > M1 ....
一旦问题发生,问题变得明显且易于修复.
有谁知道在.NET应用程序中检测这样的问题的工具?
public class MultiSomething { } //CA1704:IdentifiersShouldBeSpelledCorrectly
Run Code Online (Sandbox Code Playgroud)
当我运行代码分析时,我收到一个错误,因为Microsoft不识别"Multi"这个词(他们使用它的数字IMultiValueConverter).因此,我所做的是更正CodeAnalysisDictionary.xml文件,并按照此处提供的步骤操作.但是,它似乎没有解决问题,我仍然收到代码分析警告消息.
为了确保这不是识别的单词部分的错误,我添加了另一个类和另一个异常.
public class MultiSomething { } //CA1704:IdentifiersShouldBeSpelledCorrectly
public class MutiiSomething { } //NO WARNING
<Dictionary>
<Words>
<Recognized>
<Word>Multi</Word> <-- This seems to not do anything... -->
<Word>Mutii</Word> <-- This actually does something... -->
</Recognized>
</Words>
</Dictionary>
Run Code Online (Sandbox Code Playgroud)
修复它的另一种方法是使用SuppressMessage,虽然如果我打算在整个地方使用这个词,这不是一个很好的解决方案.
[SuppressMessage("Microsoft.Naming", "CA1704:IdentifiersShouldBeSpelledCorrectly", MessageId = "Multi")]
public class MultiSomething { } //NO WARNING (Suppressed)
Run Code Online (Sandbox Code Playgroud)
微软是否真的阻止'Multi'被添加到已识别的单词中?
我有以下代码
public static byte[] Compress(byte[] CompressMe)
{
using (MemoryStream ms = new MemoryStream())
{
using (GZipStream gz = new GZipStream(ms, CompressionMode.Compress,true))
{
gz.Write(CompressMe, 0, CompressMe.Length);
ms.Position = 0;
byte[] Result = new byte[ms.Length];
ms.Read(Result, 0, (int)ms.Length);
return Result;
}
}
}
Run Code Online (Sandbox Code Playgroud)
这工作正常,但是当我对它运行代码分析时,它会出现以下消息
CA2202 : Microsoft.Usage : Object 'ms' can be disposed more than once in
method 'Compression.Compress(byte[])'. To avoid generating a
System.ObjectDisposedException you should not call Dispose more than one
time on an object.
Run Code Online (Sandbox Code Playgroud)
就我而言,当GZipStream为Disposed时,由于构造函数的最后一个参数(leaveOpen = true),它会使底层Stream(ms)保持打开状态.
如果我稍微改变我的代码..删除MemoryStream周围的'using'块并将'leaveOpen'参数更改为false.
public static …Run Code Online (Sandbox Code Playgroud) 可能重复:
Java的静态分析工具建议?
我必须找到一个可以用用户定义的规则定制的java代码分析或检查工具.实际上,我必须在我的工作区中将一些静态代码设置为非静态代码.一个工具,我可以写一些规则,如果在整个工作区遇到这样的代码,然后做一些事情.
谁能提出一些建议.
我刚刚开始使用Eclipse Indigo(来自Galileo),并且每次使用size_t时,我都会在排水沟中得到小红虫.

代码编译没有问题,但我怀疑我必须显式添加包含目录的路径.我已经有了通常的嫌疑人.我正在使用Gnu工具链对ColdFire处理器进行交叉编译,所以除了标准包括我在m68k-elf下包含的芯片的mfg
\include
\include\c++\4.2.1
\include\c++\4.2.1\include
\include\c++\4.2.1\m68k-elf
Run Code Online (Sandbox Code Playgroud)
我注意到这个工具链唯一存在的stddef.h位于lib目录中
gcc-m68k\lib\gcc\m68k-elf\4.2.1\include
Run Code Online (Sandbox Code Playgroud)
我添加了路径,父路径和父路径,\include-fixed但问题仍然存在.
当测试哪些有效,哪些无效时,我注意到了一些事情
Symbol is not resolved不会使错误消失.Syntax and Semantic Errors,触发分析,返回并重新打开然后关闭Symbol is not resolved可防止错误再次出现.我从各种异常中派生了几个类.现在vs在这个问题的标题中发出警告.
有人可以解释抑制这条规则的含义吗?
2.你能解释一下这里的规则 吗?"不要为了这个规则而禁止对异常类发出警告,因为它们必须是可序列化的,才能跨应用程序域正常工作."?
谢谢.
PS嗯,我自己也得到了答案.您确实必须将异常标记为可序列化.它们在同一AppDomain中没有此属性的情况下工作正常.但是,如果您尝试从其他域捕获它,则必须进行序列化才能跨越应用程序边界.这就是我找到的主要原因.
代码分析抛出错误CA1006:每当我们在接口契约中定义自定义定义时,不要将泛型类型嵌套在成员签名中.处理这个所谓的设计问题的最佳方法是什么.对此有任何深刻的想法.
感谢您花费宝贵的时间来完成这项工作.
例:-
Task<IList<Employee>> LoadAllEmployeeAsync();
Run Code Online (Sandbox Code Playgroud) code-analysis ×10
.net ×5
c# ×3
fxcop ×3
c ×1
c++ ×1
ca1704 ×1
casing ×1
coldfire ×1
dependencies ×1
eclipse ×1
eclipse-cdt ×1
embedded ×1
exception ×1
idisposable ×1
java ×1
matlab ×1
misra ×1
recursion ×1