我正在使用一个加载Lua脚本的闭源应用程序,并允许通过修改这些脚本进行一些自定义.不幸的是,如果其中一个Lua脚本出现问题,应用程序不能很好地生成有用的日志输出(我得到的全部是'脚本失败').
我意识到动态语言几乎可以抵抗静态代码分析,例如C++代码的分析方式.
我希望,有一个工具可以通过Lua脚本运行,例如警告未在特定脚本的上下文中定义的变量.
基本上我正在寻找的是一个脚本工具:
local a
print b
Run Code Online (Sandbox Code Playgroud)
输出:
warning: script.lua(1): local 'a' is not used'
warning: script.lua(2): 'b' may not be defined'
Run Code Online (Sandbox Code Playgroud)
对大多数事情来说,它只能是警告,但这仍然有用!这样的工具存在吗?或者也许是一个具有内置功能的Lua IDE?
谢谢,克里斯
你使用哪个静态代码分析器(如果有的话)?我一直在使用PyLint for Python,我对它非常满意,现在我需要类似的C代码.
你有多少输出你必须抑制正常的日常使用?
Visual Studio /analyze为C/C++ 添加了代码分析(),以帮助识别错误的代码.这是一个非常好的功能,但是当您处理旧项目时,您可能会被警告的数量所淹没.
大多数问题都在产生,因为旧代码在方法或函数的开头做了一些ASSERT.
我认为这是代码中使用的ASSERT定义(来自afx.h)
#define ASSERT(f) DEBUG_ONLY((void) ((f) || !::AfxAssertFailedLine(THIS_FILE, __LINE__) || (AfxDebugBreak(), 0)))
Run Code Online (Sandbox Code Playgroud)
示例代码:
ASSERT(pBytes != NULL);
*pBytes = 0; // <- warning C6011: Dereferencing NULL pointer 'pBytes'
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种简单,清洁和安全的解决方案来解决这些警告,这并不意味着禁用这些警告.我是否提到当前代码库中出现了很多事件?
当我通过Visual Studio的代码分析实用程序运行一些代码时,我收到一个警告,我不确定如何解决.也许这里的某个人遇到了类似的问题,解决了这个问题,并愿意分享他们的见解.
我正在编写DataGridView控件中使用的自定义绘制单元格.代码类似于:
public class DataGridViewMyCustomColumn : DataGridViewColumn
{
public DataGridViewMyCustomColumn() : base(new DataGridViewMyCustomCell())
{
}
Run Code Online (Sandbox Code Playgroud)
它会生成以下警告:
CA2000:Microsoft.Reliability:在方法'DataGridViewMyCustomColumn.DataGridViewMyCustomColumn()'中,在对所有引用超出范围之前,对对象'new DataGridViewMyCustomCell()'调用System.IDisposable.Dispose.
我知道它警告我DataGridViewMyCustomCell(或它继承自的类)实现了IDisposable接口,并且应该调用Dispose()方法来清理DataGridViewMyCustomCell声明的任何资源.
我在互联网上看到的示例建议使用块来限制对象的生命周期并让系统自动处理它,但是当移动到构造函数的主体中时无法识别base,因此我无法编写使用阻止它...我不确定我还想要做什么,因为不会指示运行时释放仍然可以在以后在基类中使用的对象?
我的问题是,代码是否正常?或者,如何重构以解决警告?除非确实合适,否则我不想压制警告.
如果我的所有方法都需要公开一个集合,那么我需要使用Linq扩展.ToList(),几乎我需要在所有代码中使用列表或用户集合.
如果是这种情况,.ToList()忽略规则吧?或者是否有一种技术,如复制列表,以修复违规并仍然返回列表?
有没有任何开源工具或库可用于简单的自定义程序集类语言(用于自动生成的程序)的静态代码分析以及它们能够做什么(检测未使用的代码/寄存器,为代码段提供高级表达式,调用图形)等等.)?该领域确实存在哪些算法?
我想从Java Bytecode生成程序依赖图(PDG)以进行进一步的程序分析.由于这是旧的(论文来自'87)和可能是众所周知的技术,我认为适当的工具将很容易获得 - 但我无法找到它们.
事实上,广泛的搜索只出现了一些结果:
所以我的问题如下:那里有没有活着的维护实现?有没有人有上述任何一个项目的经验?你会推荐什么?
感谢您的投入,非常感谢!
我有一个包含大量C文件的巨型C项目.我必须找到所有内循环.我确信项目中没有任何O(n³)块,因此只能找到O(n²)-compexity块(循环中的循环).
是否可以使用grep找到所有内部循环?如果是,我可以使用什么正则表达式来查找所有类型的内部循环,例如{for,for},{while,for},{for,while},{do,while}等等?如果没有,是否有任何简单的unix-way方法(可能是多个greps或一种awk)?
我想请求帮助.我安装了插件并成功添加了SonarQube服务器.我升级到4.1.2版.我使用IntelliJ IDEA 13.0.2.我也成功地联系了项目并出现了检查警告.但是当我解决问题时,状态不会更新.
我还通过名称'SonarQube issues'进行检查.然而,在运行检查后,警告也在那里,代码被修复了.在我看来同步失败了.有什么想法,请问什么todo?
我想通过SonarQube web api获取SonarQube项目质量门的当前状态,但我没有看到质量门作为文档中的可用度量标准.访问此信息以包含在报告中的最佳方式是什么?
我正在使用SonarQube API来访问有关项目分析的信息.API的输出用于生成每周报告.我可以使用以下SonarQube API调用访问有关每个项目的信息.
http://my-sonar-site/api/resources/index/?resource=$PROJECT_KEY&metrics=$METRIC_LIST
Run Code Online (Sandbox Code Playgroud)
度量标准列表是从SonarQube API文档中填充的
http://docs.sonarqube.org/display/SONAR/Metric+definitions
这得到了我想要的一切,除了质量门的状态.
code-analysis ×10
c ×2
c# ×2
java ×2
sonarqube ×2
assembly ×1
assert ×1
c++ ×1
ca2000 ×1
constructor ×1
fxcop ×1
grep ×1
idea-plugin ×1
linq ×1
lua ×1
machine-code ×1
regex ×1
reliability ×1
visual-c++ ×1