问题标签 [static-code-analysis]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
620 浏览

asp.net-mvc-2 - 排除视图中“找不到资源”的 ReSharper 错误

我有一个MVC2 应用程序并使用ReSharper 6.1 - 我已经大量定制了代码检查严重性并编辑了它决定显示为错误、警告、建议和提示的内容,但我似乎无法阻止它告诉我特定资源是使用HTMLHelper时丢失。

因此,例如:

<img src="<%:Url.Content("~/Resources/Image12345.jpg")%>" />

我在与上面类似的每一行都收到一个错误,告诉我上面的路径不存在 - 在设计时它不存在,但在构建过程中,所有这些视图都被 XCOPY 到一个包含所有资源,例如图像,因此在运行应用程序时,所有这些路径分辨率都是正确的。因为在一个团队中工作,其中一些人是 ReSharper 的新手,我想排除这个错误,因为它可能会导致我的同事开始摆弄一些没有损坏的东西。

ReSharper 显然不知道这不是问题,也无法知道这就是我要关闭这一特定分析的原因。总的来说,我发现 ReSharper 是可大规模定制的,并且在版本 6.1 中的检查严重性下有一些新的MVC选项,这些选项已被证明是有用的 - 但我看不出为此关闭检查的方法。

有人有什么想法吗?

0 投票
2 回答
484 浏览

c++ - VS11 代码分析提示?

在 VS11 中运行 C++ 的代码分析时,我得到了很多误报。例如,我有几十个开关,它说我的指针可能为空。开关中的所有情况(至少在一种情况下)都设置了指针,并且默认调用了我的函数,该函数抛出了一个 assert(0) 和异常。我猜由于断言和异常在一个方法中,它没有意识到指针不可能为空。我如何提示或修复它,以免出现这样的误报?

0 投票
3 回答
213 浏览

objective-c - 在 XCode 3.2 中静态分析代码时出现误报

我刚刚遇到了 XCode 3.2 的 XCode 静态代码分析器的问题。它向我展示了一个潜在的泄漏,我认为这是不合理的。我只是想和其他人核实一下,确保它真的是误报。

这是主要代码(在某些函数体中):

这是上面调用的验证方法:

XCode 告诉我 doc 的分配是一个潜在的泄漏,因为 validate 方法可能返回 NO 并且 release 不会被发送到 doc。但事实上,如果初始化失败,initWithData:options: 会返回nil,并没有造成任何伤害。文档甚至说明了这一点。

那么,专家们是怎么说的呢?假阳性与否?

最好的,哈拉尔

0 投票
2 回答
1659 浏览

code-analysis - 在 Visual Studio 11 中配置代码克隆

我真的很喜欢 VS11 的新内置功能来查找“代码克隆”,但似乎没有任何方法可以配置它。

一个例子是只向我展示 5 行或更多行的精确克隆。

现在它给出了 Exact、Strong、Medium 和 Weak 匹配,看起来它们是 10 行或更多。如果我可以配置它,它将有助于完成克隆工作,它会找到我确信多年来已被剪切和粘贴的那些小方法。

更新 这是 Release Preview 版本的文档中关于如何配置排除生成文件的能力的注释

从代码克隆分析中排除 T4 模板生成的文件

  1. 将模板放在 Visual Studio 项目的子目录中。将其命名,例如 GeneratedFiles。

  2. 向项目中添加一个新的文本文件,并将其名称和扩展名更改为 t4Exclusions.codeclonesettings

  3. 更改文件内容如下:

<CodeCloneSettings> <Exclusions> <File>生成文件*.cs</File> </Exclusions> </CodeCloneSettings>

更新- 2012 年 8 月 27 日我在代码克隆文档中找到了这个,它在早期版本中没有。这是查找长度小于 10 行的克隆的一种方法。

查找特定代码片段的克隆

1. 突出显示方法或 get/set 定义中的代码片段。

注意 - 您可以找到语句的克隆,但不能找到字段、方法或属性签名等声明。

2. 在片段的快捷菜单上,选择 Find matching clones in solution。

当您想知道您的解决方案中是否已经存在类似的方法或片段时,请使用此方法。

0 投票
3 回答
153 浏览

java - 可以通过禁止 import 语句和 java.* 字符串来阻止对标准 java 库的访问吗?

假设我想允许人们在我的服务器上运行简单的控制台 java 程序,而无法访问文件系统、网络或其他 IO,除非通过我自己的高度受限的 API。但是,我不想深入了解操作系统级别的限制,因此为了当前的讨论,我想考虑代码级别的清理方法。

因此,假设我尝试按如下方式实现此限制。我将禁止所有“import”语句,除了那些明确列入白名单的语句(假设“import SanitizedSystemIO. ”是允许的,而“import java.io. ”是不允许的),我将禁止在代码中的任何地方使用字符串“java.*”。因此,这样用户将能够编写引用来自 SanitizedSystemIO 的 File 类的代码,但他将无法引用 java.io.File。这样,用户被迫使用我的净化包装 api,而我自己的框架代码(它将与用户的代码一起编译和运行,例如为了提供 IO 功能)可以访问所有常规的 java api。

这种方法会奏效吗?或者有没有办法破解它来访问标准的java api?

ETA:好的,首先,它当然应该是 java.* 字符串而不是 system.*。我认为在 C# 中,基本上......

其次,好的,人们说,“使用安全管理器”或“使用类加载器”方法。但是,如果有的话,代码分析方法有什么问题?在我看来,它的一个好处是纯粹的 KISS 简单性——而不是找出所有要在 SecurityManager 中检查和清理的东西,我们只允许一个小的功能白名单并阻止其他所有内容。在实现方面,这对于对 java 知识很少的人来说是一个微不足道的练习。

并重申我最初的问题,那么这可以被黑客入侵吗?尽管有这样的代码限制,是否有一些 Java 语言结构允许访问底层 api?

0 投票
1 回答
908 浏览

xpath - PMD xpath 教程

我即将为我的 Java EE 代码库编写自定义规则,谁能帮忙从哪里开始编写 xpath 规则?有没有可用的完整教程?

0 投票
4 回答
1603 浏览

python - Python中的静态代码分析?

您可以为 Python 推荐哪些有用的静态代码分析。我相信它们对于重构代码很有用。我知道

  • 模块依赖的蛇食
  • pycallgraph 用于动态调用图
  • 错误的 pylint

有静态调用分析器吗?如果我想编写自定义程序,哪种方法最简单?

您还能想到哪些其他类型的静态代码检查?或者甚至是一些像 ABC 这样的 Python 魔法?

编辑:我发现使用http://docs.python.org/3.3/library/ast.html甚至http://www.astroid.org/都可以用来编写一些自定义解析器。然后可以使用 graphviz 来可视化,甚至可以使用 PlantUML 来制作 UML 图。

0 投票
1 回答
1615 浏览

c# - 应如何配置声纳以使用 StyleCop 4.7

我正在尝试让声纳与 StyleCop 4.7 一起使用,但遇到了一些问题。

1) 当我在 Sonar 设置中设置 StyleCop 的位置时,Sonar 无法运行,因此我的 CI 构建失败。Sonar 似乎无法找到作为 StyleCop 4.7 的一部分编译的程序集

2) 我看不到获取 4.7 版本中可用但 4.4 中不可用的规则的方法。意思是,我想启用 4.7 版中可用的规则,但不显示为在声纳的质量配置文件中启用和优先级的选项。

我正在尝试对 C# 项目运行声纳分析,并且它使用默认版本的 c# 插件成功运行。我正在运行 Sonar 的 2.13.1 版本。任何帮助将不胜感激。

0 投票
3 回答
1765 浏览

code-analysis - 我们如何在 Visual Studio 11 Beta 中更正或抑制来自代码分析的 CA0503 和 CA0505 消息

当我在一个相当简单的项目上运行代码分析时,我立即得到“CA0503 问题运行代码分析”和“CA0505 问题运行代码分析”违规。 CA0503 文档页面说,“该属性已弃用。使用替代属性。” 但是,它没有指向替代属性、如何处理错误或如何抑制错误。显然,这是一个隐藏的 Microsoft 规则集,您不能只是关闭该规则。

CA0505 文档页面类似地指出,“已弃用的属性将被忽略,因为已定义取代的属性。” 它继续说,“当指定的已弃用和替代代码分析属性都包含项目或构建配置文件中的值时,会生成警告 CA505。要解决此问题,请删除已弃用的属性。”

在整个解决方案中搜索 CA0503 或 CA0505 的文本不会返回任何内容。但是,搜索“CodeAnalysisRules”会在我的两个项目文件中找到一行:

<CodeAnalysisRules>-Microsoft.Design#CA2210</CodeAnalysisRules>

通过类似的文本搜索未找到“CodeAnalysisRuleSet”的对应行。

有没有其他人遇到过这种情况,也许找到了纠正或抑制这些消息的方法?

0 投票
1 回答
3627 浏览

code-coverage - Sonar、Sonar-runner、Gallio 和 NCover ... Gallio 不运行 :(

有没有人真正设法让声纳跑步者与 Gallio 和 Ncover 合作?我已经尝试了书中的所有组合,并且在运行过程中它一直告诉我

“INFO spcgGallioSensor - Gallio 不会执行,因为没有测试项目。”

如果我单独运行所有内容(NCover,Gallio),它们会给出结果,而不是使用 Sonar-runner

请帮忙!!!

这就是我的配置看起来像 btw (sonar-project.properties 文件)

更新

这是声纳创建的覆盖范围:

这是手动覆盖: