зеркало из https://github.com/github/codeql.git
C#: Remove libraries and queries related to version history
The VCS relations are no longer populated, so there is no reason to keep them, and the queries/libraries that use the relations.
This commit is contained in:
Родитель
71c86fa69b
Коммит
9a24d3a69c
|
@ -1,25 +0,0 @@
|
|||
<!DOCTYPE qhelp PUBLIC
|
||||
"-//Semmle//qhelp//EN"
|
||||
"qhelp.dtd">
|
||||
<qhelp>
|
||||
<overview>
|
||||
<p>This metric measures the number of lines of text that have been added, deleted or modified in
|
||||
files below this location in the tree.</p>
|
||||
|
||||
<p>Code churn is known to be a good predictor of defects in a code component. The idea is that
|
||||
files, packages or projects that have experienced a disproportionately high amount of churn for the
|
||||
amount of code involved may have been harder to write, and are thus likely to contain more defects.
|
||||
</p>
|
||||
|
||||
</overview>
|
||||
<recommendation>
|
||||
<p>Although it is probably not possible to reduce the level of change for a component, components
|
||||
with a high churn should be subject to more rigorous testing and review.</p>
|
||||
|
||||
</recommendation>
|
||||
<references>
|
||||
|
||||
<li>N. Nagappan et al. <em>Change Bursts as Defect Predictors</em>. In Proceedings of the 21st IEEE International Symposium on Software Reliability Engineering, 2010.</li>
|
||||
|
||||
</references>
|
||||
</qhelp>
|
|
@ -1,21 +0,0 @@
|
|||
/**
|
||||
* @name Churned lines
|
||||
* @description Number of churned lines, across the revision history in the database.
|
||||
* @kind treemap
|
||||
* @treemap.warnOn highValues
|
||||
* @metricType file
|
||||
* @metricAggregate avg sum max
|
||||
* @id cs/vcs/churn-per-file
|
||||
*/
|
||||
|
||||
import csharp
|
||||
import external.VCS
|
||||
|
||||
from File f, int n
|
||||
where
|
||||
n = sum(Commit entry, int churn |
|
||||
churn = entry.getRecentChurnForFile(f) and not artificialChange(entry)
|
||||
|
|
||||
churn
|
||||
)
|
||||
select f, n order by n desc
|
|
@ -1,6 +0,0 @@
|
|||
<!DOCTYPE qhelp PUBLIC
|
||||
"-//Semmle//qhelp//EN"
|
||||
"qhelp.dtd">
|
||||
<qhelp>
|
||||
<include src="HChurn.qhelp" />
|
||||
</qhelp>
|
|
@ -1,21 +0,0 @@
|
|||
/**
|
||||
* @name Added lines
|
||||
* @description Number of added lines, across the revision history in the database.
|
||||
* @kind treemap
|
||||
* @treemap.warnOn highValues
|
||||
* @metricType file
|
||||
* @metricAggregate avg sum max
|
||||
* @id cs/vcs/added-lines-per-file
|
||||
*/
|
||||
|
||||
import csharp
|
||||
import external.VCS
|
||||
|
||||
from File f, int n
|
||||
where
|
||||
n = sum(Commit entry, int churn |
|
||||
churn = entry.getRecentAdditionsForFile(f) and not artificialChange(entry)
|
||||
|
|
||||
churn
|
||||
)
|
||||
select f, n order by n desc
|
|
@ -1,6 +0,0 @@
|
|||
<!DOCTYPE qhelp PUBLIC
|
||||
"-//Semmle//qhelp//EN"
|
||||
"qhelp.dtd">
|
||||
<qhelp>
|
||||
<include src="HChurn.qhelp" />
|
||||
</qhelp>
|
|
@ -1,21 +0,0 @@
|
|||
/**
|
||||
* @name Deleted lines
|
||||
* @description Number of deleted lines, across the revision history in the database.
|
||||
* @kind treemap
|
||||
* @treemap.warnOn highValues
|
||||
* @metricType file
|
||||
* @metricAggregate avg sum max
|
||||
* @id cs/vcs/deleted-lines-per-file
|
||||
*/
|
||||
|
||||
import csharp
|
||||
import external.VCS
|
||||
|
||||
from File f, int n
|
||||
where
|
||||
n = sum(Commit entry, int churn |
|
||||
churn = entry.getRecentDeletionsForFile(f) and not artificialChange(entry)
|
||||
|
|
||||
churn
|
||||
)
|
||||
select f, n order by n desc
|
|
@ -1,21 +0,0 @@
|
|||
<!DOCTYPE qhelp PUBLIC
|
||||
"-//Semmle//qhelp//EN"
|
||||
"qhelp.dtd">
|
||||
<qhelp>
|
||||
<overview>
|
||||
<p>This metric measures the number of different authors for files below this location in the tree.
|
||||
This information is extracted from the version control system used to manage the source code.</p>
|
||||
|
||||
<p>Files that have been changed by a large number of different authors are by definition the
|
||||
product of many minds. New authors working on a file may be less familiar with the design and
|
||||
implementation of the code than the original authors, which can be a potential source of defects.
|
||||
Furthermore, code that has been worked on by many people, if not carefully maintained, often ends
|
||||
up lacking conceptual integrity.</p>
|
||||
|
||||
</overview>
|
||||
<recommendation>
|
||||
<p>Files with a high value for this metric should be given special attention in a code review, and
|
||||
may ultimately be good candidates for refactoring/rewriting by an individual, experienced developer.
|
||||
</p>
|
||||
</recommendation>
|
||||
</qhelp>
|
|
@ -1,15 +0,0 @@
|
|||
/**
|
||||
* @name Number of authors (version control)
|
||||
* @description The number of distinct authors (by version control history) below this location in the tree
|
||||
* @kind treemap
|
||||
* @treemap.warnOn highValues
|
||||
* @metricType file
|
||||
* @metricAggregate avg min max
|
||||
* @id cs/vcs/authors-per-file
|
||||
*/
|
||||
|
||||
import csharp
|
||||
import external.VCS
|
||||
|
||||
from File f
|
||||
select f, count(Author author | author.getAnEditedFile() = f)
|
|
@ -1,16 +0,0 @@
|
|||
<!DOCTYPE qhelp PUBLIC
|
||||
"-//Semmle//qhelp//EN"
|
||||
"qhelp.dtd">
|
||||
<qhelp>
|
||||
<overview>
|
||||
<p>This metric measures the number of commits that have affected each file below this location in
|
||||
the tree.</p>
|
||||
|
||||
<p>Files that have been changed a large number of times may have had a large number of defects in
|
||||
the past and may have more in the future.</p>
|
||||
|
||||
</overview>
|
||||
<recommendation>
|
||||
<p>Files with a high value for this metric should be given special attention in a code review.</p>
|
||||
</recommendation>
|
||||
</qhelp>
|
|
@ -1,15 +0,0 @@
|
|||
/**
|
||||
* @name Number of file-level changes
|
||||
* @description The number of file-level changes made (by version control history).
|
||||
* @kind treemap
|
||||
* @treemap.warnOn highValues
|
||||
* @metricType file
|
||||
* @metricAggregate avg min max sum
|
||||
* @id cs/vcs/commits-per-file
|
||||
*/
|
||||
|
||||
import csharp
|
||||
import external.VCS
|
||||
|
||||
from File f
|
||||
select f, count(Commit svn | f = svn.getAnAffectedFile() and not artificialChange(svn))
|
|
@ -1,28 +0,0 @@
|
|||
<!DOCTYPE qhelp PUBLIC
|
||||
"-//Semmle//qhelp//EN"
|
||||
"qhelp.dtd">
|
||||
<qhelp>
|
||||
<overview>
|
||||
<p>This metric measures the average number of other files changed when a file itself is changed.
|
||||
Files that cause a lot of other files to be changed may be too tightly bound to those other files.
|
||||
</p>
|
||||
|
||||
<p>It is important to note that this metric is an average for all commits of a file. When picking
|
||||
aggregation method to examine a directory of files in the source tree, this still applies. This
|
||||
means that if you use the 'max' aggregation method on a directory you will be presented with the
|
||||
metric for the file with the highest average number of co-commits across the files entire commit
|
||||
history.</p>
|
||||
|
||||
</overview>
|
||||
<recommendation>
|
||||
<p>Files with a high value for this metric may have a widely used public API. Special care
|
||||
should therefore be taken when updating it to ensure any other parts of the program that use the
|
||||
API are also updated.</p>
|
||||
|
||||
<p>It is also possible that the file is too tightly coupled with other files. Examine the afferent
|
||||
and efferent coupling metrics as well and consider the advice given.</p>
|
||||
|
||||
<p>A final possibility is that committers could be using single commits to introduce several
|
||||
unrelated changes. If this is the case then commit practices should be reviewed.</p>
|
||||
</recommendation>
|
||||
</qhelp>
|
|
@ -1,17 +0,0 @@
|
|||
/**
|
||||
* @name Number of co-committed files
|
||||
* @description The average number of other files that are touched whenever a file is affected by a commit
|
||||
* @kind treemap
|
||||
* @treemap.warnOn highValues
|
||||
* @metricType file
|
||||
* @metricAggregate avg min max
|
||||
* @id cs/vcs/co-commits-per-file
|
||||
*/
|
||||
|
||||
import csharp
|
||||
import external.VCS
|
||||
|
||||
int committedFiles(Commit commit) { result = count(commit.getAnAffectedFile()) }
|
||||
|
||||
from File f
|
||||
select f, avg(Commit commit | commit.getAnAffectedFile() = f | committedFiles(commit) - 1)
|
|
@ -1,22 +0,0 @@
|
|||
<!DOCTYPE qhelp PUBLIC
|
||||
"-//Semmle//qhelp//EN"
|
||||
"qhelp.dtd">
|
||||
<qhelp>
|
||||
<overview>
|
||||
<p>This metric measures the number of times files were recommitted after being committed once. A
|
||||
change to a file is considered a recommit if it occurs within 5 days of a previous commit on the
|
||||
same file.</p>
|
||||
|
||||
<p>Provided changes are not being committed until they are considered complete then a high number
|
||||
of recommits might indicate that attempts to update some code proved difficult and had to be
|
||||
reattempted several times.</p>
|
||||
|
||||
</overview>
|
||||
<recommendation>
|
||||
<p>A high value for this metric often indicates files that required several commits to implement a
|
||||
change. These files would benefit from rigorous testing and review.</p>
|
||||
|
||||
<p>It is possible the recommits were several unrelated changes to a large and central source file.
|
||||
If this is the case then splitting the file up should be considered.</p>
|
||||
</recommendation>
|
||||
</qhelp>
|
|
@ -1,33 +0,0 @@
|
|||
/**
|
||||
* @name Number of file re-commits
|
||||
* @description A re-commit is taken to mean a commit to a file that was touched less than five days ago.
|
||||
* @kind treemap
|
||||
* @treemap.warnOn highValues
|
||||
* @metricType file
|
||||
* @metricAggregate avg min max
|
||||
* @id cs/vcs/recommits-per-file
|
||||
*/
|
||||
|
||||
import csharp
|
||||
import external.VCS
|
||||
|
||||
predicate inRange(Commit first, Commit second) {
|
||||
first.getAnAffectedFile() = second.getAnAffectedFile() and
|
||||
first != second and
|
||||
exists(int n |
|
||||
n = first.getDate().daysTo(second.getDate()) and
|
||||
n >= 0 and
|
||||
n < 5
|
||||
)
|
||||
}
|
||||
|
||||
int recommitsForFile(File f) {
|
||||
result = count(Commit recommit |
|
||||
f = recommit.getAnAffectedFile() and
|
||||
exists(Commit prev | inRange(prev, recommit))
|
||||
)
|
||||
}
|
||||
|
||||
from File f
|
||||
where f.getExtension() = "c"
|
||||
select f, recommitsForFile(f)
|
|
@ -1,16 +0,0 @@
|
|||
<!DOCTYPE qhelp PUBLIC
|
||||
"-//Semmle//qhelp//EN"
|
||||
"qhelp.dtd">
|
||||
<qhelp>
|
||||
<overview>
|
||||
<p>This metric measures the number of recent changes to files that have occurred below this
|
||||
location in the tree. A recent change is taken to mean a change that has occurred in the last 180
|
||||
days. All code that has changed a great deal may be more than usually prone to defects, but this is
|
||||
particularly true of code that has been changing dramatically in the recent past, because it has
|
||||
not yet had a chance to be properly field-tested.</p>
|
||||
|
||||
</overview>
|
||||
<recommendation>
|
||||
<p>Files with a high value for this metric should be given special attention in a code review.</p>
|
||||
</recommendation>
|
||||
</qhelp>
|
|
@ -1,19 +0,0 @@
|
|||
/**
|
||||
* @name Number of recent file changes
|
||||
* @description Number of recent commits to this file
|
||||
* @kind treemap
|
||||
* @treemap.warnOn highValues
|
||||
* @metricType file
|
||||
* @metricAggregate avg min max sum
|
||||
* @id cs/vcs/recent-commits-per-file
|
||||
*/
|
||||
|
||||
import csharp
|
||||
import external.VCS
|
||||
|
||||
from File f, int n
|
||||
where
|
||||
n = count(Commit e |
|
||||
e.getAnAffectedFile() = f and e.daysToNow() <= 180 and not artificialChange(e)
|
||||
)
|
||||
select f, n order by n desc
|
|
@ -1,78 +0,0 @@
|
|||
import csharp
|
||||
|
||||
class Commit extends @svnentry {
|
||||
Commit() {
|
||||
svnaffectedfiles(this, _, _) and
|
||||
exists(date svnDate, date snapshotDate |
|
||||
svnentries(this, _, _, svnDate, _) and
|
||||
snapshotDate(snapshotDate) and
|
||||
svnDate <= snapshotDate
|
||||
)
|
||||
}
|
||||
|
||||
string toString() { result = this.getRevisionName() }
|
||||
|
||||
string getRevisionName() { svnentries(this, result, _, _, _) }
|
||||
|
||||
string getAuthor() { svnentries(this, _, result, _, _) }
|
||||
|
||||
date getDate() { svnentries(this, _, _, result, _) }
|
||||
|
||||
int getChangeSize() { svnentries(this, _, _, _, result) }
|
||||
|
||||
string getMessage() { svnentrymsg(this, result) }
|
||||
|
||||
string getAnAffectedFilePath(string action) {
|
||||
exists(File rawFile | svnaffectedfiles(this, rawFile, action) |
|
||||
result = rawFile.getAbsolutePath()
|
||||
)
|
||||
}
|
||||
|
||||
string getAnAffectedFilePath() { result = getAnAffectedFilePath(_) }
|
||||
|
||||
File getAnAffectedFile(string action) { svnaffectedfiles(this, result, action) }
|
||||
|
||||
File getAnAffectedFile() { exists(string action | result = this.getAnAffectedFile(action)) }
|
||||
|
||||
predicate isRecent() { recentCommit(this) }
|
||||
|
||||
int daysToNow() {
|
||||
exists(date now | snapshotDate(now) | result = getDate().daysTo(now) and result >= 0)
|
||||
}
|
||||
|
||||
int getRecentAdditionsForFile(File f) { svnchurn(this, f, result, _) }
|
||||
|
||||
int getRecentDeletionsForFile(File f) { svnchurn(this, f, _, result) }
|
||||
|
||||
int getRecentChurnForFile(File f) {
|
||||
exists(int added, int deleted | svnchurn(this, f, added, deleted) and result = added + deleted)
|
||||
}
|
||||
}
|
||||
|
||||
class Author extends string {
|
||||
Author() { exists(Commit e | this = e.getAuthor()) }
|
||||
|
||||
Commit getACommit() { result.getAuthor() = this }
|
||||
|
||||
File getAnEditedFile() { result = this.getACommit().getAnAffectedFile() }
|
||||
}
|
||||
|
||||
predicate recentCommit(Commit e) {
|
||||
exists(date snapshotDate, date commitDate, int days |
|
||||
snapshotDate(snapshotDate) and
|
||||
e.getDate() = commitDate and
|
||||
days = commitDate.daysTo(snapshotDate) and
|
||||
days >= 0 and
|
||||
days <= 60
|
||||
)
|
||||
}
|
||||
|
||||
date firstChange(File f) {
|
||||
result = min(Commit e, date toMin | f = e.getAnAffectedFile() and toMin = e.getDate() | toMin)
|
||||
}
|
||||
|
||||
predicate firstCommit(Commit e) {
|
||||
not exists(File f | f = e.getAnAffectedFile() | firstChange(f) < e.getDate())
|
||||
}
|
||||
|
||||
predicate artificialChange(Commit e) { firstCommit(e) or e.getChangeSize() >= 50000 }
|
|
@ -1,17 +0,0 @@
|
|||
/**
|
||||
* @name Filter: only files recently edited
|
||||
* @description Filter a defect query to only include results in files that have been changed recently, and modify the message.
|
||||
* @deprecated
|
||||
*/
|
||||
|
||||
import csharp
|
||||
import external.DefectFilter
|
||||
import external.VCS
|
||||
|
||||
private predicate recent(File file) {
|
||||
exists(Commit e | file = e.getAnAffectedFile() | e.isRecent())
|
||||
}
|
||||
|
||||
from DefectResult res
|
||||
where recent(res.getFile())
|
||||
select res, "Recent: " + res.getMessage()
|
|
@ -1,34 +0,0 @@
|
|||
/**
|
||||
* @name Files edited in pairs
|
||||
* @description Files that are usually committed at the same time can be dangerous: it can indicate the files are too closely tied, and can create problems if someone forgets to edit the other file.
|
||||
* @kind problem
|
||||
* @problem.severity recommendation
|
||||
* @deprecated
|
||||
*/
|
||||
|
||||
import csharp
|
||||
import external.VCS
|
||||
|
||||
int numberOfCommitsWith(File a, File b) {
|
||||
result = count(Commit e | a = e.getAnAffectedFile() and b = e.getAnAffectedFile()) and
|
||||
a != b
|
||||
}
|
||||
|
||||
int totalCommits(File a) { result = count(Commit e | a = e.getAnAffectedFile()) }
|
||||
|
||||
int percentagePairedCommits(File f, File with) {
|
||||
exists(int paired, int total |
|
||||
paired = numberOfCommitsWith(f, with) and
|
||||
total = totalCommits(f) and
|
||||
result = (100 * paired) / total and
|
||||
result > 0
|
||||
)
|
||||
}
|
||||
|
||||
from File f, File other, int percent, int total
|
||||
where
|
||||
percent = percentagePairedCommits(f, other) and
|
||||
total = totalCommits(f) and
|
||||
percent >= 70 and
|
||||
total >= 4
|
||||
select f, "This file is usually edited together with " + other + " (" + percent + "% of commits)."
|
|
@ -1,20 +0,0 @@
|
|||
/**
|
||||
* @name Large files currently edited
|
||||
* @description Files with many lines of code that are actively being developed are candidates for refactoring.
|
||||
* @kind problem
|
||||
* @problem.severity warning
|
||||
* @deprecated
|
||||
*/
|
||||
|
||||
import csharp
|
||||
import external.VCS
|
||||
|
||||
from File f, int numRecent, int loc
|
||||
where
|
||||
numRecent = strictcount(Commit e | f = e.getAnAffectedFile() and e.isRecent()) and
|
||||
loc = f.getNumberOfLinesOfCode() and
|
||||
loc > 500 and
|
||||
numRecent > 0
|
||||
select f,
|
||||
"Large file (" + loc.toString() + " lines of code) actively being edited (" + numRecent.toString()
|
||||
+ " recent commits)."
|
|
@ -1,25 +0,0 @@
|
|||
/**
|
||||
* @name Poorly documented files with many authors
|
||||
* @description Files with many authors are more error-prone, so the documentation requirements are stricter for those files.
|
||||
* @kind problem
|
||||
* @problem.severity warning
|
||||
* @deprecated
|
||||
*/
|
||||
|
||||
import csharp
|
||||
import external.VCS
|
||||
|
||||
predicate fileCommentRatio(File f, float ratio) {
|
||||
ratio = 100.0 * (f.getNumberOfLinesOfComments().(float) / f.getNumberOfLinesOfCode().(float))
|
||||
}
|
||||
|
||||
from File f, int numAuthors, float docPercent
|
||||
where
|
||||
numAuthors = strictcount(Author a | f = a.getAnEditedFile()) and
|
||||
fileCommentRatio(f, docPercent) and
|
||||
docPercent < 20.0 and
|
||||
numAuthors >= 3 and
|
||||
f.getNumberOfLinesOfCode() > 150
|
||||
select f,
|
||||
"Poorly documented file (" + docPercent.floor().toString() + "% comments) with " +
|
||||
numAuthors.toString() + " authors."
|
|
@ -1,17 +0,0 @@
|
|||
/**
|
||||
* @name Number of authors
|
||||
* @description Number of distinct authors for each file
|
||||
* @treemap.warnOn highValues
|
||||
* @metricType file
|
||||
* @metricAggregate avg
|
||||
* @deprecated
|
||||
*/
|
||||
|
||||
import csharp
|
||||
import external.VCS
|
||||
|
||||
from File f, int n
|
||||
where
|
||||
n = count(Author author | author.getAnEditedFile() = f) and
|
||||
f.fromSource()
|
||||
select f, n order by n desc
|
|
@ -1,17 +0,0 @@
|
|||
/**
|
||||
* @name Number of commits
|
||||
* @description Number of commits for each file
|
||||
* @kind treemap
|
||||
* @treemap.warnOn highValues
|
||||
* @metricType file
|
||||
* @deprecated
|
||||
*/
|
||||
|
||||
import csharp
|
||||
import external.VCS
|
||||
|
||||
from File f, int n
|
||||
where
|
||||
n = count(Commit svn | f = svn.getAnAffectedFile()) and
|
||||
n > 1
|
||||
select f, n order by n desc
|
|
@ -1,17 +0,0 @@
|
|||
/**
|
||||
* @name Recent activity
|
||||
* @description Number of recent commits to this file
|
||||
* @kind treemap
|
||||
* @treemap.warnOn highValues
|
||||
* @metricType file
|
||||
* @deprecated
|
||||
*/
|
||||
|
||||
import csharp
|
||||
import external.VCS
|
||||
|
||||
from File f, int n
|
||||
where
|
||||
n = count(Commit e | e.getAnAffectedFile() = f and e.isRecent()) and
|
||||
n > 0
|
||||
select f, n order by n desc
|
|
@ -1,13 +0,0 @@
|
|||
/**
|
||||
* @name Defect filter
|
||||
* @description Only include results in large files (200) lines of code, and change the message.
|
||||
* @deprecated
|
||||
*/
|
||||
|
||||
import csharp
|
||||
import external.DefectFilter
|
||||
import external.VCS
|
||||
|
||||
from DefectResult res
|
||||
where res.getFile().getNumberOfLinesOfCode() > 200
|
||||
select res, "Large files: " + res.getMessage()
|
|
@ -1,19 +0,0 @@
|
|||
/**
|
||||
* @name Defect from SVN
|
||||
* @description A test case for creating a defect from SVN data.
|
||||
* @kind problem
|
||||
* @problem.severity warning
|
||||
* @deprecated
|
||||
*/
|
||||
|
||||
import csharp
|
||||
import external.ExternalArtifact
|
||||
import external.VCS
|
||||
|
||||
predicate numCommits(File f, int i) { i = count(Commit e | e.getAnAffectedFile() = f) }
|
||||
|
||||
predicate maxCommits(int i) { i = max(File f, int j | numCommits(f, j) | j) }
|
||||
|
||||
from File f, int i
|
||||
where numCommits(f, i) and maxCommits(i)
|
||||
select f, "This file has " + i + " commits."
|
|
@ -1,17 +0,0 @@
|
|||
/**
|
||||
* @name Metric from SVN
|
||||
* @description Find number of commits for a file
|
||||
* @treemap.warnOn lowValues
|
||||
* @metricType file
|
||||
* @kind treemap
|
||||
* @deprecated
|
||||
*/
|
||||
|
||||
import csharp
|
||||
import external.VCS
|
||||
|
||||
predicate numCommits(File f, int i) { i = count(Commit e | e.getAnAffectedFile() = f) }
|
||||
|
||||
from File f, int i
|
||||
where numCommits(f, i)
|
||||
select f, i
|
|
@ -1,18 +0,0 @@
|
|||
/**
|
||||
* @name Filter: only files recently edited
|
||||
* @description Filter a defect query to only include results in files that have been changed recently, and modify the message.
|
||||
* @kind problem
|
||||
* @id cs/recently-changed-file-filter
|
||||
*/
|
||||
|
||||
import csharp
|
||||
import external.DefectFilter
|
||||
import external.VCS
|
||||
|
||||
private predicate recent(File file) {
|
||||
exists(Commit e | file = e.getAnAffectedFile() | e.isRecent())
|
||||
}
|
||||
|
||||
from DefectResult res
|
||||
where recent(res.getFile())
|
||||
select res, res.getMessage()
|
|
@ -204,33 +204,6 @@ tokens(
|
|||
int endLine: int ref,
|
||||
int endColumn: int ref);
|
||||
|
||||
/*
|
||||
* Version history
|
||||
*/
|
||||
|
||||
svnentries(
|
||||
int id: @svnentry,
|
||||
varchar(500) revision: string ref,
|
||||
varchar(500) author: string ref,
|
||||
date revisionDate: date ref,
|
||||
int changeSize: int ref);
|
||||
|
||||
svnaffectedfiles(
|
||||
int id: @svnentry ref,
|
||||
int file: @file ref,
|
||||
varchar(500) action: string ref);
|
||||
|
||||
svnentrymsg(
|
||||
int id: @svnentry ref,
|
||||
varchar(500) message: string ref
|
||||
)
|
||||
|
||||
svnchurn(
|
||||
int commit: @svnentry ref,
|
||||
int file: @file ref,
|
||||
int addedLines: int ref,
|
||||
int deletedLines: int ref);
|
||||
|
||||
/*
|
||||
* C# dbscheme
|
||||
*/
|
||||
|
|
|
@ -32,10 +32,6 @@
|
|||
<v>124007</v>
|
||||
</e>
|
||||
<e>
|
||||
<k>@svnentry</k>
|
||||
<v>0</v>
|
||||
</e>
|
||||
<e>
|
||||
<k>@location_default</k>
|
||||
<v>7339237</v>
|
||||
</e>
|
||||
|
@ -8258,494 +8254,6 @@
|
|||
</dependencies>
|
||||
</relation>
|
||||
<relation>
|
||||
<name>svnentries</name>
|
||||
<cardinality>0</cardinality>
|
||||
<columnsizes>
|
||||
<e>
|
||||
<k>id</k>
|
||||
<v>0</v>
|
||||
</e>
|
||||
<e>
|
||||
<k>revision</k>
|
||||
<v>0</v>
|
||||
</e>
|
||||
<e>
|
||||
<k>author</k>
|
||||
<v>0</v>
|
||||
</e>
|
||||
<e>
|
||||
<k>revisionDate</k>
|
||||
<v>0</v>
|
||||
</e>
|
||||
<e>
|
||||
<k>changeSize</k>
|
||||
<v>0</v>
|
||||
</e>
|
||||
</columnsizes>
|
||||
<dependencies>
|
||||
<dep>
|
||||
<src>id</src>
|
||||
<trg>revision</trg>
|
||||
<val>
|
||||
<hist>
|
||||
<budget>12</budget>
|
||||
<bs/>
|
||||
</hist>
|
||||
</val>
|
||||
</dep>
|
||||
<dep>
|
||||
<src>id</src>
|
||||
<trg>author</trg>
|
||||
<val>
|
||||
<hist>
|
||||
<budget>12</budget>
|
||||
<bs/>
|
||||
</hist>
|
||||
</val>
|
||||
</dep>
|
||||
<dep>
|
||||
<src>id</src>
|
||||
<trg>revisionDate</trg>
|
||||
<val>
|
||||
<hist>
|
||||
<budget>12</budget>
|
||||
<bs/>
|
||||
</hist>
|
||||
</val>
|
||||
</dep>
|
||||
<dep>
|
||||
<src>id</src>
|
||||
<trg>changeSize</trg>
|
||||
<val>
|
||||
<hist>
|
||||
<budget>12</budget>
|
||||
<bs/>
|
||||
</hist>
|
||||
</val>
|
||||
</dep>
|
||||
<dep>
|
||||
<src>revision</src>
|
||||
<trg>id</trg>
|
||||
<val>
|
||||
<hist>
|
||||
<budget>12</budget>
|
||||
<bs/>
|
||||
</hist>
|
||||
</val>
|
||||
</dep>
|
||||
<dep>
|
||||
<src>revision</src>
|
||||
<trg>author</trg>
|
||||
<val>
|
||||
<hist>
|
||||
<budget>12</budget>
|
||||
<bs/>
|
||||
</hist>
|
||||
</val>
|
||||
</dep>
|
||||
<dep>
|
||||
<src>revision</src>
|
||||
<trg>revisionDate</trg>
|
||||
<val>
|
||||
<hist>
|
||||
<budget>12</budget>
|
||||
<bs/>
|
||||
</hist>
|
||||
</val>
|
||||
</dep>
|
||||
<dep>
|
||||
<src>revision</src>
|
||||
<trg>changeSize</trg>
|
||||
<val>
|
||||
<hist>
|
||||
<budget>12</budget>
|
||||
<bs/>
|
||||
</hist>
|
||||
</val>
|
||||
</dep>
|
||||
<dep>
|
||||
<src>author</src>
|
||||
<trg>id</trg>
|
||||
<val>
|
||||
<hist>
|
||||
<budget>12</budget>
|
||||
<bs/>
|
||||
</hist>
|
||||
</val>
|
||||
</dep>
|
||||
<dep>
|
||||
<src>author</src>
|
||||
<trg>revision</trg>
|
||||
<val>
|
||||
<hist>
|
||||
<budget>12</budget>
|
||||
<bs/>
|
||||
</hist>
|
||||
</val>
|
||||
</dep>
|
||||
<dep>
|
||||
<src>author</src>
|
||||
<trg>revisionDate</trg>
|
||||
<val>
|
||||
<hist>
|
||||
<budget>12</budget>
|
||||
<bs/>
|
||||
</hist>
|
||||
</val>
|
||||
</dep>
|
||||
<dep>
|
||||
<src>author</src>
|
||||
<trg>changeSize</trg>
|
||||
<val>
|
||||
<hist>
|
||||
<budget>12</budget>
|
||||
<bs/>
|
||||
</hist>
|
||||
</val>
|
||||
</dep>
|
||||
<dep>
|
||||
<src>revisionDate</src>
|
||||
<trg>id</trg>
|
||||
<val>
|
||||
<hist>
|
||||
<budget>12</budget>
|
||||
<bs/>
|
||||
</hist>
|
||||
</val>
|
||||
</dep>
|
||||
<dep>
|
||||
<src>revisionDate</src>
|
||||
<trg>revision</trg>
|
||||
<val>
|
||||
<hist>
|
||||
<budget>12</budget>
|
||||
<bs/>
|
||||
</hist>
|
||||
</val>
|
||||
</dep>
|
||||
<dep>
|
||||
<src>revisionDate</src>
|
||||
<trg>author</trg>
|
||||
<val>
|
||||
<hist>
|
||||
<budget>12</budget>
|
||||
<bs/>
|
||||
</hist>
|
||||
</val>
|
||||
</dep>
|
||||
<dep>
|
||||
<src>revisionDate</src>
|
||||
<trg>changeSize</trg>
|
||||
<val>
|
||||
<hist>
|
||||
<budget>12</budget>
|
||||
<bs/>
|
||||
</hist>
|
||||
</val>
|
||||
</dep>
|
||||
<dep>
|
||||
<src>changeSize</src>
|
||||
<trg>id</trg>
|
||||
<val>
|
||||
<hist>
|
||||
<budget>12</budget>
|
||||
<bs/>
|
||||
</hist>
|
||||
</val>
|
||||
</dep>
|
||||
<dep>
|
||||
<src>changeSize</src>
|
||||
<trg>revision</trg>
|
||||
<val>
|
||||
<hist>
|
||||
<budget>12</budget>
|
||||
<bs/>
|
||||
</hist>
|
||||
</val>
|
||||
</dep>
|
||||
<dep>
|
||||
<src>changeSize</src>
|
||||
<trg>author</trg>
|
||||
<val>
|
||||
<hist>
|
||||
<budget>12</budget>
|
||||
<bs/>
|
||||
</hist>
|
||||
</val>
|
||||
</dep>
|
||||
<dep>
|
||||
<src>changeSize</src>
|
||||
<trg>revisionDate</trg>
|
||||
<val>
|
||||
<hist>
|
||||
<budget>12</budget>
|
||||
<bs/>
|
||||
</hist>
|
||||
</val>
|
||||
</dep>
|
||||
</dependencies>
|
||||
</relation>
|
||||
<relation>
|
||||
<name>svnaffectedfiles</name>
|
||||
<cardinality>0</cardinality>
|
||||
<columnsizes>
|
||||
<e>
|
||||
<k>id</k>
|
||||
<v>0</v>
|
||||
</e>
|
||||
<e>
|
||||
<k>file</k>
|
||||
<v>0</v>
|
||||
</e>
|
||||
<e>
|
||||
<k>action</k>
|
||||
<v>0</v>
|
||||
</e>
|
||||
</columnsizes>
|
||||
<dependencies>
|
||||
<dep>
|
||||
<src>id</src>
|
||||
<trg>file</trg>
|
||||
<val>
|
||||
<hist>
|
||||
<budget>12</budget>
|
||||
<bs/>
|
||||
</hist>
|
||||
</val>
|
||||
</dep>
|
||||
<dep>
|
||||
<src>id</src>
|
||||
<trg>action</trg>
|
||||
<val>
|
||||
<hist>
|
||||
<budget>12</budget>
|
||||
<bs/>
|
||||
</hist>
|
||||
</val>
|
||||
</dep>
|
||||
<dep>
|
||||
<src>file</src>
|
||||
<trg>id</trg>
|
||||
<val>
|
||||
<hist>
|
||||
<budget>12</budget>
|
||||
<bs/>
|
||||
</hist>
|
||||
</val>
|
||||
</dep>
|
||||
<dep>
|
||||
<src>file</src>
|
||||
<trg>action</trg>
|
||||
<val>
|
||||
<hist>
|
||||
<budget>12</budget>
|
||||
<bs/>
|
||||
</hist>
|
||||
</val>
|
||||
</dep>
|
||||
<dep>
|
||||
<src>action</src>
|
||||
<trg>id</trg>
|
||||
<val>
|
||||
<hist>
|
||||
<budget>12</budget>
|
||||
<bs/>
|
||||
</hist>
|
||||
</val>
|
||||
</dep>
|
||||
<dep>
|
||||
<src>action</src>
|
||||
<trg>file</trg>
|
||||
<val>
|
||||
<hist>
|
||||
<budget>12</budget>
|
||||
<bs/>
|
||||
</hist>
|
||||
</val>
|
||||
</dep>
|
||||
</dependencies>
|
||||
</relation>
|
||||
<relation>
|
||||
<name>svnentrymsg</name>
|
||||
<cardinality>0</cardinality>
|
||||
<columnsizes>
|
||||
<e>
|
||||
<k>id</k>
|
||||
<v>0</v>
|
||||
</e>
|
||||
<e>
|
||||
<k>message</k>
|
||||
<v>0</v>
|
||||
</e>
|
||||
</columnsizes>
|
||||
<dependencies>
|
||||
<dep>
|
||||
<src>id</src>
|
||||
<trg>message</trg>
|
||||
<val>
|
||||
<hist>
|
||||
<budget>12</budget>
|
||||
<bs/>
|
||||
</hist>
|
||||
</val>
|
||||
</dep>
|
||||
<dep>
|
||||
<src>message</src>
|
||||
<trg>id</trg>
|
||||
<val>
|
||||
<hist>
|
||||
<budget>12</budget>
|
||||
<bs/>
|
||||
</hist>
|
||||
</val>
|
||||
</dep>
|
||||
</dependencies>
|
||||
</relation>
|
||||
<relation>
|
||||
<name>svnchurn</name>
|
||||
<cardinality>0</cardinality>
|
||||
<columnsizes>
|
||||
<e>
|
||||
<k>commit</k>
|
||||
<v>0</v>
|
||||
</e>
|
||||
<e>
|
||||
<k>file</k>
|
||||
<v>0</v>
|
||||
</e>
|
||||
<e>
|
||||
<k>addedLines</k>
|
||||
<v>0</v>
|
||||
</e>
|
||||
<e>
|
||||
<k>deletedLines</k>
|
||||
<v>0</v>
|
||||
</e>
|
||||
</columnsizes>
|
||||
<dependencies>
|
||||
<dep>
|
||||
<src>commit</src>
|
||||
<trg>file</trg>
|
||||
<val>
|
||||
<hist>
|
||||
<budget>12</budget>
|
||||
<bs/>
|
||||
</hist>
|
||||
</val>
|
||||
</dep>
|
||||
<dep>
|
||||
<src>commit</src>
|
||||
<trg>addedLines</trg>
|
||||
<val>
|
||||
<hist>
|
||||
<budget>12</budget>
|
||||
<bs/>
|
||||
</hist>
|
||||
</val>
|
||||
</dep>
|
||||
<dep>
|
||||
<src>commit</src>
|
||||
<trg>deletedLines</trg>
|
||||
<val>
|
||||
<hist>
|
||||
<budget>12</budget>
|
||||
<bs/>
|
||||
</hist>
|
||||
</val>
|
||||
</dep>
|
||||
<dep>
|
||||
<src>file</src>
|
||||
<trg>commit</trg>
|
||||
<val>
|
||||
<hist>
|
||||
<budget>12</budget>
|
||||
<bs/>
|
||||
</hist>
|
||||
</val>
|
||||
</dep>
|
||||
<dep>
|
||||
<src>file</src>
|
||||
<trg>addedLines</trg>
|
||||
<val>
|
||||
<hist>
|
||||
<budget>12</budget>
|
||||
<bs/>
|
||||
</hist>
|
||||
</val>
|
||||
</dep>
|
||||
<dep>
|
||||
<src>file</src>
|
||||
<trg>deletedLines</trg>
|
||||
<val>
|
||||
<hist>
|
||||
<budget>12</budget>
|
||||
<bs/>
|
||||
</hist>
|
||||
</val>
|
||||
</dep>
|
||||
<dep>
|
||||
<src>addedLines</src>
|
||||
<trg>commit</trg>
|
||||
<val>
|
||||
<hist>
|
||||
<budget>12</budget>
|
||||
<bs/>
|
||||
</hist>
|
||||
</val>
|
||||
</dep>
|
||||
<dep>
|
||||
<src>addedLines</src>
|
||||
<trg>file</trg>
|
||||
<val>
|
||||
<hist>
|
||||
<budget>12</budget>
|
||||
<bs/>
|
||||
</hist>
|
||||
</val>
|
||||
</dep>
|
||||
<dep>
|
||||
<src>addedLines</src>
|
||||
<trg>deletedLines</trg>
|
||||
<val>
|
||||
<hist>
|
||||
<budget>12</budget>
|
||||
<bs/>
|
||||
</hist>
|
||||
</val>
|
||||
</dep>
|
||||
<dep>
|
||||
<src>deletedLines</src>
|
||||
<trg>commit</trg>
|
||||
<val>
|
||||
<hist>
|
||||
<budget>12</budget>
|
||||
<bs/>
|
||||
</hist>
|
||||
</val>
|
||||
</dep>
|
||||
<dep>
|
||||
<src>deletedLines</src>
|
||||
<trg>file</trg>
|
||||
<val>
|
||||
<hist>
|
||||
<budget>12</budget>
|
||||
<bs/>
|
||||
</hist>
|
||||
</val>
|
||||
</dep>
|
||||
<dep>
|
||||
<src>deletedLines</src>
|
||||
<trg>addedLines</trg>
|
||||
<val>
|
||||
<hist>
|
||||
<budget>12</budget>
|
||||
<bs/>
|
||||
</hist>
|
||||
</val>
|
||||
</dep>
|
||||
</dependencies>
|
||||
</relation>
|
||||
<relation>
|
||||
<name>locations_default</name>
|
||||
<cardinality>7339237</cardinality>
|
||||
<columnsizes>
|
||||
|
|
Загрузка…
Ссылка в новой задаче