首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

7个顶级静态代码分析工具

作者丨Saif Sadiq 策划丨田晓旭 静态代码分析或源代码分析是指使用静态代码分析工具对软件的“静态”(不运行的) 代码进行分析的一种方法,找出代码潜在的漏洞。...2DeepSource DeepSource 可以帮你在代码评审期间自动发现并修复代码的问题。它可以与 Bitbucket、GitHub 或 GitLab 帐户集成。...付费用户 12 美元 / 月起算。 3SonarQube SonarQube 是一种很流行的静态分析工具,用于持续检查代码库的代码质量和安全性,并在代码评审期间指导开发团队。...4Codacy Codacy()是一个静态分析工具,可以帮助开发人员处理技术债务并提高代码质量。Codacy 监控每一次代码提交和 PR 的代码质量。...https://www.codacy.com 关键特性 代码评审自动化; 代码质量分析; 安全代码分析; 集群安装 / 多个实例。

3.2K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    CA3007:查看公开重定向漏洞的代码

    备注 对于此规则跨方法调用分析数据流的深入程度存在限制,此限制是可配置的。 若要了解如何在 EditorConfig 文件配置此限制,请参阅分析器配置。...配置代码进行分析 使用下面的选项来配置代码库的哪些部分要运行此规则。 排除特定符号 排除特定类型及其派生类型 你可以仅为此规则、为所有规则或为此类别(安全性)的所有规则配置这些选项。...有关详细信息,请参阅代码质量规则配置选项。 排除特定符号 可以分析排除特定符号,如类型和方法。...例如,若要指定规则不应针对名为 MyType 的类型的任何代码运行,请将以下键值对添加到项目中的 .editorconfig 文件: dotnet_code_quality.CAXXXX.excluded_symbol_names...排除特定类型及其派生类型 可以分析排除特定类型及其派生类型。

    86500

    如何在PostgreSQL更新大表

    本文来源:www.codacy.com/blog/how-to… 在Postgres更新大型表并不像看起来那样简单。如果您的表包含数亿,您将发现很难及时进行简单的操作,例如添加列或更改列类型。...在这篇博客文章,我将尝试概述一些策略,在管理大型数据集的同时最大程度地减少表不可用性。 一般准则 当您更新列的值时,Postgres将在磁盘写入一个新,弃用旧,然后继续更新所有索引。...更新行时,不会重写存储在TOAST的数据 Postgres 9.2开始,在某些数据类型之间进行转换不需要重写整个表。例如:VARCHAR(32)转换为VARCHAR(64)。...例如,您可以设置一个规则,在开始数据迁移之前记录已删除的: CREATE RULE deleted_rule AS ON DELETE TO tbl DO INSERT INTO tbl_deletes...VALUES ( OLD.id ); 迁移结束时,您只需tbl_deletes读取ID,然后在新表上将其删除。

    4.7K10

    Modelsim的仿真之路(代码覆盖率)

    ,然后分析的结果会那个小图标的形式显示出来,✔或者❌,然后有对应的右下标字母,字母和刚刚介绍的一个意思,还会有个E的字样,就是被排除在覆盖测试之外产生的一些状态。...可以在这选对应的覆盖测试 稍微运行一下,做语句覆盖测试,结果发生改变 run 1ms 在Files的窗口也能看到相应的代码覆盖率 打开sim的窗口,选中不同的目标,在右侧的分析窗口会变成相应的代码覆盖情况...直接双击对应的目标,会直接显示其在源码的位置 接着在分析界面将覆盖类型换成Toggle,然后选中test_sm,分析界面再点dat,详细说明的界面就会出现对应的跳转情况 要是没这个Details...这时可以看到相应跳变的静态指示 04 在Files的界面双击beh_sram.v打开源码界面,然后看到40,条件覆盖没满足的情况,点Xc那个图标,在详细界面可以看到对应的描述 接着将覆盖次数显示出来...06 完成代码覆盖的测试后,可以将其导出,Tools > Coverage Report > Text ,类型就看自己需要了 (也可以在Instance, sim, files 界面右键找对应的导出键)

    1.2K10

    CA3006:查看进程命令注入漏洞的代码

    若要了解如何在 EditorConfig 文件配置此限制,请参阅分析器配置。 如何解决冲突 尽可能避免启动基于用户输入的进程。 根据已知安全的一组字符和长度验证输入。...配置代码进行分析 使用下面的选项来配置代码库的哪些部分要运行此规则。 排除特定符号 排除特定类型及其派生类型 你可以仅为此规则、为所有规则或为此类别(安全性)的所有规则配置这些选项。...有关详细信息,请参阅代码质量规则配置选项。 排除特定符号 可以分析排除特定符号,如类型和方法。...例如,若要指定规则不应针对名为 MyType 的类型的任何代码运行,请将以下键值对添加到项目中的 .editorconfig 文件: dotnet_code_quality.CAXXXX.excluded_symbol_names...排除特定类型及其派生类型 可以分析排除特定类型及其派生类型。

    55000

    CA3004:查看信息泄露漏洞的代码

    若要了解如何在 EditorConfig 文件配置此限制,请参阅分析器配置。 如何解决冲突 不要将异常信息输出到 HTTP 响应。 相反,提供一个一般的错误信息。...配置代码进行分析 使用下面的选项来配置代码库的哪些部分要运行此规则。 排除特定符号 排除特定类型及其派生类型 你可以仅为此规则、为所有规则或为此类别(安全性)的所有规则配置这些选项。...有关详细信息,请参阅代码质量规则配置选项。 排除特定符号 可以分析排除特定符号,如类型和方法。...例如,若要指定规则不应针对名为 MyType 的类型的任何代码运行,请将以下键值对添加到项目中的 .editorconfig 文件: dotnet_code_quality.CAXXXX.excluded_symbol_names...排除特定类型及其派生类型 可以分析排除特定类型及其派生类型。

    64700

    CA3008:查看 XPath 注入漏洞的代码

    若要了解如何在 EditorConfig 文件配置此限制,请参阅分析器配置。 如何解决冲突 修复 XPath 注入漏洞的部分方法包括: 不要通过用户输入构造 XPath 查询。...配置代码进行分析 使用下面的选项来配置代码库的哪些部分要运行此规则。 排除特定符号 排除特定类型及其派生类型 你可以仅为此规则、为所有规则或为此类别(安全性)的所有规则配置这些选项。...有关详细信息,请参阅代码质量规则配置选项。 排除特定符号 可以分析排除特定符号,如类型和方法。...例如,若要指定规则不应针对名为 MyType 的类型的任何代码运行,请将以下键值对添加到项目中的 .editorconfig 文件: dotnet_code_quality.CAXXXX.excluded_symbol_names...排除特定类型及其派生类型 可以分析排除特定类型及其派生类型。

    77600

    Grid 布局算法!自己动手实现一个 Grid

    比如: 可以定义行和列 可以分别为每一和列指定宽高 宽高的值可选 Auto, * 和数值 Auto 表示 Grid 将按照元素的实际所需尺寸进行布局 * 表示行列在布局的比例,* 前面的数值表示比例值...分析 Grid 的布局思路 如果或列设置为 Auto,那么 Grid 的或者列将为这个元素的尺寸进行适配,并且元素的所需尺寸也会影响到 Grid 的最小所需尺寸;如果或列设置为 *,那么 Grid...: 测量过程 寻找所有行列范围包含 Auto 和 * 的元素,使用全部可用尺寸提前测量 排除所有固定尺寸的行列,然后总长中将其减掉 进行循环(排除全部 min 要求的,总长为负也要继续)...计算单位星长(单位星长 = 剩余总长 / 星数,最小为 0) 找出第一个不满足 min 要求的 *,置其长度为 min,排除此行列,然后总长中将其减掉 所有的 * 检查完毕后,退出循环...,设定为 Auto 的尺寸,排除此行列,然后总长中将其减掉 所有的 Auto 检查完毕后,退出循环 按照父级尺寸估算 * 的尺寸 如果还有剩余长度,则将 * 展开,但需要考虑 * 行列的最小尺寸

    1.7K20

    Spread for Windows Forms快速入门(11)---数据筛选

    列表中选择一项,这样筛选就会生效,并且(在本列)所有符合的就会被筛选出来。 默认的下拉列表包括所有在本列单元格的不重复的文本。 ? 下面的图表列出下拉列表的条目。...在给定的表单,多个列可能拥有筛选器。基于列的单元格内容,不同的列可以有不同的筛选器。 筛选的结果类似于根据主键和键进行数据排序。...在下列图表,基于给定的代码,筛选项目中的Gibson选项会将有筛选项的设置成一种外观样式,将其他的设置成另外一种外观样式。 ? 这里显示了如何使用代码启动筛选。...将这些单一的列的条件或筛选设置合并到一个集合。 如果你要定义即将被筛选的的外观,你可以通过定义一个选中样式和一个排除样式,或者直接隐藏被排除。...这里显示了如何使用代码进行行筛选 1. 进行列筛选的定义 2. 把这些定义组合成一个集合 3. 定义样式 4.

    2.7K100

    CA3003:查看文件路径注入漏洞的代码

    默认情况下,此规则会分析整个代码库,但这是可配置的。 规则说明 在处理来自 Web 请求的不受信任的输入时,请谨慎使用用户控制的输入指定文件路径。...若要了解如何在 EditorConfig 文件配置此限制,请参阅分析器配置。 如何解决冲突 尽可能将基于用户输入的文件路径限制在显式已知安全列表的范围内。...配置代码进行分析 使用下面的选项来配置代码库的哪些部分要运行此规则。 排除特定符号 排除特定类型及其派生类型 你可以仅为此规则、为所有规则或为此类别(安全性)的所有规则配置这些选项。...有关详细信息,请参阅代码质量规则配置选项。 排除特定符号 可以分析排除特定符号,如类型和方法。...排除特定类型及其派生类型 可以分析排除特定类型及其派生类型。

    1.1K00

    Explosion 开发笔记 (三)

    代码质量控制 经过一番考量,我暂时选用了 Codacy 作为我们的静态检查工具,因为是纯在线的工具,完全不需要集成,只需要按步骤启用 GitHub App 即可启用扫描,可以在 Codacy Dashboard...- Explosion 找到静态扫描结果: Codacy Dashboard 主干的代码提交以及 MR 会自动触发静态扫描,之后评级会自动刷新,然后同步到 README 的 Badge Codacy...Badge 至于代码风格、安全问题、圈复杂度、重复率的扫描要不要整合到 CI ,之后再考虑吧,现在来说已经够用了~ RHI 重构 最近投入 Explosion 的时间并不是很多,RHI 重构算是最近的主要进展了...脚本如何与 ECS 融合呢? 其实我早就说了,引擎本身按照 ECS 逻辑编写并不代表脚本也要套 ECS。...componentManager 取出所有的 Component 类型信息,生成一系列头文件和代码 // hello.generated.h struct Hello : public Comp {

    56210

    SonarQube系列-通过配置扫描分析范围,聚焦关键问题

    ❝在许多情况下,你可能不希望分析项目中每个源文件的各个方面。例如,项目可能包含生成的代码、库的源代码或有意复制的代码。...「完全忽略一些文件或目录」 「问题中排除文件或目录,但分析所有其它方面」 「从重复性中排除文件或目录,但分析所有其它方面」 「覆盖率中排除文件或目录,但分析其它所有方面」 你可以在全局或项目级别配置它们...:::warning 包含项和排除项不应是初始分析配置的一部分。建议仅设置它们解决问题。例如,当您注意到某个分析选取了您不想分析的文件时。...:「块的开始」: \s*//\s*START-NOSCAN「块结束:」** **\s*//\s*END-NOSCAN这些正则表达式可确保无论注释字符 ( ) 周围的空格数量如何,都可以识别起始块分隔符和结束块分隔符.../sonar.test.inclusions_ 设置「仅仅分析指定的文件」 针对具体的问题,「再通过排除重复,忽略错误,实现更细粒度的控制」 如下图所示,通过四种不同的方法可将分析范围缩小到与开发团队相关的源代码

    1.1K20

    CA3005:查看 LDAP 注入漏洞的代码

    若要了解如何在 EditorConfig 文件配置此限制,请参阅分析器配置。 如何解决冲突 对于用户控制的 LDAP 语句部分,请考虑: 仅允许使用包含非特殊字符的安全列表。...配置代码进行分析 使用下面的选项来配置代码库的哪些部分要运行此规则。 排除特定符号 排除特定类型及其派生类型 你可以仅为此规则、为所有规则或为此类别(安全性)的所有规则配置这些选项。...有关详细信息,请参阅代码质量规则配置选项。 排除特定符号 可以分析排除特定符号,如类型和方法。...例如,若要指定规则不应针对名为 MyType 的类型的任何代码运行,请将以下键值对添加到项目中的 .editorconfig 文件: dotnet_code_quality.CAXXXX.excluded_symbol_names...排除特定类型及其派生类型 可以分析排除特定类型及其派生类型。

    74800

    CA3002:查看 XSS 漏洞的代码

    若要了解如何在 EditorConfig 文件配置此限制,请参阅分析器配置。 如何解决冲突 不要输出原始 HTML,而是使用方法或属性先对输入执行 HTML 编码。...配置代码进行分析 使用下面的选项来配置代码库的哪些部分要运行此规则。 排除特定符号 排除特定类型及其派生类型 你可以仅为此规则、为所有规则或为此类别(安全性)的所有规则配置这些选项。...有关详细信息,请参阅代码质量规则配置选项。 排除特定符号 可以分析排除特定符号,如类型和方法。...例如,若要指定规则不应针对名为 MyType 的类型的任何代码运行,请将以下键值对添加到项目中的 .editorconfig 文件: dotnet_code_quality.CAXXXX.excluded_symbol_names...排除特定类型及其派生类型 可以分析排除特定类型及其派生类型。

    65500

    Python数据分析实战之数据获取三大招

    wb 二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 wb+ 二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。...如果不指定参数,则会尝试使用逗号分隔。分隔符长于一个字符并且不是‘\s+’,将使用python的语法分析器。并且忽略数据的逗号。...,第3数据将被丢弃,DataFrame的数据第5开始。)。..., skiprows=3 # 要注意的是:排除前3是skiprows=3 排除第3是skiprows=[3] ......文本读取数据 文件读取的数组 load 使用numpy的load方法可以读取numpy专用的二进制数据文件,npy, npz或pickled文件中加载数组或pickled对象 数据文件读取的数据

    6.5K30

    我敢打赌,看完这些Linux文本查找技巧,提高你80%工作效率!

    指定文件查找指定关键字 例如,要在linux_command_debug.md文件,查找test字符串: $ grep "test" aaa/bbb/linux_command_debug.md...查找不包含指定关键字的文件 前面提到了如何查找包含某个关键字的文件,如果要找的是不包含该关键字的文件呢?...可以用我们前面提到的-v参数: $ grep -rnv "int main(void)" (内容较多,未显示) 结果中就会发现,它会展示出包含指定关键字的文件,但是展示的是不包含该关键字的。...,这在日志搜索分析时非常有用。...我们可以把关键字写在一个文件,搜索时指定文件即可,例如规则文件为key.txt: int main(void) test 指定文件搜索上面的关键字: $ cat filename |grep -f

    1.9K10
    领券