标签: code-analysis

如何找到Java类中使用某个方法的所有执行路径?

给定一个java方法,我需要确定从入口类到目标方法的所有执行路径。

例子:

目标方法:MyClass.myMethod()

执行路径:

EntryClass --calls--> Class1.method1() --calls--> Class2.method1() --calls--> Class2.method2() --calls--> MyClass.myMethod()

EntryClass --calls--> Class1.method1() --calls--> Class3.method1() --calls--> Class2.method2() --calls--> MyClass.myMethod()

EntryClass --calls--> Class3.method1() --calls--> MyClass.myMethod()

ETC。

是否有任何工具可以对我的代码库运行静态分析以确定所有这些代码执行路径?

java code-analysis static-analysis execution

5
推荐指数
1
解决办法
2718
查看次数

适用于 Mac 和 MPI 的 C++ 代码分析/分析

我正在寻找 MacOS 上 C++ 的代码分析/分析工具。我知道已经有关于这个线程的帖子,但是我需要的应用程序非常具体,所以也许有人可以给我一些更具体的建议。

所以这是我的问题:我正在用 C++ 编写科学代码(硕士项目),所以它是一个纯粹的控制台应用程序,没有给出交互性。该代码应该在大规模并行计算机上运行,​​因此我使用 MPI。然而,现在我还没有针对可扩展性进行优化,而只是针对单核性能进行优化。由于我不想将整个程序重写为串行程序,因此我只使用带有 1 个线程的 MPI。它工作得很好,但优化器显然需要能够处理这个问题。

我想分析什么?嗯,从某种意义上说,代码并不是很复杂,因为它有一个非常简单的结构,因此我需要的只是程序在某些函数上花费多长时间的列表,这样我就知道它在哪里损失了最多的时间,并且我可以测量我的优化速度加快了。

感谢所有的想法

c++ macos profiling code-analysis mpi

5
推荐指数
1
解决办法
3403
查看次数

JNI签名代码分析

有没有静态代码分析工具可以发现 JNI(方法)签名字符串中的错误?例如,以下代码在语法上不正确(完全限定类名后缺少分号):

(*env)->GetMethodID(env, someClassId, "aMethod","(ILfoo/bar/TheClass)V");
Run Code Online (Sandbox Code Playgroud)

编辑:代码分析工具不需要检查 foo/bar/TheClass 是否存在,而只需根据 JNI 规范检查字符串的语法是否有效。

这个问题的背景是,上面的代码触发了分段错误。这始终是一种烦人的调试情况,但在这种情况下静态分析应该非常容易,可以节省大量时间。

c java java-native-interface code-analysis

5
推荐指数
1
解决办法
430
查看次数

Jenkins 上除了 Coverity 之外还有其他选择吗?

我在我的 ubuntu 桌面上运行 jenkins。在推送我的 C++ 代码之前,我需要一份静态代码分析报告。我发现保险的成本很高。我正在寻找免费的分析工具。除了 Coverity 还有其他选择吗?

c++ code-analysis static-code-analysis jenkins-plugins

5
推荐指数
1
解决办法
4591
查看次数

使用 IntelliJ 社区获取 AST

我正在构建一个小型 Java 代码分析工具,想知道是否可以使用令人惊叹的 IntelliJ 编译器来获取 Java 项目的 AST?

IntelliJ几年前在 Apache 2 许可证下开源了社区版本。该项目还可以用作 Java 独立项目中的库(而不是完整 IDE 的插件)来分析 Java 项目吗?Git 存储库相当大,我很感激任何从哪里开始的提示或链接。

(我已经阅读过有关Eclipse JDT 的内容,但创建自己的 Mini-ANTLR-Java 解析器比让 Eclipse JDT 为我工作要容易得多。但如果我可以使用更复杂、始终最新的,那就太棒了-我的项目的 Java AST 的最新版本。所以我的希望寄托在 IntelliJ 编译器上。)

java parsing code-analysis intellij-idea abstract-syntax-tree

5
推荐指数
0
解决办法
1916
查看次数

我可以抑制特定的 C6031 警告吗?CString::LoadString

我已阅读此链接,因此对警告的含义有基本的了解。

当我对 MFC 项目运行代码分析时,我收到一系列警告:

d:\my programs\2017\meetschedassist\meeting schedule assistant\synchexclusionsdlg.cpp(295): warning C6031: Return value ignored: 'ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::LoadStringW'.
d:\my programs\2017\meetschedassist\meeting schedule assistant\synchexclusionsdlg.cpp(297): warning C6031: Return value ignored: 'ATL::CStringT<wchar_t,StrTraitMFC<wchar_t,ATL::ChTraitsCRT<wchar_t> > >::LoadStringW'.
Run Code Online (Sandbox Code Playgroud)

例如,它抱怨这个代码片段:

if (iImage == IMG_CHECKED)
    strText.LoadString(IDS_STR_YES);
else
    strText.LoadString(IDS_STR_NO);
Run Code Online (Sandbox Code Playgroud)

我已阅读LoadString的帮助文档,讽刺的是他们的示例是这样做的:

CAtlString s;
s.LoadString(IDS_APP_TITLE);   
Run Code Online (Sandbox Code Playgroud)

他们也不测试返回值。:)

现在,我意识到我可以尝试修复我的代码并测试返回值 - 这将花费我很长时间!我意识到我可以下意识地忽略这些警告。

但是是否有可能在分析过程中抑制这个特定的警告(关于C6031 CString::LoadString)?


更新

我尝试将其添加到我的stdafx.h(基于评论):

#pragma warning( disable : 6031)
Run Code Online (Sandbox Code Playgroud)

这当然有效。但我希望只是抑制 6031 错误CString::LoadString。

mfc code-analysis visual-studio-2017

5
推荐指数
1
解决办法
3829
查看次数

获取JSON字符串的抽象语法树

问题描述

我正在编写一个简单的JSON分析器,以实现JSON字符串的语法分析。我收到随机结构 JSON 字符串,并且想要导出语法结构。因此,我想要一个树结构,它描述 JSON 字符串的格式(键、值、数组等)和每个元素的类型。我已经找到了JSON的语法定义(如下所述)

object
    {}
    { members } 
members
    pair
    pair , members
pair
    string : value
array
    []
    [ elements ]
elements
    value
    value , elements
value
    string
    number
    object
    array
    true
    false
    null 
Run Code Online (Sandbox Code Playgroud)

例子

JSON 字符串:

{"widget": {
    "null": null,
    "window": {
         153: "This is string",
        "boolean": true,
        "int": 500,
        "float": 5.555
    }
}}    
Run Code Online (Sandbox Code Playgroud)

我想要得到类似的东西:

{ KEY_STR : {
     KEY_STR : null
     KEY_ARRAY : {
        KEY_INT: VALUE_STR,
        KEY_STR: VALUE_BOOL,
        KEY_STR: VALUE_INT,
        KEY_STR: VALUE_FLOAT …
Run Code Online (Sandbox Code Playgroud)

java json code-analysis abstract-syntax-tree gson

5
推荐指数
1
解决办法
5354
查看次数

各种 Microsoft.CodeQuality.* 分析器之间有什么区别?

我对 .NET Core 的各种代码分析器有点困惑。

如果您创建默认的 .NET Core Web 项目,您将获得Microsoft.CodeAnalysis.Analyzers.

另外,在NuGet上,还有Microsoft.CodeQuality.Analyzers(注意名称上的细微差别)。安装后,我发现它包含了更多的规则。

最后,还有Microsoft.CodeAnalysis.FxCopAnalyzers,它似乎包含Microsoft.CodeQuality.Analyzers。

Microsoft.CodeAnalysis.Analyzers那么、Microsoft.CodeQuality.Analyzers和 之间到底是什么关系呢Microsoft.CodeAnalysis.FxCopAnalyzers?我的项目应该有什么?

PS 创建新项目后,我在 NuGet 中搜索Microsoft.CodeAnalysis.Analyzers包(该包已存在于我的项目中)。它找到它并指出我的项目有 v1.1 并且需要将其升级到 v2.9.4。然而,根据 NuGet 的说法,v1.1 于 2015 年发布。这没有任何意义,因为我使用的是 VS2019,并且该分析器在 2015 年至 2019 年间发布了大量版本。

但是,当我将软件包升级到 2.9.4 时,分析器具有与 v1.1 相同的 3 条规则。那么我到底要升级什么?

.net c# code-analysis .net-core roslyn-code-analysis

5
推荐指数
1
解决办法
1697
查看次数

SonarQube - 创建项目后如何再次运行该项目的代码分析

我已经创建了一个项目并运行代码分析。后来我对规则做了一些修改,并尝试再次运行代码分析。但是在http://localhost:9000/projects的 UI 中,我找不到任何菜单或按钮来显示运行代码分析的说明。有人可以帮忙吗?

\n\n
\n\n

更新于 25/02/2020

\n\n

例如,我正在将 SonarQube 用于 .NET (C#) 项目。当我进行代码分析时,按照 SonarQube 的建议,我将下面的 3 个命令复制到命令行中。

\n\n

SonarScanner.MSBuild.exe 开始 /k:"" /d:sonar.host.url=\xe2\x80\x9c http://localhost:9000 \xe2\x80\x9d /d:sonar.login=""

\n\n

MsBuild.exe /t:重建

\n\n

SonarScanner.MSBuild.exe 结束 /d:sonar.login=""

\n\n

如果 SonarQube 可以在http://localhost:9000/dashboard?id=的 UI 中显示这些命令,那就太好了。否则,很难记住这些命令,再次运行代码分析的唯一方法是在 SonarQube UI 中创建一个新项目。目前,我在创建项目后将这 3 个命令复制到 .bat 文件中。每次在项目配置发生一些更改后再次运行此 .bat 文件。

\n

code-analysis sonarqube

5
推荐指数
1
解决办法
1万
查看次数

从 Azure Build Pipeline 中的 FxCop 代码分析器(Roslyn)生成报告

我想从 Build Pipeline 生成代码分析报告。我最近从 Fxcopcmd.exe 转移到基于 Roslyn 的分析器。我能够在构建日志中看到警告,但我无法获得可与 Comeplete 团队共享的单独报告。

我已经添加了用于运行构建期间使用的代码分析步骤的 Nuget 包,如下所示

- task: VSBuild@1
  displayName: 'Build solution **\MySolution.sln'
  inputs:
    solution: '$(Parameters.solution)'
    vsVersion: 15.0
    msbuildArgs: '/t:rebuild'
    platform: '$(BuildPlatform)'
    configuration: '$(BuildConfiguration)'
Run Code Online (Sandbox Code Playgroud)

.net msbuild code-analysis roslyn-code-analysis azure-devops

5
推荐指数
1
解决办法
380
查看次数