我想从Java Bytecode生成程序依赖图(PDG)以进行进一步的程序分析.由于这是旧的(论文来自'87)和可能是众所周知的技术,我认为适当的工具将很容易获得 - 但我无法找到它们.
事实上,广泛的搜索只出现了一些结果:
所以我的问题如下:那里有没有活着的维护实现?有没有人有上述任何一个项目的经验?你会推荐什么?
感谢您的投入,非常感谢!
我正在尝试让msbuild像在VS中一样输出代码分析信息.我在VS中有一个名为"CodeAnalysis"的项目配置,用于在构建时运行代码分析(使用最小规则集).无论如何这在VS中运行良好,但是当我从命令行运行msbuild时它只显示基本的构建警告,并且它根本不运行代码分析.任何人都知道为什么会这样吗?
项目文件中的配置:
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'CodeAnalysis|AnyCPU'">
<OutputPath>bin\</OutputPath>
<CodeAnalysisRuleSet>C:\Program Files\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\Rule Sets\MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
<RunCodeAnalysis>true</RunCodeAnalysis>
Run Code Online (Sandbox Code Playgroud)
命令行:
msbuild Solution.sln /p:Configuration=CodeAnalysis /t:Rebuild
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
msbuild Solution.sln /p:RunCodeAnalysis=true /t:Rebuild
Run Code Online (Sandbox Code Playgroud) 您知道eclipse的所有引用功能(搜索>参考>工作区或Ctrl-Shift-G)吗?我该如何以编程方式运行?
我有一个庞大的代码库,我需要审计安全违规,并需要链接大约十几个条件.
是否有可以用Java分析大型项目(我有1GB的源文件)的库?这是我需要回答的问题:
我可以在一天内手动执行此操作,但宁可花2写一个漂亮的脚本来为我做这项工作.
我可以用来编写Eclipse的这些常见任务的脚本上的任何线索吗?理想情况下,我想执行命令行,因此它们可以重复和编写脚本,但显然会采取我能得到的.
java eclipse intellij-idea intellij-plugin static-code-analysis
我不想在Python模块中使用"print"语句,因为我们将使用记录器.
我正在尝试生成一个脚本来检查带有pylint的模块.但是,pylint当前不会将此检测为警告或错误.
我想根据我们的内部Python编程标准将"打印"调用检测为错误或警告.
我怎样才能做到这一点?
我发现--suppress=unmatchedSuppression仅抑制 cppcheck 选项中不匹配的抑制类型,但不抑制不匹配的内联抑制。
这是预期的行为吗?
测试.c
第4行是错误的。应该予以警告arrayIndexOutOfBounds
7号线还可以。不应该被警告arrayIndexOutOfBounds
我cppcheck-suppress对两条线都有内联。
1 void f() {
2 char arr[5];
3 // cppcheck-suppress arrayIndexOutOfBounds
4 arr[10] = 0;
5
6 // cppcheck-suppress arrayIndexOutOfBounds
7 const char ok[] = "this line is ok";
8 }
Run Code Online (Sandbox Code Playgroud)
情况1
Suppress cstyleCast,它在代码中不存在。
cppcheck --inline-suppr --force --enable=all
--xml-version=2 --suppress=cstyleCast test.c
2>cppcheckresults.xml
Run Code Online (Sandbox Code Playgroud)
我收到警告(以及其他不相关的警告)
unmatchedSuppression: arrayIndexOutOfBounds在test.c line 7(如预期)
unmatchedSuppression: cstyleCast在* line 0(如预期)
情况2
与情况 1 相同,但有附加--suppress=unmatchedSuppression选项
cppcheck --inline-suppr …Run Code Online (Sandbox Code Playgroud) 我想使用自定义助手来简化参数验证,就像这样。
public static void ThrowIfNull(this object value, string parameterName)
{
if (value == null)
{
throw new ArgumentNullException(parameterName);
}
}
Run Code Online (Sandbox Code Playgroud)
但是,静态代码分析当然不知道我在使用此帮助程序时确实验证了公共方法中的输入,因此它会给我CA1062有关未验证公共方法参数的错误。
特别的问题是这个。
有没有办法教代码分析器这个助手处理参数空验证?这个问题的正确解决方案是什么?
有没有办法在Jenkins中设置Findbugs(或任何其他静态代码分析工具)来分析传入的拉取请求并将结果与主分支进行比较?我的目标是拒绝拉取请求,这会增加静态代码分析问题的数量.
请考虑以下示例代码:
data = []
try:
print data[0]
except IndexError as error:
print error.message
Run Code Online (Sandbox Code Playgroud)
在代码中没有任何语法错误(使用Python2.7),除非你打开警告并运行python ,你会看到DeprecationWarning:
$ python -W always test.py
test.py:5: DeprecationWarning: BaseException.message has been deprecated as of Python 2.6
print error.message
list index out of range
Run Code Online (Sandbox Code Playgroud)
仅供参考,这是因为.messagepython2.6已弃用并在python3中被删除.
现在,我想通过使用静态代码分析工具找到项目中所有.message在任何异常实例上调用的位置.作为最终目标,我计划将此检查作为日常构建和测试以及代码质量检查任务的一部分运行,并在语法仍然使用时引发错误.
可能吗?有什么事情pylint,pyflakes或其他代码分析工具能够?
我发现该pep8工具实现了几个类似的检查,例如,has_key()使用检查:
$ cat test.py
my_dict = {}
print my_dict.has_key('test')
$ pep8 test.py
test.py:2:14: W601 .has_key() is deprecated, use 'in'
Run Code Online (Sandbox Code Playgroud)
作为替代解决方案,我可以将所有警告视为错误(如此 …
我搜索了很多网站,但没有找到任何比较 Ktlint 与 Detekt 的信息。我需要知道差异,而不是共同特征。我想选择一个,但我不会亲自测试它们。有人可以给我一些差异吗?
我正在使用 Go 1.16.4。我正在尝试处理这样的代码:
func (pool *myConnPool) GetPooledConnection() (*myConnection, error) {
go func() {
conn, err := pool.createConn()
if err != nil {
return
}
pool.connections <- conn
}()
select { // <<<< golint warning here
case conn := <-pool.connections:
return pool.packConn(conn), nil
}
}
Run Code Online (Sandbox Code Playgroud)
我收到以下 Go linter 警告:should use a simple channel send/receive instead of select with a single case (S1000)在代码中标记的位置。谁能解释一下如何解决这个问题吗?我对 Go 通道还不太有经验。