标签: code-analysis

VS2015:警告MSB3884:找不到规则集文件

将我的WinForms VS2013项目升级到VS2015后,我开始看到MSB3884"无法找到规则集文件"警告.

谷歌搜索出现了一篇MSDN文章,Stack Overflow文章指出了这篇文章以及许多其他网站.

类似的问题:33020507 MSDN:VS2015 MSB3884警告

我安装了VS2013和VS2015.

提供警告的项目文件(以及不提供警告的项目文件)没有这些条目.

<CodeAnalysisRuleSetDirectories>
<CodeAnalysisRuleDirectories> 
Run Code Online (Sandbox Code Playgroud)

如果我从项目文件中删除其他两个条目,那么问题就会消失,这很明显,因为没有规则文件集.

<CodeAnalysisIgnoreBuiltInRuleSets> 
<CodeAnalysisIgnoreBuiltInRules>
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用msbuild在外部构建,但VS2015也倾向于显示问题.

有趣的是,如果我点击项目属性代码分析器区域中的打开按钮,我确实得到了该文件.

指定不同的规则集没有区别.这让我觉得可能有一个环境变量设置,而不是任何想到的.代码分析器是项目文件的一个功能.我可以添加一个目录属性,但共识是取出路径,<CodeAnalysisRule*Directories>.

GUI使用默认值:

VS2015项目属性代码分析选项卡"

这是一个典型的项目文件片段.

  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
    <DebugSymbols>true</DebugSymbols>
    <OutputPath>bin\x86\Debug\</OutputPath>
    <DefineConstants>TRACE;DEBUG</DefineConstants>
    <DebugType>full</DebugType>
    <PlatformTarget>x86</PlatformTarget>
    <CodeAnalysisIgnoreBuiltInRuleSets>true</CodeAnalysisIgnoreBuiltInRuleSets>
    <CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>
    <Prefer32Bit>false</Prefer32Bit>
    <TreatWarningsAsErrors>true</TreatWarningsAsErrors>
    <CodeAnalysisRuleSet>BasicCorrectnessRules.ruleset</CodeAnalysisRuleSet>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x64'">
    <DebugSymbols>true</DebugSymbols>
    <OutputPath>bin\x64\Debug\</OutputPath>
    <DefineConstants>TRACE;DEBUG</DefineConstants>
    <DebugType>full</DebugType>
    <PlatformTarget>x64</PlatformTarget>
    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
    <CodeAnalysisIgnoreBuiltInRules>false</CodeAnalysisIgnoreBuiltInRules>
  </PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

如果不从项目文件中删除代码分析行,虽然再次保存项目文件只会将其添加回来,如何消除/修复警告?

c# msbuild code-analysis visual-studio-2015

64
推荐指数
8
解决办法
4万
查看次数

Lint for C#

C#有一个类似于lint的工具吗?我有编译器标记警告 - 作为错误,我有Stylecop,但这些只能捕获最令人震惊的错误.有没有其他必备工具(特别是像我这样的新手C#ers)指出我正在做的可能是愚蠢的事情?

.net c# code-analysis lint

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

用于确定所需的最低版本Python的工具?

是否有类似于Pylint的内容,它将查看Python脚本(或运行它),并确定每行(或函数)需要哪个版本的Python?

例如,理论用法:

$ magic_tool <EOF
with something:
    pass
EOF
1: 'with' statement requires Python 2.6 or greater

$ magic_tool <EOF
class Something:
    @classmethod
    def blah(cls):
        pass
EOF
2: classmethod requires Python 2.2 or greater
$ magic_tool <EOF
print """Test
"""
EOF
1: Triple-quote requires Python 1.5 of later
Run Code Online (Sandbox Code Playgroud)

这样的事情可能吗?我想最简单的方法是在光盘上安装所有Python版本,运行每个版本的脚本,看看发生了什么错误.

python code-analysis

48
推荐指数
3
解决办法
2951
查看次数

JavaScript源代码分析器

有谁知道一个检查JavaScript文件的好的,可扩展的源代码分析器?

javascript code-analysis

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

为什么代码质量不受欢迎?

我喜欢我的代码是有序的,即格式正确,可读,设计,测试,检查错误等.事实上我对它很狂热.(甚至可能比狂热更多...)但在我的经验中,帮助代码质量的行动很难实现.(通过代码质量,我的意思是您日常生成的代码的质量.软件质量与开发过程等的整个主题要广泛得多,而不是这个问题的范围.)

代码质量似乎并不受欢迎.我的经验中的一些例子包括

  • 可能每个Java开发人员都知道JUnit,几乎所有语言都实现了xUnit框架,但在我所知道的所有公司中,只有很少的正确单元测试存在(如果有的话).我知道由于技术限制或紧迫的截止日期,并不总是可以编写单元测试,但在我看到的情况下,单元测试可能是一种选择.如果开发人员想为他/她的新代码编写一些测试,他/她可以这样做.我的结论是开发人员不想编写测试.

  • 静态代码分析通常在小型项目中进行,但并不真正用于强制执行编码约定或在企业项目中发现可能的错误.通常甚至会忽略像潜在空指针访问这样的编译器警告.

  • 会议发言人和杂志会谈论很多关于EJB3.1,OSGI,云和其他新技术,但几乎没有关于新的测试技术或工具,新的静态代码分析方法(例如SAT解决方案),有助于保持更高质量的开发流程,如何遗留代码的一些讨厌的野兽被测试,...(我没有参加很多会议,它可能在敏捷主题的会议上看起来不同,因为单元测试和CI等具有更高的价值.)

那么为什么代码质量如此不受欢迎/被认为无聊呢?

编辑:
谢谢你的回答.其中大多数涉及单元测试(并已在相关问题中进行了讨论).但是还有很多其他的东西可以用来保持代码质量很高(参见相关问题).即使您无法使用单元测试,也可以使用每日构建,向IDE或开发过程添加一些静态代码分析,尝试配对编程或强制执行关键代码的审核.

unit-testing code-analysis

46
推荐指数
8
解决办法
6834
查看次数

检测重复代码的工具(Java)

我在一个项目中,以前的程序员一直在复制粘贴代码.这些代码实际上是相同的(或非常相似),它们可以重构为一个.

我花了无数个小时手动重构这些代码,但我认为必须有更好的方法.有些是非常简单的静态方法,可以被移动到祖先类中(但是被以前的初级程序员复制粘贴).

是否有代码分析工具可以检测到这一点并提供报告/建议?如果可能的话,我更喜欢免费/开源工具.

java refactoring code-analysis

46
推荐指数
3
解决办法
3万
查看次数

装配绑定重定向和代码分析

我在Visual Studio 2010中的Mvc 3.0.0.0项目中使用DotNetOpenAuth(引用System.Web.Mvc版本1.0.0.0).

我正在使用程序集绑定重定向,如下所示: -

<runtime>
  <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
    <dependentAssembly>
      <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
      <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
    </dependentAssembly>
  </assemblyBinding>
</runtime>
Run Code Online (Sandbox Code Playgroud)

一切正常,除了代码分析,它给我以下错误: -

CA0001:读取模块X时遇到以下错误:无法解析程序集引用:System.Web.Mvc,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35.

CA0058:找不到引用的程序集"System.Web.Mvc,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35".此程序集是分析所必需的,并引用:X.

有没有办法让代码分析工具尊重程序集绑定重定向?

code-analysis visual-studio-2010 assemblybinding visual-studio

44
推荐指数
2
解决办法
9313
查看次数

如何修复 Visual Studio 2022 警告 CA1416“所有平台均可访问调用站点”但“仅支持:'windows'”?

所以我有一个 C# 类库项目,我只打算在 Windows 上使用。它包含一些使用System.Drawing.Image仅在 Windows 上可用的类的类。升级到 Visual Studio 2022 并将目标框架设置为 .NET 6.0 后,我看到一堆警告:

\n
\n

CA1416 “此调用站点可在所有平台上访问。\'SomeClass.SomeMethod\' 仅在以下平台上受支持:\'windows\'。

\n
\n

请参阅下面的屏幕截图了解一些示例:

\n

Visual Studio 2022 中的“错误列表”窗格显示多个 CA1416“此调用站点在所有平台上均可访问。\'.\' 仅在:\'windows\' 上受支持。”  错误

\n

从某种意义上说,VS2022 扫描了库并找到了我在库中使用的所有平台特定代码,这很酷。但我想告诉 VS,我只打算在 Windows 上使用该库,它可以消除所有这些警告。

\n

首先,我检查了Target framework项目属性中的选项,但没有看到任何 Windows 特定目标。

\n

项目属性的应用程序 \xe2\x86\x92 常规页面上的“目标框架”下拉框已展开以显示 .NET、.NET Core 和 .NET Framework 的可用版本

\n

然后我决定直接编辑项目.csproj并更改Target framework

\n
<TargetFramework>net6.0</TargetFramework>\n
Run Code Online (Sandbox Code Playgroud)\n

\n
<TargetFramework>net6.0-windows</TargetFramework>\n
Run Code Online (Sandbox Code Playgroud)\n

但是,遗憾的是,即使在重新编译之后,警告也没有消失。然后我读了一些警告CA1416,果然Microsoft Docs中说,评估此警告时会忽略目标框架名称,但是,VS 确实根据影响此警告的 TFM 向项目添加了一个属性,但是仅当项目配置为AssemblyInfo.cs动态生成文件时,它才会这样做。但是,唉,我的项目是AssemblyInfo.cs作为实际文件维护的,而不是在构建时自动生成的。

\n

因此,此时,我已准备好踢球并禁用CA1416我的项目的警告。因此,在项目的.proj文件中,我添加了CA1416发布和调试版本,如下所示:

\n
<PropertyGroup Condition="\'$(Configuration)|$(Platform)\'==\'Debug|AnyCPU\'">\n    <NoWarn>1701;1702;CA1416;</NoWarn>\n</PropertyGroup>\n\n<PropertyGroup Condition="\'$(Configuration)|$(Platform)\'==\'Release|AnyCPU\'">\n    <NoWarn>1701;1702;CA1416;</NoWarn>\n</PropertyGroup>\n
Run Code Online (Sandbox Code Playgroud)\n …

c# code-analysis visual-studio microsoft.codeanalysis .net-6.0

43
推荐指数
3
解决办法
3万
查看次数

如何让FxCop自定义词典工作?

如何使FxCop自定义词典正常工作?

我尝试在文件'CustomDictionary.xml'中添加要识别的单词,该文件与FxCop项目文件保存在同一文件夹中.这似乎不起作用,因为即使重新加载并重新运行FxCop,我仍然会得到'标识符拼写正确'的FxCop消息.使用版本1.36.

dictionary code-analysis fxcop localization

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

如何确定最大堆栈使用量?

有哪些方法可用于确定嵌入式/内存受限系统的最佳堆栈大小?如果它太大那么浪费的内存可以在其他地方使用.但是,如果它太小,那么我们得到这个网站的同名......

为了尝试快速启动:Jack Ganssle在"嵌入式系统设计的艺术"中指出,"凭借经验,人们可以学习标准的,科学的方法来计算堆栈的正确尺寸:随机选择尺寸并希望." 任何人都可以做得更好吗?

要求提供更具体的例子.那么,在没有操作系统的情况下使用IAR Embedded Workbench工具链,针对具有2 kB RAM 的MSP430 MCU的C程序怎么样?使用JTAG调试器时,此IDE可以显示堆栈内容和使用情况.

memory embedded stack code-analysis

42
推荐指数
3
解决办法
3万
查看次数