我已经将性能测试创建为主模块的maven子模块。所有测试类都是在src / main / java下编写的,而不是src / test / java
我能够将项目打包为jar并将其运行到性能测试我的项目。
我想执行mvn test
。要使mvn test
生效,我应该设置<testSourceDirectory>
值。在这种情况下,我在src / main / java中有我的代码我将其设置为:
<testSourceDirectory>src/main/java</testSourceDirectory>
现在mvn test
有效。
但问题是声纳构建失败,错误抱怨:can't be indexed twice
。对于我的pom testSourceDirectory
和sourceDirectory
来说,这是显而易见的。
[ERROR] Failed to execute goal
org.codehaus.mojo:sonar-maven-plugin:2.5:sonar (default-cli)
on project Blah: File [relative=XYZ.java, abs=/Path/XYZ.java] can't be indexed twice.
Please check that inclusion/exclusion patterns produce
disjoint sets for main and test files ->
如何解决此问题?
答案 0 :(得分:11)
我遇到了同样的问题。最后,借助以下文档解决了这个问题: -
https://github.com/SonarOpenCommunity/sonar-cxx/wiki/FAQ
问:错误:引起:文件[...]无法编入索引两次。
答:如果出现以下错误,您必须验证您的排除/包含 属性。请检查包含/排除模式是否产生 源文件和测试文件的不相交集
错误:引起:文件[...]无法索引两次。请检查一下 包含/排除模式为主要和测试产生不相交的集合 文件示例如下所示:
sonar.sources=. sonar.tests=. sonar.test.inclusions=**/*Test*/** sonar.exclusions=**/*Test*/**
答案 1 :(得分:4)
这不是Maven的标准用法,但您可以使用排除项轻松修复SonarQube分析。 sonar.exclusions = SRC /主/ JAVA / ** 要么 sonar.test.exclusions = SRC /主/ JAVA / **
取决于您是否希望将源文件视为测试或主文件。
但是正确的Maven方式是将你的测试放在src / test / java中并激活你的测试: https://maven.apache.org/guides/mini/guide-attached-tests.html
答案 2 :(得分:0)
如果项目不遵循默认的Maven目录结构,则可以在项目的pom中显式指定源代码和测试部分的位置:
<properties>
<sonar.sources>src/main/foo</sonar.sources>
<sonar.tests>src/test/bar</sonar.tests>
</properties>
答案 3 :(得分:0)
在Android项目上运行import discord
from discord.ext import commands
client = discord.Client()
@client.event
async def on_ready():
print('We have logged in as {0.user}'.format(client))
messageIDs = [759721500579463219]
@client.event
async def on_raw_reaction_add(payload):
global messageIDs
for messageID in messageIDs:
if messageID == payload.message_id:
user = payload.member
role = "Test"
await user.add_roles(discord.utils.get(user.guild.roles, name = role))
@client.command()
async def addMessage(ctx, messageID):
global messageIDs
emoji = "?"
channel = ctx.message.channel
try:
msg = await channel.fetch_message(messageID)
except:
await ctx.send("Invalid Message ID!")
return
await msg.add_reaction(emoji)
messageIDs.append(messageID)
bot.run("Not gonna reveal this")
Gradle任务时,我看到此can't be indexed twice
错误。该问题与sonarqube
中存储的文件有关。
我尝试将app/src/debug/assets
和sonar.sources
属性设置为使用脱节集,但无法解决该错误。
要纠正我更改的错误:
sonar.tests
收件人:
property "sonar.coverage.exclusions", "**/assets/**, ..."
为了完全忽略/ assets /目录。